- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2017 02:49 AM
I have custom department string field.(This is code is working fine for department as reference field but not for string field)I am having an issue populate department based on Caller selection
Below script returning department sys_id instead of this, i want to populate department Name
Client Script details:
Type: onChange
Table: Incident
Field Name: Caller
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var caller = g_form.getReference('caller_id');
g_form.setValue('u_custom_department',caller.department);
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2017 11:47 PM
Hi Rahul,
You have to write down script that return department name.Using GlideAjax you have to call it .On change of Caller you have write down the script .
Script Include:
var getDepartmentName = Class.create();
getDepartmentName.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getDept :function()
{
var name='';
var id = this.getParameter('sysparm_id');
var dep=new GlideRecord('cmn_department');
dep.addQuery('sys_id', id);
dep.query();
if(dep.next())
{
name=dep.name;
}
return name;
},
type: 'getDepartmentName'
});
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var caller = g_form.getReference('caller_id');
g_form.setValue('u_department',caller.department);
var graj=new GlideAjax('getDepartmentName');
graj.addParam('sysparm_name', 'getDept');
graj.addParam('sysparm_id', caller.department);
graj.getXML(HelloWorldParse);
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('u_custom_department', answer);
}
}
Please like, mark as correct/helpful if it is right.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2017 02:53 AM
You need to use call back
function onChange(control, oldValue, newValue, isLoading) {
var caller = g_form.getReference('caller_id', doAlert);
}
function doAlert(caller ) {
g_form.setValue(''u_custom_department',caller .department);
}
Harish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2017 03:01 AM
Hi Rahul,
Please use the script as below:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var caller = g_form.getReference('caller_id', getDepartment);
}
function getDepartment(caller ) {
var dept = caller.department.toString();
g_form.setValue('u_custom_department',dept);
}
I hope this helps.Please mark correct/helpful based on impact
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2017 03:07 AM
Thanks for your reply,
I tried both codes but it's not working its returning department sys_id

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2017 03:13 AM
Hey Rahul,
Replace this -
var dept = caller.department.toString();
with
var dept = caller.department.getDisplayValue();