Having Issues Populating Records into a list collector variable from a script include and Ref qual

guzman
Giga Guru
Hi All,
 
Maybe someone out there can tell me why this script is failing to populate the returned values into a list collector:
Query in background script returns the correct number of records based on  selected encoded-query, but it fails to populate in list callector. It looks like I am missing something, but I cannot tell what it is.
 
- Var Type: List Collector, on sys_user table
- Reference qual
        javascript : new Laz_GetVIPUserList().fn_getUserMemberNames(action);
 - Variable attributes
       ref_auto_completer=AJAXTableCompleter,ref_ac_columns=name,ref_ac_order_by=name,nofilter,glide_list 
 
Script Include Code (Non AJAX callable):
// Script Include to add or remove BIP Users from sys_user table
// It takes a parameter (action) to call an encodedQuery based on selected Action (add, remove).
// It should then return the list to a list callector, where a user can add or remove VIP users
// depending on the clicked Action button. 
 
var Laz_GetVIPUserList = Class.create();
Laz_GetVIPUserList.prototype = Object.extendsObject(AbstractAjaxProcessor, {
fn_GetVIPMemberNames: function(action) { 
var actionTaken = action;    // Action: 'add' or 'remove'
var encoded_query = '';
var vip_memberList = [], memberList = [];
 
if (actionTaken == 'add' ) 
       encoded_query = 'active=true^u_hr_active_employee=true^vip=false';
if (actionTaken == 'remove' ) 
       encoded_query = 'active=true^u_hr_active_employee=true^vip=true^titleLIKECEO^ORtitleLIKECOO^ORtitleLIKEChairman^ORtitleLIKEChief^ORtitleLIKEGeneral^ORtitleLIKEGlobal^ORtitleLIKEHead^ORtitleLIKEManaging';
 
var vip_user = new GlideRecord('sys_user');
vip_user.addEncodedQuery(encoded_query);
vip_user.query();      
while (vip_user.next()) {
       memberList.push(vip_user.sys_id.toString());
}
return memberList;
},
 
  type: 'Laz_GetVIPUserList'
  
});
//=====================================
 
Thank in advance.
 
Thanks,
Juan
3 REPLIES 3

Tony Chatfield1
Kilo Patron

Hi, assuming your ref qualifier script-include is functioning and is called ok?
it is returning an array, whereas I think you need a comma separated string of sys_id's.
You also need to include query syntax for the field you are referencing\filtering on, so something like this should work.

 

 

javascript: 'sys_idIN' + new Laz_GetVIPUserList().fn_getUserMemberNames(action).toString();

 

 

Edit: Sorry missed the current reference

javascript: 'sys_idIN' + new Laz_GetVIPUserList().fn_getUserMemberNames(current.action).toString();

 

 

Amit Gujarathi
Giga Sage
Giga Sage

HI @guzman ,
I trust you are doing great.
Please find the corrected script include

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

    fn_getUserMemberNames: function(action) { 
        var actionTaken = action;    // Action: 'add' or 'remove'
        var encoded_query = '';
        var memberList = [];
     
        if (actionTaken == 'add') 
            encoded_query = 'active=true^u_hr_active_employee=true^vip=false';
        if (actionTaken == 'remove') 
            encoded_query = 'active=true^u_hr_active_employee=true^vip=true^titleLIKECEO^ORtitleLIKECOO^ORtitleLIKEChairman^ORtitleLIKEChief^ORtitleLIKEGeneral^ORtitleLIKEGlobal^ORtitleLIKEHead^ORtitleLIKEManaging';
     
        var vip_user = new GlideRecord('sys_user');
        vip_user.addEncodedQuery(encoded_query);
        vip_user.query();      
        while (vip_user.next()) {
            memberList.push(vip_user.sys_id.toString());
        }
        return memberList.join(',');  // Return comma-separated list of sys_ids
    },
 
    type: 'Laz_GetVIPUserList'
});

Was this answer helpful?


Please consider marking it correct or helpful.


Your feedback helps us improve!


Thank you!


Regards,


Amit Gujrathi



Vishal Birajdar
Giga Sage

Hi @guzman 

 

Assuming you are doing this on Catalog item variable :

 

Can you update reference qualifier as :

 

   javascript : new Laz_GetVIPUserList().fn_getUserMemberNames(current.variables.action);

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates