- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2022 11:14 PM
Please help me with the script includes and onchange client script to Populate requested for details while raising a request through catalog item.
Below are the variables from catalog item: need to auto populate using user table.
requested for--> reference field (user table)
'employee id --> reference field (auto populate based on requested for user)
manager name------>reference field (auto populate based on requested for user)
title------->reference field (auto populate based on requested for user)
cost center---------->reference field (auto populate based on requested for user)
application-------->reference field (auto populate based on requested for user)
plz correct if any wrong in my code:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('CheckRecords');
ga.addParam('sysparm_name', "checkRecordPresent");
ga.addParam('sysparm_userID', g_form.getValue('requested_for'));
ga.getXMLAnswer(function(answer){
if(answer != 'not found'){
var parser = JSON.parse(answer);
g_form.setValue('email', parser.email);
g_form.setValue('employee_id', parser.employee);
g_form.setValue('manager_name', parser.manager);
g_form.setValue('title', parser.title);
g_form.setValue('cost_center', parser.costcenter);
g_form.setValue('application', parser.application);
}
});
SCRIPT INCLUDE CODE:
var CheckRecords = Class.create();
CheckRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkRecordPresent: function(){
var obj = {};
var id = this.getParameter('sysparm_userID');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', id);
gr.query();
if(gr.next()){
obj['email'] = gr.getValue('email');
obj['employee_id'] = gr.getValue('employee');
obj['manager_name'] = gr.getValue('manager');
obj['title'] = gr.getValue('title');
obj['cost_center'] = gr.getValue('costcenter');
obj['application'] =gr.getValue('application');
}
return JSON.stringify(obj);
},
type: 'CheckRecords'
});
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2022 11:50 PM
Hi, since you are using a Catalog Item, you can do this via an onChange Catalog Client script as below
onChange Catalog Client Script
Variable = Requested for
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('CheckRecords');
ga.addParam('sysparm_name', 'checkRecordPresent');
ga.addParam('sysparm_userID, newValue);
ga.getXML(updateValues);
function updateValues(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
var parsedAnswer = JSON.parse(answer);
g_form.setValue('email', parsedAnswer.email);
g_form.setValue('employee_id', parsedAnswer.employee);
g_form.setValue('manager_name', parsedAnswer.manager);
g_form.setValue('title', parsedAnswer.title);
g_form.setValue('cost_center', parsedAnswer.costcenter);
g_form.setValue('application', parsedAnswer.application);
}
}
Script Include
var CheckRecords = Class.create();
CheckRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkRecordPresent: function(){
var obj = {
'email': '',
'employee_id': '',
'manager_name': '',
'title': '',
'cost_center': '',
'application': ''
};
var id = this.getParameter('sysparm_userID');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', id);
gr.setLimit(1);
gr.query();
if(gr.next()){
obj['email'] = gr.email;
obj['employee_id'] = gr.employee_number;
obj['manager_name'] = gr.manager;
obj['title'] = gr.title;
obj['cost_center'] = gr.cost_center;
obj['application'] = gr.application;
}
return JSON.stringify(obj);
},
type: 'CheckRecords'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2022 11:25 PM
Your glideajax code is incorrect.
Check the below code:
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name', 'helloWorld');
ga.addParam('sysparm_user_name', "Bob");
ga.getXML(HelloWorldParse);
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); }
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2022 11:32 PM
hi kumar plz correct ware it goes wrong:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('CheckRecords');
ga.addParam('sysparm_name', "checkRecordPresent");
ga.addParam('sysparm_userID', g_form.getValue('requested_for'));
ga.getXMLAnswer(function(answer){
if(answer != 'not found'){
var parser = JSON.parse(answer);
g_form.setValue('email', parser.email);
g_form.setValue('employee_id', parser.employee);
g_form.setValue('manager_name', parser.manager);
g_form.setValue('title', parser.title);
g_form.setValue('cost_center', parser.costcenter);
g_form.setValue('application', parser.application);
}
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2022 11:45 PM
Hi,
Changes
1) field name on user table is cost_center and not costcenter
2) field name on user table is employee_number and not employee
3) Also OOB there is no application field on user table. so is it a custom field then u_application
Here is the updated script
I assume your manager variable is reference type and not string
If it's string then use this
obj['manager_name'] = gr.getDisplayValue('manager');
var CheckRecords = Class.create();
CheckRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkRecordPresent: function(){
var obj = {};
var id = this.getParameter('sysparm_userID');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', id);
gr.query();
if(gr.next()){
obj['email'] = gr.getValue('email');
obj['employee_id'] = gr.getValue('employee_number');
obj['manager_name'] = gr.getValue('manager');
obj['title'] = gr.getValue('title');
obj['cost_center'] = gr.getValue('cost_center');
obj['application'] =gr.getValue('u_application');
}
return JSON.stringify(obj);
},
type: 'CheckRecords'
});
Client Script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
if(oldValue != newValue){
var ga = new GlideAjax('CheckRecords');
ga.addParam('sysparm_name', "checkRecordPresent");
ga.addParam('sysparm_userID', g_form.getValue('requested_for'));
ga.getXMLAnswer(function(answer){
var parser = JSON.parse(answer);
g_form.setValue('email', parser.email);
g_form.setValue('employee_id', parser.employee);
g_form.setValue('manager_name', parser.manager);
g_form.setValue('title', parser.title);
g_form.setValue('cost_center', parser.costcenter);
g_form.setValue('application', parser.application);
});
}
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-25-2022 12:46 AM
Hi ankur,
when i use type is string field then its working, if i take type is reference its not working, below are the fields:
email ---> reference.
manager---->reference.
title ------->reference.
empoyee id---> reference.