Filter user reference field by separate group field

castle11
Tera Expert
Hi,
 
We have a catalog item that contains a group reference field and a user reference field. We need to filter the user field based on what group is selected in the group field (only show the users from the selected group). I have tried creating a script include to return a query string, which I then use in the reference qualifier for the user field, but it's not working and I can't figure out why. I have also tried calling the script include from a client script but it doesn't even look like the script include is being called. I'm using gs.log in the SI for testing but I'm not seeing the output in the logs, nor am I getting any helpful information/errors.
 
Script Include
Name: GetUsersInGroup
Application: Global
Accessible from: All application scopes
Client callable: true

 

var GetUsersInGroup = Class.create();
GetUsersInGroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	getUsers: function(group) {  
		var groupMembers = new GlideRecord('sys_user_grmember');
		var groupName = new GlideRecord('sys_user_group');
		groupName.get(group);
		groupMembers.addQuery('group', groupName.u_display_name);
		groupMembers.query();
     
		while(groupMembers.next()) {
			members += (',' + groupMembers.user);
		}
		gs.log('TESTING');
		gs.log(members);

		return 'nameIN' + members;
	},
	
    type: 'GetUsersInGroup'
});

 

 
Reference qualifier on user field

 

javascript: new GetUsersInGroup().getUsers(current.variables.account_team_responsible)

 

 
Can anyone see any issues or give any advice?
Thanks
1 ACCEPTED SOLUTION

Riya Verma
Kilo Sage
Kilo Sage

Hi @castle11 ,

 

Hope you are doing great.

 

there are a few potential issues with the provided script include and reference qualifier.

  1. Missing Variable Declaration: The variable members is not declared before its usage in the script include.

  2. The provided reference qualifier code is incomplete and might not be used in the correct context. It should be used in a specific field's reference qualifier property.

Script include:

 

var GetUsersInGroup = Class.create();
GetUsersInGroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getUsers: function(group) {
    var members = '';
    
    var groupMembers = new GlideRecord('sys_user_grmember');
    var groupName = new GlideRecord('sys_user_group');
    groupName.get(group);
    groupMembers.addQuery('group', groupName.u_display_name);
    groupMembers.query();

    while (groupMembers.next()) {
      members += (',' + groupMembers.user);
    }

    gs.log('TESTING');
    gs.log(members);

    return 'nameIN' + members;
  },

  type: 'GetUsersInGroup'
});

 

 

Reference Qualifier on user field :

 

javascript: new GetUsersInGroup().getUsers(current.variables.account_team_responsible);

 

 
Please mark the appropriate response as correct answer and helpful, This may help other community users to follow correct solution.
Regards,
Riya Verma

View solution in original post

1 REPLY 1

Riya Verma
Kilo Sage
Kilo Sage

Hi @castle11 ,

 

Hope you are doing great.

 

there are a few potential issues with the provided script include and reference qualifier.

  1. Missing Variable Declaration: The variable members is not declared before its usage in the script include.

  2. The provided reference qualifier code is incomplete and might not be used in the correct context. It should be used in a specific field's reference qualifier property.

Script include:

 

var GetUsersInGroup = Class.create();
GetUsersInGroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getUsers: function(group) {
    var members = '';
    
    var groupMembers = new GlideRecord('sys_user_grmember');
    var groupName = new GlideRecord('sys_user_group');
    groupName.get(group);
    groupMembers.addQuery('group', groupName.u_display_name);
    groupMembers.query();

    while (groupMembers.next()) {
      members += (',' + groupMembers.user);
    }

    gs.log('TESTING');
    gs.log(members);

    return 'nameIN' + members;
  },

  type: 'GetUsersInGroup'
});

 

 

Reference Qualifier on user field :

 

javascript: new GetUsersInGroup().getUsers(current.variables.account_team_responsible);

 

 
Please mark the appropriate response as correct answer and helpful, This may help other community users to follow correct solution.
Regards,
Riya Verma