Trying to get the group names in Assignment group variable which requested for belongs to

raj99918
Tera Contributor

Hi ,

 

Get list of groups thats Requested for belongs to in a catalog form variable called Assignment group I have written script include and onChnage catalog client as below but some how it's not setting the values in the refernce variable  and also am able to get the sys_ids's of all the groups from script include but its not setting it in the reference variable

 

Note: This is in scoped application not in Global scope

 

 

Script include:

 

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

    getGroups: function() {
        var groups = [];
        var user = this.getParameter('sysparm_userID');
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('user', user);
        gr.query();
        while (gr.next()) {
           groups.push(gr.group.sys_id);
        }
return 'sys_idIN' + groups;
    },

    type: 'GroupsMembership'
});
 ------------------------------------------
Onchange catalog client script:
 
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var gajax = new GlideAjax('GroupsMembership');
    gajax.addParam('sysparm_name','getGroups');
    gajax.addParam('sysparm_userID', newValue);
    gajax.getXML(getResults);
}
function getResults(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
var req = g_form.getValue('requested_for');
if(req !=''){
alert(answer);
   g_form.setValue('assignment_group', answer);
}
}
22 REPLIES 22

Hi @raj99918  ,

Key Point : 

1. assignment groups - list collector - sys_user_grmember table.

2. Create client callable si

3. Please change the backend name according to your requirement

 

In script include declare array and push sysid and add .tostring() like below code.

 

 

Script include:

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

    getGroupDetail: function() {
		var sysID = this.getParameter('sysparm_id');
		var gr = new GlideRecord('sys_user_grmember');
	
		gr.addQuery('user',sysID);
		gr.query();
        var arr = [];
        while (gr.next()) {
            arr.push(gr.group.name.toString());
			
        }
        // gs.info('line number 15 ' + arr);
        return  arr.toString();



    },


    type: 'getRequestedForDetail'
});

 

Hi @Sumanth16 

 arr.push(gr.group.name.toString());

 or arr.push(gr.group.sys_id); ? 

Hi @raj99918 , 

 

Try both and check which is working in your case.

 

 

Please mark this comment as Correct Answer/Helpful if it helped you.

 

Thanks & Regards,
Sumanth meda

Hi @Sumanth16  First you have shared me one thread in that they are using table as sys_user_group but not the sys_user_grmember am confused now which table I need to use ? Please confirm

Yes @raj99918 ,

 

pass current.variables.requested_for in the function parameter and make changes in the SI function as below -

 

getGroups: function(user) {
        var groups = [];
        //var user = this.getParameter('sysparm_userID');
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('user', user);
        gr.query();
        while (gr.next()) {
           groups.push(gr.group.sys_id);
        }
return 'sys_idIN' + groups;
    },

 

 

Please Accept the solution(s), if they are helpful!