How to write business roles based on fields between associated tables?

shiz
Tera Contributor

I have the following business roles.

 

var groupName = "G2U%";
            var typeName = "Organization";
            var f = 1;  
            //現在のキャラクタの下にあるすべてのuserを取得して、に戻ります
           
            var userGroup = new GlideRecord("sys_user_grmember");
            userGroup.addQuery("user",u);  
            userGroup.addQuery("group.name","NOT LIKE", groupName);        
            userGroup.addQuery("sys_user_group_type.name",typeName);

            //userGroup.addQuery("group.name","<>",exceptGroup_1);
            //userGroup.addQuery("group.name","<>",exceptGroup_2);
            userGroup.query();

            while(userGroup.next()){
                var strGroup = userGroup.group;

                    // get group's user info
                    var g_member = new GlideRecord("sys_user_grmember");
                    g_member.addQuery("group",strGroup);
                    g_member.addQuery("user","<>",u);
                    g_member.query();
                    while(g_member.next()){                    
                        var strUser = g_member.user.sys_id.toString();
                        answer[f] = strUser;
                        f++;
                    }
            }          
But, userGroup.addQuery("sys_user_group_type.name",typeName) :This code is not effective.
The following are the field definitions for the table:
shiz_0-1752026387328.pngshiz_1-1752026417750.png

 

 How to modify the code to filter data with type 'organization' in the 'sys_user_group' table?
 
 
1 ACCEPTED SOLUTION

Hello @shiz ,

 

Use the below code. This works for me.

var groupName = "G2U%";
var typeName = "Organization";
var f = 1;
var answer = [];
//現在のキャラクタの下にあるすべてのuserを取得して、に戻ります

var userGroup = new GlideRecord("sys_user_grmember");
userGroup.addQuery("user", gs.getUserID());
userGroup.addQuery("group.name", "NOT LIKE", groupName);
userGroup.addQuery("group.type", 'f3dfc27ac32222103e1a76d4e40131c3'); // sys_id of organization

//userGroup.addQuery("group.name","<>",exceptGroup_1);
//userGroup.addQuery("group.name","<>",exceptGroup_2);
userGroup.query();

while (userGroup.next()) {
    var strGroup = userGroup.group;

    // get group's user info
    var g_member = new GlideRecord("sys_user_grmember");
    g_member.addQuery("group", strGroup);
    g_member.addQuery("user", "<>", gs.getUserID());
    g_member.query();
    while (g_member.next()) {
        var strUser = g_member.user.getDisplayValue().toString();
		gs.info("sys_id - "+strUser);
        answer[f] = strUser;
        f++;
    }
}

 

Output -

Group with members -

ShraddhaKadam_0-1752031120994.png

Script output

ShraddhaKadam_1-1752031177187.png

 

If my response was helpful, please mark it as correct and helpful.
Thank you.

View solution in original post

10 REPLIES 10

Rafael Batistot
Tera Sage

Hi @shiz 

 

Try 

 

userGroup.addQuery("group.sys_user_group_type.name", typeName);

It seems that the data with type=organization in the sys_user_group table has not been filtered yet. After trying to modify it, the result set is still the same as before. This code doesn't seem to work.

If it could help me, I would be very grateful.

Hello @shiz ,

Can you share your exact requirement?

If my response was helpful, please mark it as correct and helpful.
Thank you.