Glide list reference qualifier
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-02-2016 10:47 PM
Hi All,
On Case form, I have created a Glide list field 'Feature' - this is reference to a custom table Product feature (u_product_feature). The Product Feature form has another reference field Product (u_product) - reference to cmdb_software_product_model.
Also, on the Case form, I have another reference field called Client deployment (reference to custom table u_cmdb_ci_client_deployment). The form (u_cmdb_ci_client_deployment) has a field called Product (reference to table cmdb_software_product_model).
So, if on any Case form, a value is selected against field Client deployment (and say it has Product = Pabc), then the value against the field Feature should only return those values which have Product = Pabc.
I wrote the below script include to achieve this and called that one as a reference qualifier onto the field Feature on the Case form but it seems its not working.
var myFeature = Class.create();
myFeature.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
caseFT : function()
{
if (current.variables.u_client_deployment_id == '')
{
return;
}
var cdi = current.u_client_deployment_id.toString();
if(cdi)
{
var ft1 = [];
var gr = new GlideRecord('u_product_feature');
gr.addQuery('u_product', cdi.u_product);
gr.query();
while (gr.next())
{
ft1.push(getValue('sys_id'));
gs.info('@@ ' + ft1.push(getValue('sys_id')));
}
gs.info('@@ ' + ft1);
return ft1.toString();
}
},
type: 'myFeature'
});
Any lead will be appreciated. Thanks in advance!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-04-2016 05:42 AM
There are a few issues here:
- You're calling current but it's not defined. You need to pass it as a parameter when you call the function. I normally use Script Includes (not Client-callable - although I don't think it matters here) with a Reference qualifier like the one below.
- On line 10 you're defining cdi as a String, but then trying to dot-walk from it on line 17 with cdi.u_product
- On lines 21 and 22 you're missing gr. in front of getValue('sys_id'). It should be gr.getValue('sys_id')
- On line 25 you need to return an encoded query: 'sys_idIN' + listOfSysIds
Reference qualifier: javascript: new myFeature().caseFT(current);
Script Include:
var myFeature = Class.create();
myFeature.prototype = {
initialize: function() {
},
caseFT: function(ritm) {
var productID = ritm.variables.u_client_deployment_id.u_product.sys_id;
if (!productID)
return '';
var ft1 = [];
var pf = new GlideRecord('u_product_feature');
pf.addQuery('u_product', productID);
pf.query();
while (pf.next()) {
ft1.push(String(pf.sys_id));
gs.info('@@ ' + pf.sys_id);
}
gs.info('@@ ' + ft1);
return 'sys_idIN' + ft1.join(',');
},
type: 'myFeature'
};