CI based on location

Charls Brown
Tera Expert

Hello,

I want to bring all the CI´s based on location. On the incident form if a user select a location then all CI´s need to be filtered by that specific location. I have created a script include and I am calling with a reference qualifier on the Configuration Item field but for some reason its not working:

 

client callable

script include 

var SevenEleven_CI_ReferenceQuali = Class.create();
SevenEleven_CI_ReferenceQuali.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getConfigurationItems: function(ci_id) {

// if (!ci_id)
// return;
gs.log("Business Service ID: " + ci_id);
// Set up return value
var returnList = '';
// Get the Category Structures
var ci_gr = new GlideRecord('cmdb_ci');
ci_gr.addQuery('location', ci_id);
ci_gr.query();

while (ci_gr.next()) {
if (returnList == '') {
returnList += ci_gr.location.sys_id;
} else {
returnList += ',' + ci_gr.location.sys_id;
}
}

// gs.log("Return List: " + returnList);
// Return the values
return returnList;
},

type: 'SevenEleven_CI_ReferenceQuali'
});

 

Reference qualifier:

javascript:new SevenEleven_CI_ReferenceQuali().getConfigurationItems(current.location);

24 REPLIES 24

just tested and it passes the sys id  and it gives me a list of sys_id of ci. but not really sure why it doesnt make the filtering

Try this approach.

 

script include (name: getConfigurationItems)

function getConfigurationItems() {

var ticket_location = current.location; //get location from ticket form
var returnList = '';


// Get the Category Structures
var ci_gr = new GlideRecord('cmdb_ci');
ci_gr.addQuery('location', ticket_location);
ci_gr.query();

while (ci_gr.next()) {
if (returnList == '') {
returnList += ci_gr.sys_id;
} else {
returnList += ',' + ci_gr.sys_id;
}
}

return returnList;
}

 

Reference qualifier:

javascript:getConfigurationItems();

no sir it doesnt work. i was closer with the other approach

I think the reason is you return sysids while you should return qualifier. 

 

script include (name: getConfigurationItems)

function getConfigurationItems() {

var ticket_location = current.location; //get location from ticket form
var returnList = 'sys_idIN';

// Get the Category Structures
var ci_gr = new GlideRecord('cmdb_ci');
ci_gr.addQuery('location', ticket_location);
ci_gr.query();

while (ci_gr.next()) {
if (returnList == 'sys_idIN') {
returnList += ci_gr.sys_id;
} else {
returnList += ',' + ci_gr.sys_id;
}
}

return returnList;
}

 

Reference qualifier:

javascript:getConfigurationItems();

Chalan B L
Giga Guru

Mark the answer as correct and helpful if it helped you..!!

 

Tested the below code in background script and working fine

 

Reference Qualifier

javascript:new SevenEleven_CI_ReferenceQuali().getConfigurationItems(current.location);

 

Script Include --> Client callable should be unchecked

getConfigurationItems: function(ci_id) {

var returnList = [];
// Get the Category Structures
var ci_gr = new GlideRecord('cmdb_ci');
ci_gr.addQuery('location', ci_id);
ci_gr.query();

while (ci_gr.next()) {
returnList.push(ci_gr.location)
}

return returnList.toString();

},