- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 08:03 AM
Hello Developers,
I am trying to call a script include from an onchange client script and populate a u_Field. The script include returns a group. The client script needs to supply the cmdb_ci and the group type.
I've been attempting to use something similar to: https://community.servicenow.com/community?id=community_question&sys_id=a77707a1dbc023c09d612926ca961925&view_source=searchResult
with little luck.
Here is the script include:
var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
var output;
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
if(gr.next()) {
output += gr.sys_id+"\n";
}
return output ;
},
type: 'Group_and_CI'
});
Can someone help me with the Change client script?
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2019 12:00 PM
David, this is what works now:
Script Include:
var Group_and_CI_1 = Class.create();
Group_and_CI_1.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
var output;
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
gs.log('TESTING: grp is = ' + grp); //Added by Will
gs.log('TESTING: cmdb is = ' + cmdb); //Added by Will
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group.type', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
gs.log('TESTING: Result before IF is = ' + gr.output); //Added by Will
gs.log('TESTING Row Count is '+ gr.getRowCount()); //Added by Will
if(gr.next()) {
//output = gr.sys_id +" \n";
output = gr.u_group +" \n";
gs.log('TESTING: Result after IF is = ' + output); //Added by Will
}
gs.log('TESTING Result Before Output is '+ output); // Added by Will
return output ;
},
type: 'Group_and_CI_1'
});
Client:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('Group_and_CI_1');
ga.addParam('sysparm_name', 'getallValues');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', '1512159ddbc5a300b6e69b3c8a96195d');
ga.getXML(callback);
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
g_form.setValue('u_glide_list_areas_impacted', answer);
}
}
Client Script passed the cmdb_ci and the group type.
Results in the Group being added to the Change Request u_field.
Do you want full credit, you led me to the final, or just helpful. I'm cool either way.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 11:43 AM
I made both changes. And the [object HMTLCollection] does not populate to the u_Field, but also nothing does. I added an alert and it returns blank.
Script Include:
var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
//var output;
var output = '';
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
gs.log('Row Count is'+ gr.getRowCount()); //Added by Will
if(gr.next()) {
//output += gr.sys_id+"\n";
output=gr.getUniqueValue();
}
gs.log('Result is'+ output); // Added by Will
return output ;
},
type: 'Group_and_CI'
});
Client:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('Group_and_CI');
ga.addParam('sysparm_name', 'getallValues');
ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));
ga.addParam('sysparm_grp', '75da0d45dbcc7380b825abc5ca96196e'); // Release Coordinator '75da0d45dbcc7380b825abc5ca96196e' sys_id
ga.getXML(callback);
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
g_form.setValue('u_glide_list_areas_impacted', result);
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 12:30 PM
The AJAX callback also needs this line updated (result var changed to answer):
g_form.setValue('u_glide_list_areas_impacted', answer);
In your script include log are you getting a value being logged for output variable? Is the u_group field on u_m2m_groups_configuratio table a reference or a string? If its a string then your client script AJAX call should have this line updated:
ga.addParam('sysparm_grp', 'Release Coordinator'); // Release Coordinator '75da0d45dbcc7380b825abc5ca96196e' sys_id
If your alert() pop up is blank then your script include isnt returning any sys_id.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 02:06 PM
I made the change to the client:
g_form.setValue('u_glide_list_areas_impacted', answer)
The u_m2m_groups_configuratio table is a reference
So still returning the same blank alert. So if the script include is not returning the sys_id what is next to look at? Where is the log for the script include?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2019 03:08 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2019 08:14 AM
Add logs to Script Include:
var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getallValues : function() {
//var output;
var output = '';
var grp = this.getParameter("sysparm_grp");
var cmdb = this.getParameter("sysparm_ci");
var gr = new GlideRecord('u_m2m_groups_configuratio');
gr.addQuery('u_group', grp);
gr.addQuery('u_configuration_item', cmdb);
gr.query();
gs.log('TESTING: Result 1 is = ' + output);
gs.log('TESTING Row Count is'+ gr.getRowCount()); //Added by Will
if(gr.next()) {
//output += gr.sys_id+"\n";
output=gr.getUniqueValue();
gs.log('TESTING: Result 2 is = ' + output);
}
gs.log('TESTING Result 3 is'+ output); // Added by Will
return output ;
},
type: 'Group_and_CI'
});
Logs:
On Change record: