- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 07:02 AM
Hello folks,
I want to dot walk with the answer on client script.
Eg: answer.support_group
Script Include:
_getCIRelationship: function(ciSysId) {
var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
cmdbRelCi.addQuery('child',ciSysId);
cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
cmdbRelCi.query();
if(cmdbRelCi.next()){
if(cmdbRelCi.parent.sys_class_name == 'service_offering') {
return cmdbRelCi.getValue('parent');
Client Script:
var cI = g_form.getValue('cmdb_ci');
var ga = new GlideAjax('SupplierOfferingFinder');
ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
ga.addParam('sysparm_ci_sys_id', cI);
ga.getXML(setSupplierOffering);
function setSupplierOffering(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
g_form.setValue('u_supplier_offering',answer);
g_form.setValue('assignment_group',answer.support_group); // this statement not working
}
Thank you
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 11:02 AM
LOL that is certainly understandable as there is lots of back and forth in this posting. To summarize here are the working scripts.
Script Include:
_getCIRelationship: function(ciSysId) {
var answer = {};
var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
cmdbRelCi.addQuery('child', ciSysId);
cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
cmdbRelCi.query();
if (cmdbRelCi.next()) {
if (cmdbRelCi.parent.sys_class_name == 'service_offering') {
answer.parent = cmdbRelCi.getValue('parent');
answer.support_group = cmdbRelCi.parent.support_group.toString();
}
return JSON.stringify(answer);
}
}
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (!newValue) {
g_form.clearValue('u_supplier_offering');
g_form.clearValue('assignment_group');
return;
}
var cI = newValue;
var ga = new GlideAjax('SupplierOfferingFinder');
ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
ga.addParam('sysparm_ci_sys_id', cI);
ga.getXMLAnswer(setSupplierOffering);
function setSupplierOffering(response) {
var answer = JSON.parse(response);
var populated = false;
for (var prop in answer) {
if (response.hasOwnProperty(prop)) {
populated = true;
}
}
if (populated) {
g_form.setValue('u_supplier_offering', answer.parent);
g_form.setValue('assignment_group', answer.support_group);
}
}
}
Cheers,
David

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 07:21 AM
Hello,
You can use g_form.getReference(' ',setSupplierOffering);
Else check below thread will help you,
If my answer is helpful mark correct!
Thanks,
Pratiksha

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 07:23 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 07:41 AM
You could use getReference(), but you may as well continue with your Script Include because GlideAjax isn't good practice for populating reference fields as it creates synchronous calls.
Script Include
_getCIRelationship: function(ciSysId) {
var answer = {};
var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
cmdbRelCi.addQuery('child',ciSysId);
cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
cmdbRelCi.query();
if(cmdbRelCi.next()){
if(cmdbRelCi.parent.sys_class_name == 'service_offering') {
answer.parent = cmdbRelCi.getValue('parent');
answer.support_group = cmdbRelCi.parent.support_group;
return answer;
}
Client Script
var cI = g_form.getValue('cmdb_ci');
var ga = new GlideAjax('SupplierOfferingFinder');
ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
ga.addParam('sysparm_ci_sys_id', cI);
ga.getXML(setSupplierOffering);
function setSupplierOffering(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
var answer = JSON.parse(answer );
g_form.setValue('u_supplier_offering',answer.parent);
g_form.setValue('assignment_group',answer.support_group); // this statement not working
}
ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-27-2020 09:35 AM
Pauls answer is great. Just remember to stringify the object before returning to the client script like so:
Script Include:
_getCIRelationship: function(ciSysId) {
var answer = {};
var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
cmdbRelCi.addQuery('child',ciSysId);
cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
cmdbRelCi.query();
if(cmdbRelCi.next()){
if(cmdbRelCi.parent.sys_class_name == 'service_offering') {
answer.parent = cmdbRelCi.getValue('parent');
answer.support_group = cmdbRelCi.parent.support_group.toString();
}
return JSON.stringify(answer);
}
}
Client Script:
var cI = g_form.getValue('cmdb_ci');
var ga = new GlideAjax('SupplierOfferingFinder');
ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
ga.addParam('sysparm_ci_sys_id', cI);
ga.getXMLAnswer(setSupplierOffering);
function setSupplierOffering(response) {
var answer = response;
var answer = JSON.parse(answer);
g_form.setValue('u_supplier_offering',answer.parent);
g_form.setValue('assignment_group',answer.support_group);
}