- 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-25-2022 02:30 AM
hi ankur ,
manager name and employee id is not displaying. and thats not working in my portal.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-25-2022 02:59 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-27-2022 09:34 PM
Hi,
did you ensure UI type - ALL for your client script?
I hope manager is reference and employee id is string type
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-28-2022 05:27 AM
@surya
Did you mistakenly marked other response as correct?
The "Marked as Correct" answer is same as what I mentioned.
You also mentioned the script I shared worked fine 4 days ago
Please mark appropriate response as correct.
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-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'
});