- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-31-2019 06:33 AM
Hi,
Please find below screenshots of my catalog item. Requested for is a reference field to table sys_user. When I select a user's name in requested for, the user's values on the fields on right side should be automatically populated from sys_user table.
For eg - abel tuter is selected so first name, last name etc should be populated from sys_user table. The values which are not present should remain empty.
Please help me on how to do this with the code as I am new to ServiceNow and not very good at scripting..
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-31-2019 06:44 AM
Hi
You need to create a onChange client script and client callable script include for this purpose. See below :-
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var id = g_form.getValue('u_reference_1');//newValue
var ga = new GlideAjax('GetUserDetailsAjax');
ga.addParam('sysparm_name','getInfo');
ga.addParam('sysparm_user_id',id);
ga.getXML(CallBack);
function CallBack(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
var user=JSON.parse(answer);
//g_form.setValue('req_email', user.email);
//g_form.setValue('req_phone', user.phone);
//g_form.setValue('address1', user.street);
alert(user.location);
//g_form.setValue('city_state_zip', user.location);
}
}
Client Callable Script Include :-
var GetUserDetailsAjax = Class.create();
GetUserDetailsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getInfo: function(){
var obj={};
obj.location='';
obj.email='';
obj.phone='';
obj.street='';
var id=this.getParameter('sysparm_user_id');
var gr= new GlideRecord('sys_user');
if(gr.get(id)){
if(gr.location!='')
obj.location=gr.location.city.toString();
obj.zip=gr.zip.toString();
obj.street=gr.street.toString();
obj.phone=gr.phone.toString();
obj.email=gr.email.toString();
//here you will get all the required fields from sys_user that you want to show on your form.
}
return JSON.stringify(obj);
},
type: 'GetUserDetailsAjax'
});
Let me know.
Regards,
Omkar Mone.
www.dxsherpa.com
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-05-2019 11:22 AM
Any idea? Shweta and Omkar?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-05-2019 11:38 AM
The issue is those User records do not have a Location specified. This part of your script:
if(gr.location!='')
obj.first_name = gr.first_name.toString();
...is equivalent to:
if(gr.location!='') {
obj.first_name = gr.first_name.toString();
}
Whenever braces are not used along with an if statement, the first line after the if will execute only if the condition is true.
So if the record does not have a Location specified, the first_name is not populated. Do you need that condition?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-06-2019 11:57 PM
Hi, Jim, thank you so much for replying.
I do not need the location condition,so I removed it and its working now and displaying all first names.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-07-2019 06:02 AM
Good, thanks for the update.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-31-2019 06:50 AM
Simple onChange client script that will work in the Service Portal and regular Service catalog. Note this only has a few of the files and since your manager filed is not a reference you will need to do a ref.manager.getDisplayValue()
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//Type appropriate comment here, and begin script below
g_form.getReference('reqused_form', function(ref){
g_form.setValue('firt_name', ref.first_name);
g_form.setValue('last_name', ref.last_name);
g_form.setValue('email_address, ref.email);
});
}