Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

getDisplayValue is not working on catalog client script

nomadie
Kilo Expert

I am running a catalog item with this code but I got thrown out by a javascript error on browser. Anyone can help would really appreciate.
End goal is that when requestor is part of the support_group, i can run setReadonly to couple of fields.

var userDisplay = g_form.getDisplayValue(assearch.requestor); 
var userGroup = g_form.getDisplayValue(assearch.support_group);
var getMembers = new GlideRecord('sys_user_grmember');
getMembers.addQuery('user',userDisplay);
getMembers.addQuery('group',userGroup);
getMembers.query();
if(!getMembers.next()) {
//return Yes;
}
(g_env) [SCRIPT:EXEC] Error while running Client Script 
"onChange of HW Asset": 
TypeError: Cannot read property 'requestor' of undefined
1 ACCEPTED SOLUTION

You can do below


//Check to see if assigned to is a member of selected group
var grpName = g_form.getDisplayBox(assearch.support_group).value;;
var usrID = g_form.getDisplayBox(assearch.requestor).value; 
var grp = new GlideRecord('sys_user_grmember');
grp.addQuery('group.name', grpName);
grp.addQuery('user', usrID);
grp.query(groupMemberCallback);
   
function groupMemberCallback(grp){
//If user is a member of selected group
    if(grp.next()){
        //Do something
        //alert('Is a member');
    }else{
        //alert('Is not a member');
        g_form.setReadOnly('field1',true);
        g_form.setReadOnly('field2',true);
    }
}

View solution in original post

12 REPLIES 12

Hi,

If requestor and support_group are String fields, below code works.

var user = g_form.getReference('assearch',readOnly);
function readOnly(user)
{
var userDisplay = user.requestor; 
var userGroup = user.support_group;

var getMembers = new GlideRecord('sys_user_grmember');
getMembers.addQuery('user',userDisplay);
getMembers.addQuery('group',userGroup);
getMembers.query();
if(!getMembers.next()) 
{
g_form.setReadOnly('field1',true);
g_form.setReadOnly('field2',true);
}
}

Mark the answer as Correct/Helpful based on its impact.

Thanks

 

nomadie
Kilo Expert

actually i tested getValue after posting this message and it work. now I am down with the condition.. 

what I really needed is that if requestor isn't a member of the support_group, variables will be set to readonly, else enable. however, both enabled the fields. anyone can assist?

Hi,

If requestor and support_group are String fields, below code works.

var user = g_form.getReference('assearch',readOnly);
function readOnly(user)
{
var userDisplay = user.requestor; 
var userGroup = user.support_group;

var getMembers = new GlideRecord('sys_user_grmember');
getMembers.addQuery('user',userDisplay);
getMembers.addQuery('group',userGroup);
getMembers.query();
if(!getMembers.next()) 
{
g_form.setReadOnly('field1',true);
g_form.setReadOnly('field2',true);
}
}

Mark the answer as Correct/Helpful based on its impact.

Thanks

the two fields are value from a reference table (sys_user and sys_user_group). If you could help.. im still new to sn scripting.

Hi,

Try with the below code and let me know the result.

var user = g_form.getReference('assearch',readOnly);
function readOnly(user)
{
var userDisplay = user.getReference('requestor'); 
var userGroup = user.getReference('support_group');

var getMembers = new GlideRecord('sys_user_grmember');
getMembers.addQuery('user',userDisplay.sys_id);
getMembers.addQuery('group',userGroup.sys_id);
getMembers.query();
if(!getMembers.next()) 
{
g_form.setReadOnly('field1',true);
g_form.setReadOnly('field2',true);
}
}

Mark the answer as Correct/Helpful based on its impact.

Thanks,

Chappidi Archana