- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 10:31 AM
Hello Everyone,
I want to populate all the assignment groups of user belong to in the catalog item.
variable - requested for - Sys user table
assignment groups - list collector - Sys user group table.
with logged in user I have got by using reference qualifier. Can anyone help me with the solution if I change requested for how can I get the list of assignment groups user is part of.
Thank you !! Your help is much appreciated!!
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 11:51 AM - edited 03-11-2024 12:12 PM
Hi @Dileep2 ,
You can achieve this via OnChange Client script and script include ,
Key Point :
1. assignment groups - list collector - sys_user_grmember table. (make it read only so that no can change it)
2. Create client callable si
3. Please change the backend name according to your requirement
OnChange:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var sysId = g_form.getValue('requested_for');
var ga = new GlideAjax('getRequestedForDetail');
ga.addParam('sysparm_name', 'getGroupDetail');
ga.addParam('sysparm_id', sysId);
ga.getXML(getResponse);
}
function getResponse(response) {
var ans = response.responseXML.documentElement.getAttribute('answer');
g_form.setValue('requested_for_assignment_group', ans);
}
}
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'
});
Please mark this comment as Correct Answer/Helpful if it helped you.
Regards,
Swathi Sarang
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 10:39 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 10:45 AM
Hi @Dileep2 ,
Please try below code in reference qualifier:
javascript: new Get_user_groups().getUserGroups(current.variables.requesting_for);
Also the group variable should refer to sys_user_group table
var Get_user_groups = Class.create();
Get_user_groups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserGroups: function(requestor) {
var groupArr = [];
var grmember = new GlideRecord('sys_user_grmember');
grmember.addQuery('user',requestor);
grmember.addQuery('group.active', true);
grmember.query();
while (grmember.next()) {
groupArr.push(grmember.group.toString());
}
return 'sys_idIN' + groupArr;
},
type: 'Get_user_groups'
});
If I could help you with your Query then, please hit the Thumb Icon and mark it as Correct !!
Thanks & Regards,
Sumanth Meda
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 11:51 AM - edited 03-11-2024 12:12 PM
Hi @Dileep2 ,
You can achieve this via OnChange Client script and script include ,
Key Point :
1. assignment groups - list collector - sys_user_grmember table. (make it read only so that no can change it)
2. Create client callable si
3. Please change the backend name according to your requirement
OnChange:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var sysId = g_form.getValue('requested_for');
var ga = new GlideAjax('getRequestedForDetail');
ga.addParam('sysparm_name', 'getGroupDetail');
ga.addParam('sysparm_id', sysId);
ga.getXML(getResponse);
}
function getResponse(response) {
var ans = response.responseXML.documentElement.getAttribute('answer');
g_form.setValue('requested_for_assignment_group', ans);
}
}
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'
});
Please mark this comment as Correct Answer/Helpful if it helped you.
Regards,
Swathi Sarang
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2024 08:50 PM
Thank you Swathi!! Worked like a gem!!