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/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

 

Performance like Abhishek mentioned, queries, server side vs client side, though also User Experience. The user's screen freezes, waiting for the response.

Though touching on performance: actually GlideAjax + getXML like often is mentioned isn't better as getReference + callback. Both retrieve the whole record.
You need to perform GlideAjax + getXMLAnswer which only retrieves the answer you defined.

Kind regards,
Mark

---

LinkedIn
Community article list

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Mark Roethof
Tera Patron
Tera Patron

The code Abhishek Gardade just posted for Script Include + Client Script should help you. Now only add what I mentioned about getXMLAnswer instead of applying getXML. getXMLAnswer is more efficient.
Read about it here:
getXMLAnswer vs getXML

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark

---

LinkedIn
Community article list

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

AbhishekGardade
Giga Sage

I can see you have created a duplicate thread for the same query. So can you please delete those threads?

https://community.servicenow.com/community?id=community_question&sys_id=262bcc84dbde405014d6fb243996...

https://community.servicenow.com/community?id=community_question&sys_id=dfcc4c8cdbde405014d6fb243996...

https://community.servicenow.com/community?id=community_question&sys_id=8c5c5273db868c102be0a851ca96...

You can delete these thread by clicking More Options

find_real_file.png

Thank You,

Abhishek Gardade

Thank you,
Abhishek Gardade

Thanks Abhishek.

Yes i have deleted duplicate threads. As when i was posting question each time it was showing me error that content is unavailable and due to that it get posted multiple time... 🙂