Advanced reference qualifier help

Andrew_TND
Mega Sage
Mega Sage

Hello, I'm trying to set up a filter on a dictionary override, however I cant seem to get the script include to work. Any ideas where its falling over?

Its on the assigned to field and it should only show people in groups where the assignment type is **sys_id** below.

Thanks in advance! 

 

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

    filter: function() {
        var groupids = [];
        var groupgr = new GlideRecord('sys_user_group');
        groupgr.addEncodedQuery("group.u_assignment_type_sLIKE3077280b1b67921074ba9604b24bcb80");
        groupgr.query();

        while (groupgr.next()) {
            groupids.push(groupgr.getValue("sys_id"));
        }
        if (groupids.length == 0) {
            return "";
        }
        var userids = [];
        var grmember = new GlideRecord("sys_user_grmember");
        grmember.addQuery("group", "IN", groupids);
        grmember.query();

        while (grmember.next()) {
            userids.push(grmember.getValue("user"));
        }
        return userids;
    },
    type: 'PCRFilter'
});
javascript: new PCRFilter().filter();

 

 

1 ACCEPTED SOLUTION

Andrew_TND
Mega Sage
Mega Sage

This was helpful however I think I went over the top with the referencing. 

In the end I got this to work.

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

    filter: function() {
        var userids = [];
		
        var milestone = current.getValue("u_milestone_record"); //Check if Milestone Record is empty
        if (!milestone) {
            return "";
        }
        var grmember = new GlideRecord("sys_user_grmember"); //check the user membership table
        grmember.addQuery('group.u_assignment_type_s', '=', '7cf4ac0c1b735a10408c4156b04bcb79');
        grmember.query();

        while (grmember.next()) {
            userids.push(grmember.getValue("user"));
        }
        if (userids.length == 0) {
            return "";
        }
        return "sys_idIN" + userids.join(',');//Return the sys_id of the user against the group
    },
    type: 'PCRFilter'
});



View solution in original post

2 REPLIES 2

Anurag Tripathi
Mega Patron
Mega Patron

Hi,

Try to return encoded query instead of sys_ids. 

EG 

return "sys_idIN"+userids.toString();
-Anurag

Andrew_TND
Mega Sage
Mega Sage

This was helpful however I think I went over the top with the referencing. 

In the end I got this to work.

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

    filter: function() {
        var userids = [];
		
        var milestone = current.getValue("u_milestone_record"); //Check if Milestone Record is empty
        if (!milestone) {
            return "";
        }
        var grmember = new GlideRecord("sys_user_grmember"); //check the user membership table
        grmember.addQuery('group.u_assignment_type_s', '=', '7cf4ac0c1b735a10408c4156b04bcb79');
        grmember.query();

        while (grmember.next()) {
            userids.push(grmember.getValue("user"));
        }
        if (userids.length == 0) {
            return "";
        }
        return "sys_idIN" + userids.join(',');//Return the sys_id of the user against the group
    },
    type: 'PCRFilter'
});