Auto Populate requested for a catalog item in service-now..

surya65
Tera Contributor

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'

});

                                              

                                                

 

1 ACCEPTED SOLUTION

Haris5
Giga Contributor

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'

});

View solution in original post

14 REPLIES 14

Hi,

do this

email ---> string.

manager---->reference.

title ------->string.

empoyee id---> string.

regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi ankure,

can we get this auto populate by using reference only.

 

Hi,

how can email, title, employee id be reference when they hold string on user table?

It doesn't make any sense

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi ankur,

sorry for that,

its working good when i change but  employee id  field auto filling with  undefiend.

how to get employee id in the field instead of undefine.

Hi,

Glad to know that my script worked.

It should work for employee number as well if it is not empty for that user

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader