List collector variables to be made related lists on catalog task form
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-13-2023 05:44 AM
Hi,
I have a requirement. I had three list control variables "Incidents submitted by ITAM", "Requests submitted by ITAM", and "Change Requests submitted by ITAM" on the sc_task form of a catalog item. Once we select the values of these variables, and saved, the selected values will be on the "work notes". I am getting proper output until here. The requirement has changed now. The list collector variables, instead of being on the form, they want them as related lists. In the related lists, once I select the values for the corresponding list control variables and save, the selected values should be on the work notes, , I am not able to get the output. I have updated the form to reflect the change, I am not able to get the required output. Kindly help.
The list control variables used to be like this.
Client Script
function onSubmit() {
//Type appropriate comment here, and begin script below
var inc = g_form.getUniqueValue("incident.parent");
var rq_item = g_form.getUniqueValue("sc_request.parent");
var chg = g_form.getUniqueValue("change_request.parent");
/*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);
}
Script Include
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();
gs.log('Suman', newChangeArr);
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'
});
The related lists for the corresponding list collector looks like below. I have selected 10 incidents, Change Requests as 7, and Requests as 6. So, all these should be part of work notes.
Regards
Suman P.