Force g_modal field reference query in Agent Workspace UI Action

Zach3
Tera Guru

Hello --

Anyone have any luck forcing an Agent Workspace client script reference field query to work? I'm building a custom UI action ("Change Assignment") which is nearly working -- it gives the user a list of ALL assignment groups, instead of respecting the dynamic query ("userDYNAMIC90d1921e5f510100a9ad2572f2b477fe").

 

I'm a bit stuck; I found many similar threads in recent years but no clear answers, so I'd be curious if anyone has a fresh perspective. Thanks!

 

Workspace Client Script:

 

 

function onClick(g_form) {

    var fields = [{
            type: 'reference',
            name: 'assignment_group',
            label: getMessage('Please select one of your current assignment groups. The case will be automatically assigned to you after clicking OK.'),
            mandatory: true,
            reference: 'sys_user_grmember',
			query: "userDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
            referringTable: 'sn_hr_core_case',
            referringRecordId: g_form.getUniqueValue()
        }
    ];

    g_modal.showFields({
        title: "Change Case Assignment",
        fields: fields,
        size: 'lg'
    }).then(function(fieldValues) {
        g_form.setValue('assignment_group', fieldValues.updatedFields[0].value);
        g_form.save();
    });
}

 

5 REPLIES 5

Sarika S Nair1
Kilo Sage

Hi @Zach3  ,

if you want to create a reference field with query , then you need to create a UI page and call that in the g_modal.

 

Please try that way.

  

Thanks, Sarika. I've tried the UI page route and can call it via g_modal, but the primary issue seems to be building and passing the group/group member variables. 

 

Here are the opening lines of the UI page HTML:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

<g:ui_form id="change_assignment_dialog">
		<j:set var="jvar_sys_id" value="${sysparm_sys_id}" />
		<j:set var="jvar_table_name" value="${sysparm_table_name}" />
		<j:set var="jvar_sysparm_user_id" value="${sysparm_user_id}" />
		<j:set var="jvar_sysparm_user_fullname" value="${sysparm_user_fullname}" />
		<j:set var="jvar_sysparm_assignment_group" value="${sysparm_assignment_group}" />

		<g2:evaluate var="jvar_groups" object="true" jelly="true">>
			var ug = new GlideRecord('sys_user_grmember');
			ug.addQuery('user', "${jvar_sysparm_user_id}"); // use your jelly variable here for the group to filter
			ug.query();
			var list = []; // create an array of group IDs

			while (ug.next()) {
			list.push(ug.getValue('group')); // add record's group to list
			}

			var groups = list.join(','); // create comma separated values
			groups;   // save it to jvar_groups
	</g2:evaluate>

[...]

Sarika S Nair1
Kilo Sage

Hi @Zach3 , you can use gs.getUserID() in g:evaluate instead of passing variable.

var ug = new GlideRecord('sys_user_grmember');
			ug.addQuery('user', gs.getUserID()); // use your jelly variable here for the group to filter
			ug.query();
			var list = []; // create an array of group IDs

			while (ug.next()) {
			list.push(ug.getValue('group')); // add record's group to list
			}

			var groups = list.toString(); // create coma separated string of group sysids
			groups;   // save it to jvar_groups

If you are passing other parameters the you can use below syntax in g_modal. 

g_modal.showFrame({
title: Change Assignment,
url: '/<uipagename.do?sysparm_sys_id='+g_form.getUniqueValue()+'&sysparm_table_name='+<tablename>'+'&sysparm_user_id='+<userid>+'&sysparm_assignment_group='+'<assignmentgroup>',
size:'lg'
});

Pearl Vina Pila
Tera Contributor

were you able to figure how to pass the values from ui page to client script?