Display specific group members based on assignment group in form

Venkata Sunil K
Tera Contributor

Hi Team, 

I have created script included and add advanced reference qualifier to display users in list collector filed and which is working fine. But now the requirement as below

Group - A -> Group - C

Group - B -> Group - D

Groups - E & D

List collector field - People Relations

1. If Group - A exists in form I need to display Group - C users in People Relations filed

2. If Group - B exists in form I need to display Group - D users in People Relations filed

3. If Group-A & B doesn't exists in the form need to display members related Groups - E & D 

Script Include:

 assignmentGrpUsers: function(caseGroup) {
        var arryVal = [];
        var grMember = new GlideRecord('sys_user_grmember');
        grMember.addEncodedQuery('group=' + caseGroup);
        grMember.query();
        while (grMember.next()) {
            arryVal.push(grMember.getValue("user"));
        }
        return "sys_idIN" + arryVal.join();

    },

 

Reference Qual:

javascript:new usersDisplayOnAssignment().assignmentGrpUsers(current.assignment_group);

 

Please suggest how can I modify the code accordingly.

Thanks!

@Ankur Bawiskar any suggestions on this?

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@Venkata Sunil Kumar Reddy Kothapalli 

are you talking about catalog form or normal form because you said list collector?

I assume it's normal form and list type of field

update as this and it will work fine

Ensure you give correct sysIds of the groups

assignmentGrpUsers: function(caseGroup) {

	var arryVal = [];
	if(caseGroup.indexOf('Group A sysId') > -1){
		// bring only Group C
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('group=' + 'groupCSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

	if(caseGroup.indexOf('Group B sysId') > -1){
		// bring only Group D
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('group=' + 'groupDSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

	if(caseGroup.indexOf('Group A sysId') == -1 && caseGroup.indexOf('Group B sysId') == -1){
		// bring only Group E and D
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('groupIN' + 'groupESysId,groupDSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

},

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

6 REPLIES 6

Venkata Sunil K
Tera Contributor

Hi Team, 

--------Continue to this request----------

Is there any way to call multiple script include functions into advanced reference qualifier. 

I store the different set of users in different arrays. When call each functions once it's working expected, now I want call all functions in reference qualifier. 

Script Include - assignmentData()

Function1

Function2

Function3

I tried below reference qualifier but its not working.

javascript: "sys_idIN"+new assignmentData().Function1() + new assignmentData().Function2() +new assignmentData().Function3();

Please suggest how to OR condtion in reference qualifier.

 

hello @Venkata Sunil Kumar Reddy Kothapalli .

i think you cant call multiple functions in a single reference qualifier but i can suggest one thing 

call the other two functions inside the function that you are calling in the reference qualifier 

like below 

function one should be called in the reference qualifier .

function1() 

{

this.function2()

this.function3()

}

Hope this helps 

Mark the answer correct if this helps you

if(caseGroup.indexOf('Group B sysId') > -1){

Ankur Bawiskar
Tera Patron
Tera Patron

@Venkata Sunil Kumar Reddy Kothapalli 

are you talking about catalog form or normal form because you said list collector?

I assume it's normal form and list type of field

update as this and it will work fine

Ensure you give correct sysIds of the groups

assignmentGrpUsers: function(caseGroup) {

	var arryVal = [];
	if(caseGroup.indexOf('Group A sysId') > -1){
		// bring only Group C
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('group=' + 'groupCSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

	if(caseGroup.indexOf('Group B sysId') > -1){
		// bring only Group D
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('group=' + 'groupDSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

	if(caseGroup.indexOf('Group A sysId') == -1 && caseGroup.indexOf('Group B sysId') == -1){
		// bring only Group E and D
		var grMember = new GlideRecord('sys_user_grmember');
		grMember.addEncodedQuery('groupIN' + 'groupESysId,groupDSysId');
		grMember.query();
		while (grMember.next()) {
			arryVal.push(grMember.getValue("user"));
		}
		return "sys_idIN" + arryVal.join();
	}

},

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader