The CreatorCon Call for Content is officially open! Get started here.

How to get current catalog item sys id in script include which should be run on service portal?

manishaidhate
Mega Expert

We have to get sys id of catlog item (current).

As per below code we have used getParameter() function, which is running fine on service now view, but not running for Service portal.

Any one knows alternative to get current sys id of catalog item in script include ?

Script include

var ApplicationModule = Class.create();

ApplicationModule.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getCatItemAppMod: function () {

var cat_sys_id = this.getParameter('sysparm_cat_sys_id');

var gr = new GlideRecord('sc_cat_item');

//gr.addQuery('sys_id','b69a135f13967e00be19bda12244b0e7');

    gr.addQuery('sys_id',cat_sys_id);

gr.query();

if (gr.next()) {

return "u_application=" + gr.u_application_name + "^u_module=" + gr.u_default_module;

}

return 'Yes to check';

},

1 ACCEPTED SOLUTION

manishaidhate
Mega Expert

I got solution,



I have fetched sys id by below code , and passed that to script include ,



var Sysid = g_form.getUniqueValue();



Its running fine



Script Include


var ApplicationModule = Class.create();


ApplicationModule.prototype = Object.extendsObject(AbstractAjaxProcessor, {



getCatItemAppMod: function () {


var cat_sys_id = this.getParameter('sysparm_cat_sys_id');


var gr = new GlideRecord('sc_cat_item');


//gr.addQuery('sys_id','b69a135f13967e00be19bda12244b0e7');


    gr.addQuery('sys_id',cat_sys_id);


gr.query();


if (gr.next()) {


return "u_application=" + gr.u_application_name + "^u_module=" + gr.u_default_module;



}


return ' ';


},


..........



Client script



function onLoad() {


//Apply a default filter to the list collector variable



var ga = new GlideAjax('ApplicationModule');


var Sysid = g_form.getUniqueValue();


ga.addParam('sysparm_name','getCatItemAppMod');


ga.addParam('sysparm_cat_sys_id',Sysid);


ga.getXML(setCollectorFilter);



function setCollectorFilter(response){


var catItemAppMod = response.responseXML.documentElement.getAttribute("answer");


var collectorName = 'rc_roles';


var filterString =catItemAppMod;


var myListCollector = g_list.get(collectorName);


              myListCollector.reset();


              myListCollector.setQuery(filterString);


} }


View solution in original post

7 REPLIES 7

if you are calling your script include from client script of catalog item then ignore my reply. sorry for misundestanding


I've added the two lines to the widget server script, and made a copy of the script include so that only the widget is calling it.  I'm getting all of the right values returned in logging of my script include but the variable is still not being filtered in the portal.  

I have to be missing something.  Is there something that goes in to the HTML or Client Script of the widget?

Widget Servier Script lines:

var itemSysid = $sp.getParameter('sys_id');
console.log('itemSysid is ' + itemSysid);
var si = new HN_SR_Utils_RWTEST().getTitleRefQual(itemSysid);

Script include function:

var HN_SR_Utils_RWTEST = Class.create();
HN_SR_Utils_RWTEST.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getTitleRefQual : function(itemId) {
gs.log('itemid 123456 is ' + itemId, 'rwtest');
var temp = [];
var sysID = [];
var cat_sys_id = itemId;
gs.log('cat_sys_id is ' + cat_sys_id, 'rwtest');

var gR = new GlideRecord('u_hn_srm_hierarchy');
//gR.addQuery('u_item', current.cat_item);
gR.addQuery('u_item', cat_sys_id);
//gs.log('cat item is ' + catItem, 'rwtest');
//gR.addQuery('u_item', '05f336896fe321001bedbe7cbb3ee4f5');
gR.addQuery('u_active','true');
gR.getRowCount();
gR.query();
gs.log('count is ' + gR.getRowCount(), 'rwtest');

while(gR.next()){
gs.log('inside while second', 'rwtest');
if(temp.toString().indexOf(gR.u_title) == -1){
sysID.push(gR.sys_id.toString());
temp.push(gR.u_title.toString());
gs.log('title is ' + gR.u_title.toString(), 'rwtest');
}
}
return 'sys_idIN' + sysID.toString();
},

 

thanks,

Rhonda

manishaidhate
Mega Expert

I got solution,



I have fetched sys id by below code , and passed that to script include ,



var Sysid = g_form.getUniqueValue();



Its running fine



Script Include


var ApplicationModule = Class.create();


ApplicationModule.prototype = Object.extendsObject(AbstractAjaxProcessor, {



getCatItemAppMod: function () {


var cat_sys_id = this.getParameter('sysparm_cat_sys_id');


var gr = new GlideRecord('sc_cat_item');


//gr.addQuery('sys_id','b69a135f13967e00be19bda12244b0e7');


    gr.addQuery('sys_id',cat_sys_id);


gr.query();


if (gr.next()) {


return "u_application=" + gr.u_application_name + "^u_module=" + gr.u_default_module;



}


return ' ';


},


..........



Client script



function onLoad() {


//Apply a default filter to the list collector variable



var ga = new GlideAjax('ApplicationModule');


var Sysid = g_form.getUniqueValue();


ga.addParam('sysparm_name','getCatItemAppMod');


ga.addParam('sysparm_cat_sys_id',Sysid);


ga.getXML(setCollectorFilter);



function setCollectorFilter(response){


var catItemAppMod = response.responseXML.documentElement.getAttribute("answer");


var collectorName = 'rc_roles';


var filterString =catItemAppMod;


var myListCollector = g_list.get(collectorName);


              myListCollector.reset();


              myListCollector.setQuery(filterString);


} }