- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-26-2023 06:30 AM
Hi,
i have created a ui action LIST CHOICE type and a UI page.
In the list of records can selecte multiple records in the list view and click on the UI action so that ui page will open. Inside ui page i have created a reference field which refere to user table.
Current condition
<g:ui_reference name="new_user_id" query="active=true^employee_numberISNOTEMPTY" id="new_user_id" table="sys_user" mandatory="true"/>
But i need to see users only users who are part of selected record assignment groups. How can i put this.
Kindly help me
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 06:24 AM
try this
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<style>
.required:before {
content:"* ";
color: red;
}
</style>
<g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_id"/>
<g:ui_form>
<input type="hidden" name="selected_record_sysId" value="${sysparm_id}"/>
<p class="required">Please select user to assign selected records</p>
<g:ui_reference name="new_user_id" query="${jvar_users}" id="new_user_id" table="sys_user" mandatory="true^active=true"/>
<br>
</br>
<br>
</br>
<g:dialog_buttons_ok_cancel ok="return validateForm()" cancel="return onCancel()"/>
</g:ui_form>
<g:evaluate var="jvar_users">
var selected_record_sysId = jelly.jvar_sysId;
gs.info("line number 24 group ids--"+selected_record_sysId);
var groupIDS = [];
var recordgroups = new GlideRecord('x_thimi_fin_srvc_request');
recordgroups.addEncodedQuery("sys_idIN"+selected_record_sysId);
recordgroups.query();
while(recordgroups.next()){
groupIDS.push(recordgroups.getValue(assignment_group));
}
var ug = new GlideRecord('sys_user_grmember');
ug.addEncodedQuery("groupIN" + groupIDS);
ug.query();
var list = []; // create an array of user IDs
while (ug.next()) {
list.push(ug.getValue('user')); // add record's user to list as a member of that group
}
list.toString();
</g:evaluate>
</j:jelly>
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 01:01 AM
Hi Ankur,
Kindly please find my UI action and suggest what need to be modified
function assignTo() {
var selSysIds = g_list.getChecked();
alert('testtest '+selSysIds);
var gm = new GlideModal('assign_to');
gm.setTitle("assign to");
gm.setPreference("sysparm_id", selSysIds);
//gm.setPreference("sysparm_grp_id", getGrpName(selSysIds));
gm.render();
}
function getGrpName(selSysIds) {
var assignmentGroups = [];
var gr = new GlideRecord("x_thimi_fin_srvc_ar_request");
gr.addEncodedQuery("sys_idIN" + selSysIds);
gr.query();
while (gr.next()) {
assignmentGroups.push(gr.assignment_group);
}
return assignmentGroups;
}
Ui Page script
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<style>
.required:before {
content:"* ";
color: red;
}
</style>
<g:evaluate var="jvar_assignment_group"
expression="RP.getWindowProperties().get('assignment_group')" />
<g:evaluate var="jvar_users">
<input type="hidden" name="group_sysIds" value="${sysparm_grp_id}"/>
gs.info('test line 15=='+${jvar_assignment_group});
var ug = new GlideRecord('sys_user_grmember');
ug.addQuery('group', group_sysIds); // use your jelly variable here for the group to filter
ug.query();
var list = []; // create an array of user IDs
while (ug.next()) {
list.push(ug.getValue('user')); // add record's user to list as a member of that group
}
gs.info('print list of users==='+list);
var users = list.join(','); // create comma separated values
users; // save it to jvar_users
</g:evaluate>
<g:ui_form>
<input type="hidden" name="user_sysId" value="${sysparm_id}"/>
<p class="required">Please select user to assign selected records</p>
<g:ui_reference name="new_user_id" id="new_user_id" table="sys_user" query="sys_idIN${jvar_users}"/>
<br>
</br>
<br>
</br>
<g:dialog_buttons_ok_cancel ok="return validateForm()" cancel="return onCancel()"/>
</g:ui_form>
</j:jelly>
Ui Page Processing script
(function () {
var appGr = new GlideRecord('x_thimi_fin_srvc_ar_request');
appGr.addEncodedQuery("sys_idIN"+user_sysId);
appGr.query();
while(appGr.next()){
appGr.assigned_to = new_user_id;
appGr.update();
}
response.sendRedirect(gs.getUrlOnStack());
}());
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 01:23 AM
Hi Ankur,
Please find the below UI action script and Ui page processing script. Kindly suggest me where i need to modify.
UI action script::::::::::
function assignTo() {
var selSysIds = g_list.getChecked();
alert('testtest '+selSysIds);
var gm = new GlideModal('assign_to');
gm.setTitle("assign to");
gm.setPreference("sysparm_id", selSysIds);
//gm.setPreference("sysparm_grp_id", getGrpName(selSysIds));
gm.render();
}
function getGrpName(selSysIds) {
var assignmentGroups = [];
var gr = new GlideRecord("x_thimi_fin_srvc_ar_request");
gr.addEncodedQuery("sys_idIN" + selSysIds);
gr.query();
while (gr.next()) {
assignmentGroups.push(gr.assignment_group);
}
return assignmentGroups;
}
UI PAGE HTML script:::::::::::::::::::::::::::
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<style>
.required:before {
content:"* ";
color: red;
}
</style>
<g:evaluate var="jvar_assignment_group"
expression="RP.getWindowProperties().get('assignment_group')" />
<g:evaluate var="jvar_users">
<input type="hidden" name="group_sysIds" value="${sysparm_grp_id}"/>
gs.info('test line 15=='+${jvar_assignment_group});
var ug = new GlideRecord('sys_user_grmember');
ug.addQuery('group', group_sysIds); // use your jelly variable here for the group to filter
ug.query();
var list = []; // create an array of user IDs
while (ug.next()) {
list.push(ug.getValue('user')); // add record's user to list as a member of that group
}
gs.info('print list of users==='+list);
var users = list.join(','); // create comma separated values
users; // save it to jvar_users
</g:evaluate>
<g:ui_form>
<input type="hidden" name="user_sysId" value="${sysparm_id}"/>
<p class="required">Please select user to assign selected records</p>
<g:ui_reference name="new_user_id" id="new_user_id" table="sys_user" query="sys_idIN${jvar_users}"/>
<br>
</br>
<br>
</br>
<g:dialog_buttons_ok_cancel ok="return validateForm()" cancel="return onCancel()"/>
</g:ui_form>
</j:jelly>
UI PAGE PROCESSING SCRIPT::::::
(function () {
var appGr = new GlideRecord('x_thimi_fin_srvc_ar_request');
appGr.addEncodedQuery("sys_idIN"+user_sysId);
appGr.query();
while(appGr.next()){
appGr.assigned_to = new_user_id;
appGr.update();
}
response.sendRedirect(gs.getUrlOnStack());
}());
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 01:36 AM
you are already doing something in g:evaluate for gliderecord
is that not working?
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 02:05 AM
Hi Ankur,
No Ankur it is not working. and I did not create any script include.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-29-2023 02:19 AM
And also i kept my UI action as client callable.