Urgent, Need to get a cost center value from user table

s_nandhini
Tera Contributor

Hi,

My requirement is need to auto populate manger detail when we select a name field.It should populate emailaddress,contact number, job title and cost center value.

But I am getting the cost center value as sys_id need to get the field value.My code

g_form.setValue('newusermanager_costcentre',managerName.cost_center);

1 ACCEPTED SOLUTION

Shishir Srivast
Mega Sage

You can not do dot walking upto 2nd level using getReference() function, in that case you need to have GlideAjax Call from your catalog client script, something like this should help you.



Client Script:


function onChange(control, oldValue, newValue, isLoading, isTemplate) {


if (isLoading || newValue === '') {


return;


}


var sys_id = g_form.getValue('manager_field_name');


var userDetails = new GlideAjax("DisplayUserDetails");


userDetails.addParam("sysparm_name", "getUserDetails");


userDetails.addParam("sysparm_sys_id", sys_id);


userDetails.getXML(ajaxResponse);


function ajaxResponse(serverResponse) {


var answer = serverResponse.responseXML.documentElement.getAttribute("answer");


g_form.setValue('newusermanager_costcentre', answer);


}


}



Client Callable Script Include:


var DisplayUserDetails = Class.create();


DisplayUserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getUserDetails : function() {


var newUserRecord = new GlideRecord('sys_user');


if(newUserRecord.get(this.getParameter('sysparm_sys_id'))){


return newUserRecord.getDisplayValue('cost_center');


}


},


type: 'DisplayUserDetails'


});


View solution in original post

2 REPLIES 2

Harish KM
Kilo Patron
Kilo Patron

You need to use getReference() method . Since you have multiple values to fetch.


You can use GlideAjax and call the script include in the client script


Regards
Harish

Shishir Srivast
Mega Sage

You can not do dot walking upto 2nd level using getReference() function, in that case you need to have GlideAjax Call from your catalog client script, something like this should help you.



Client Script:


function onChange(control, oldValue, newValue, isLoading, isTemplate) {


if (isLoading || newValue === '') {


return;


}


var sys_id = g_form.getValue('manager_field_name');


var userDetails = new GlideAjax("DisplayUserDetails");


userDetails.addParam("sysparm_name", "getUserDetails");


userDetails.addParam("sysparm_sys_id", sys_id);


userDetails.getXML(ajaxResponse);


function ajaxResponse(serverResponse) {


var answer = serverResponse.responseXML.documentElement.getAttribute("answer");


g_form.setValue('newusermanager_costcentre', answer);


}


}



Client Callable Script Include:


var DisplayUserDetails = Class.create();


DisplayUserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getUserDetails : function() {


var newUserRecord = new GlideRecord('sys_user');


if(newUserRecord.get(this.getParameter('sysparm_sys_id'))){


return newUserRecord.getDisplayValue('cost_center');


}


},


type: 'DisplayUserDetails'


});