Get Caller's manager name

Priya155
Giga Expert

Hi all,

My requirement is :on change of caller ,Caller's manager name should get populate  in short description.for this i have written client script On Change of caller with below code:

var man = g_form.getReference('caller_id', setmanager);

function setmanager(man) {

if (man)

alert('manager is '+ man.manager);

g_form.setValue('short_description', man.manager);}

and this is returning sys_id and if i have written below code then its returning no value :

var man = g_form.getReference('caller_id', setmanager);

 function setmanager(man) {

if (man)

alert('manager is '+ man.Manager.name);

g_form.setValue('short_description', man.Manager.name);}

 

Please guide, Thanks in advance.

Thanks,

Priya

1 ACCEPTED SOLUTION

AbhishekGardade
Giga Sage

Hello Priya,

Dot walking will not work in client script. In order to get manager's name you need to call a script include from client script as below.

1. Create a Client script as below:

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

var callerID = g_form.getValue('caller_id');
var si =new GlideAjax('getCallerID');
si.addParam('sysparm_name','getUserInfo');
si.addParam('sysparm_caller_id',callerID);
si.getXML(getManager);

function getManager(response){

var manager = response.responseXML.documentElement.getAttribute('answer');
alert("Manager Name: "+manager);

}
}

2. Script Include Code:

Create a script include as below:

Name: getCallerID 

Client callable: TRUE (Checked)

var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getUserInfo: function() {

var userID = this.getParameter('sysparm_caller_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id',userID);
gr.query();
if(gr.next()){

var manager = gr.getDisplayValue('manager');
return manager;
}
},

type: 'getCallerID'
});

Please mark as Correct Answer and Helpful, if applicable.
Thank You!
Abhishek Gardade

 

Thank you,
Abhishek Gardade

View solution in original post

14 REPLIES 14

Hi Abhishek,

Please explain me why we were not able to achieve that using glide record?

As i was able to set Email ID of caller using same code.

Thanks,

Priya

Reason: Minimize Server Lookups

Client scripting uses either data available on the client or data retrieved from the server. Use client data as much as possible to eliminate the need for time-consuming server lookups. The top ways to get information from the server are g_scratchpad, and asynchronous GlideAjax lookup.

The primary difference between these methods is that g_scratchpad is sent once when a form is loaded (information is pushed from the server to the client), whereas GlideAjax is dynamically triggered when the client requests information from the server.

Other methods, GlideRecord and g_form.getReference() are also available for retrieving server information. However, these methods are no longer recommended due to their performance impact. Both methods retrieve all fields in the requested GlideRecord when most cases only require one field.

Thanks,

Abhishek Gardade

Thank you,
Abhishek Gardade

Thanks a lot abhishek for explaining in detail.

I have one more query using same code i was able to retrieve Caller's Email ID but not manager name...what is the reason behind it?

can you please explain.

Thanks,

Priya

 

getReference and client side GlideRecords make a call to the server and retrieve the whole record requested and return it to the client. Once that's done you have access to any value on that record but you're not in the database anymore, you can't dot-walk through to referenced values, like manager.name.

Hi Abhishek/all,

 

In Service catalog based on Requester field (Variable Name : requester_demo) , Requester's manager name should get populate in Manager field (Variable Name : manager_demo).

 

Implemented it using Glide Ajax (Catalog client script) and script include as below…but I think script include code is not fired and always getting manager name as null

 

Catalog Client script:

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

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

      return;

   }

  

var requester= g_form.getValue('requester_demo');

var ga=new GlideAjax('getRequesterManager');

ga.addParam('sysparm_name','getrequester_manager');

ga.addParam('sysparm_requester_demo',requester);

ga.getXML(getManager);

 

function getManager(response){

var manager = response.responseXML.documentElement.getAttribute('answer');

alert("Manager Name: "+manager);

}

 

 

Script Include: (Name : getRequesterManager)

 

var getRequesterManager = Class.create();

getRequesterManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getrequester_manager :function() {

 

var managername = this.getParameter('sysparm_requester_demo');

var gr = new GlideRecord('sys_user');

gr.addQuery('sys_id',managername);

gr.query();

 

if(gr.next()){

var manager = gr.getDisplayValue('manager');

return manager;

}

},

 

    type: 'getRequesterManager'

});

 

 

 

Please guide.

 

Thanks,

Priya