Filtering Reference Field with Script Include

James Michaels1
Giga Expert

I am attempting to use a script include to filter a reference field based on a piece of data on the incident form. The script include is being called and returns an array of the correct entries but the reference field is not filtering. I am using javascript:new filterVettingCallers().filterVettingCallers() in the reference qual of the reference field and my code is below. I have tried with both sys_ids and names but neither works. Does anyone know how I can get this filter to work?

function filterVettingCallers() {
          var i = 0;
          gs.log('Vetting Filter');
          var arrVettingCallers = [];
          var category = current.u_category;
          vettingCallers = new GlideRecord('u_vetting_callers');
          gs.log('category is: ' + category);
          vettingCallers.addQuery('u_category', category);
          vettingCallers.query();
          while(vettingCallers.next()) {
                    var name = vettingCallers.sys_id.toString();
                    arrVettingCallers[i] = name;
                    i++
          }
          gs.log(arrVettingCallers)
          return arrVettingCallers;
};
1 ACCEPTED SOLUTION

James Michaels1
Giga Expert

It looks like the problem was that I had not surrounded my function with the class code. After doing so it worked properly. My completed code is below.




var filterVettingCallers = Class.create();
filterVettingCallers.prototype =   {
          initialize: function() {
          },
          filterVettingCallers:function() {
                    gs.log('Vetting Filter');
                    var stringVettingCallers = 'sys_idIN';
                    var category = current.u_category;
                    vettingCallers = new GlideRecord('u_vetting_callers');
                    gs.log('category is: ' + category);
                    vettingCallers.addQuery('u_category', category);
                    vettingCallers.query();
                    while(vettingCallers.next()) {
                              var name = vettingCallers.sys_id.toString();
                              stringVettingCallers += (name + ',');
                    }
                    stringVettingCallers = stringVettingCallers.slice(0,-1);
                    
                    gs.log(stringVettingCallers)
                    return stringVettingCallers;
          },
          type: 'filterIDVettingCallers'
};

View solution in original post

8 REPLIES 8

I see that your script include name and function both are same....try changing the function name from both places(script include and reference qual)....


-Anurag

Hi,


You have to call your function like this: javascript:filterVettingCallers(),  


In script include : Client callable should be true


In Type specifications of your field be sure also that "Use Reference Qualifier" field = Advanced


It does call this way as well but still logs the correct information while doing nothing to the list.


James Michaels1
Giga Expert

It looks like the problem was that I had not surrounded my function with the class code. After doing so it worked properly. My completed code is below.




var filterVettingCallers = Class.create();
filterVettingCallers.prototype =   {
          initialize: function() {
          },
          filterVettingCallers:function() {
                    gs.log('Vetting Filter');
                    var stringVettingCallers = 'sys_idIN';
                    var category = current.u_category;
                    vettingCallers = new GlideRecord('u_vetting_callers');
                    gs.log('category is: ' + category);
                    vettingCallers.addQuery('u_category', category);
                    vettingCallers.query();
                    while(vettingCallers.next()) {
                              var name = vettingCallers.sys_id.toString();
                              stringVettingCallers += (name + ',');
                    }
                    stringVettingCallers = stringVettingCallers.slice(0,-1);
                    
                    gs.log(stringVettingCallers)
                    return stringVettingCallers;
          },
          type: 'filterIDVettingCallers'
};