- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 08:45 PM
Hi,
I have written 2 GlideAJAX with one ScriptIncludes encapsulating both the functions. I have to see that the incidents and RITM's selected as list collector at the task level `should populate in the work notes. Incidents are displaying well, but not RITM's. Kindly help.
GlideAjax 1:
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var ga = new GlideAjax("listCollectorWNClass");
ga.addParam("sysparm_name", "listCollectorIncidentFunction");
ga.addParam("sysparm_id", inc);
ga.getXMLWait();
var answer = ga.getAnswer();
g_form.setValue("work_notes", answer);
// g_form.work_notes = answer;
}
GlideAjax 2
function onSubmit() {
//Type appropriate comment here, and begin script below
var rq_item = g_form.getValue("requests_submitted_by_itam");
var ga = new GlideAjax("listCollectorWNClass");
ga.addParam("sysparm_name", "listCollectorRITMFunction");
ga.addParam("sysparm_id", rq_item);
ga.getXMLWait();
var answer = ga.getAnswer();
g_form.setValue("work_notes", answer);
}
ScriptIncludes
var listCollectorWNClass = Class.create();
listCollectorWNClass.prototype = Object.extendsObject(AbstractAjaxProcessor, {
listCollectorIncidentFunction: function() {
var incArr = this.getParameter('sysparm_id').toString().split(',');
var numArr = [];
var answer;
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
numArr.push(inc1.number);
}
}
gs.log("Test for Suman", numArr);
answer = numArr.join(',');
return answer;
// return JSON.stringify(numArr);
},
listCollectorRITMFunction: function() {
var rqArr = this.getParameter('sysparm_id').toString().split(',');
var numArr = [];
for (var i = 0; i < rqArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(rqArr[i].toString())) {
numArr.push(rq_itm.number);
}
}
gs.log("Test for Suman", numArr);
answer = numArr.join(',');
return answer;
// return JSON.stringify(numArr);
},
type: 'listCollectorWNClass'
});
Regards
Suman P.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 05:00 AM
Hi @Community Alums
Highlighted the changes below in red
Script include :
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var newIncArray =[];
var newritmArray =[];
var object = {
incident :'',
ritm :''
};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray.toString();
for (var i = 0; i < ritmArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(ritmArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray.toString();
return JSON.stringify(object);
},
Client script :
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
/*Inc & Ritm both*/
var gaIncRitm = new GlideAjax("listCollectorWNClass");
gaIncRitm.addParam("sysparm_name", "listCollectorIncRitmFunction");
gaIncRitm.addParam("sysparm_ritmId", rq_item);
gaIncRitm.addParam("sysparm_incId", inc);
gaIncRitm.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
g_form.addInfoMessage('Response=' + JSON.parse(gaIncRitm.getAnswer()));
var answer = JSON.parse(gaIncRitm.getAnswer());
var setValues = "Incident :" + answer.incident.toString() + '\n' + 'Ritms :' + answer.ritm.toString();
g_form.setValue("work_notes", setValues);
}
This should work.
I'm able to get it in worknotes :
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 05:49 AM - edited 10-02-2023 05:54 AM
Hi Vishal,
Thank you so much for being with me so patiently on this. I have one more field also. This is for Change Requests. I have updated it accordingly but i am not getting any output.
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getValue("incidents_submitted_by_itam");
var rq_item = g_form.getValue("requests_submitted_by_itam");
var chg = g_form.getValue("change_requests_submitted_by_itam");
/*Inc & Ritm both*/
var ga = new GlideAjax("listCollectorWNClass");
ga.addParam("sysparm_name", "listCollectorIncRitmFunction");
ga.addParam("sysparm_ritmId", rq_item);
ga.addParam("sysparm_changeID", chg);
ga.addParam("sysparm_incId", inc);
ga.getXMLWait();
/*Set values*/
/*Put some alerts- info messages to check what you are receiving from script include*/
// g_form.addInfoMessage('Response=' + JSON.parse(ga.getAnswer()));
var answer = JSON.parse(ga.getAnswer());
var setValues = "Incident(s) :" + answer.incident.toString() + '\n' + "Service Request(s) :" + answer.ritm.toString() + '\n' + "Change Request(s) :" + answer.change.toString();
g_form.setValue("work_notes", setValues);
}
var listCollectorWNClass = Class.create();
listCollectorWNClass.prototype = Object.extendsObject(AbstractAjaxProcessor, {
listCollectorIncRitmFunction: function() {
var incArr = this.getParameter('sysparm_incId').toString().split(',');
var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');
var changeArr = this.getParameter('sysparm_changeID').toString.split(',');
var newIncArray = [];
var newritmArray = [];
var newChangeArr = [];
var object = {
incident: '',
ritm: '',
change: ''
};
for (var i = 0; i < incArr.length; i++) {
var inc1 = new GlideRecord('incident');
if (inc1.get(incArr[i].toString())) {
newIncArray.push(inc1.number);
}
}
object.incident = newIncArray.toString();
for (var i = 0; i < changeArr.length; i++) {
var change1 = new GlideRecord('change_request');
if (change1.get(changeArr[i].toString())) {
newChangeArr.push(change1.number);
}
}
object.change = newChangeArr.toString();
for (var i = 0; i < ritmArr.length; i++) {
var rq_itm = new GlideRecord('sc_req_item');
if (rq_itm.get(ritmArr[i].toString())) {
newritmArray.push(rq_itm.number);
}
}
object.ritm = newritmArray.toString();
return JSON.stringify(object);
},
type: 'listCollectorWNClass'
});
Regards
Suman P.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 05:55 AM - edited 10-02-2023 05:55 AM
In script include,
In second for loop I guess you are glide recording on "incident" table instead of "change_request".
Change it ...you will get your output.
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 06:00 AM
That was in a hurry and i updated it and tested it. Still no output. I have already attached the code in the previous message.
Regards
Suman P.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 06:11 AM
Hi @Community Alums
The code looks good.
Can you put some logs in script include, to check if you are getting change numbers in array.
Also check backend name of Change table.
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2023 06:34 AM
It didn't work. it is still showing blank for Change Requests. I checked the backend name for change request is change_request. Not sure what is going on. Can you please look into it.
Regards
Suman P.