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

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);
    }
}

Dubz
Mega Sage

try this:

 

var userDisplay = g_form.getDisplayBox(assearch.requestor).value; 

actually just re-read your requirement, the fields on the sys_user_grmember table are reference fields so they need a sys_id, so getValue will be fine. You need to list the field name in quotation marks.

 

var userDisplay = g_form.getValue('assearch.requestor'); 
var userGroup = g_form.getValue('assearch.support_group');

var getMembers = new GlideRecord('sys_user_grmember');
getMembers.addQuery('user',userDisplay);
getMembers.addQuery('group',userGroup);
getMembers.query(callBackFunction);

function callBackFunction(getMembers){
if(getMembers.hasNext()){
g_form.setReadOnly('field_name');
}