Set Manager name based on selected user

jesusnava
Giga Expert

Hello everyone,

Please I need your help, I have 2 fields one called "Requested for (requested_for) and another one named "Manager Name (manager_name)", The idea is that when the selected user changes, the manager changes as well, 

this is the script OnChange I am using but seems that something is not working: 

**************************************************************************

function onChange(control, oldValue, newValue, isLoading) {
if ((isLoading && !g_form.isNewRecord()) || (g_form.isLiveUpdating && g_form.isLiveUpdating()))
return;

if (newValue == '' || newValue == null) {
g_form.setValue('manager_name', '');
return;
}
if (!g_form.hasField('manager_name'))
return;
var requested_for = g_form.getReference('requested_for', setManagerName);
}

function setManagerName(requested_for) {
if (requested_for)
g_form.setValue('manager_name', requested_for.manager_name);
}

***************************************************************

Thank you!

1 ACCEPTED SOLUTION

Alexey7
Mega Sage

Hi,

You need a client-callable script include: 

var GetManagerName = Class.create();
GetManagerName.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getManagerName: function(){
var userRecord = new GlideRecord('sys_user');
userRecord.get(this.getParameter('sysparm_userID'));
return userRecord.manager.getDisplayValue();
},
type: 'GetManagerName'
});

 

And onChange client script for "requested_for" field:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading && !g_form.isNewRecord() || newValue == '' || newValue == oldValue) {
return;
}
var getManagerName = new GlideAjax('GetManagerName');
getManagerName.addParam('sysparm_name', 'getManagerName');
getManagerName.addParam('sysparm_userID', g_form.getValue('requested_for'));
getManagerName.getXML(populateManagerName);

function populateManagerName(response){
var nameFromScriptInclude = response.responseXML.documentElement.getAttribute('answer');
g_form.clearValue('manager_name');
g_form.setValue('manager_name',nameFromScriptInclude);
}
}

That should be it. Let us know if it works for you. Thank you.

View solution in original post

23 REPLIES 23

Hi,

reqFor.manager is returning sys_id of manager.

jesusnava
Giga Expert

Thank you both for your support!

Hi, If your question was answered correctly Mark it correct and close the thread so others can easily find the solution from your thread and it will be removed from the unsolved questions. Thanks Regards Ravindra

Hey Jesusnava,

 

I am Glad to help you.!!

 

I hope your query is been resolved, please close this thread by clicking on Accepted solution, then only this will be helpful for other community users.

 

Thanks in advance.!!

 

Let me know if you need more help.

 

Thanks,

Rajashekhar Mushke

Community Leader



Thanks,
Rajashekhar Mushke
Rising star : 2022 - 2024
Community Leader -2018
Connect me on LinkedIn : Rajashekhar Mushke

Alexey7
Mega Sage

Hi,

You need a client-callable script include: 

var GetManagerName = Class.create();
GetManagerName.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getManagerName: function(){
var userRecord = new GlideRecord('sys_user');
userRecord.get(this.getParameter('sysparm_userID'));
return userRecord.manager.getDisplayValue();
},
type: 'GetManagerName'
});

 

And onChange client script for "requested_for" field:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading && !g_form.isNewRecord() || newValue == '' || newValue == oldValue) {
return;
}
var getManagerName = new GlideAjax('GetManagerName');
getManagerName.addParam('sysparm_name', 'getManagerName');
getManagerName.addParam('sysparm_userID', g_form.getValue('requested_for'));
getManagerName.getXML(populateManagerName);

function populateManagerName(response){
var nameFromScriptInclude = response.responseXML.documentElement.getAttribute('answer');
g_form.clearValue('manager_name');
g_form.setValue('manager_name',nameFromScriptInclude);
}
}

That should be it. Let us know if it works for you. Thank you.