To hide field choice in reference field

RakshithaM
Tera Contributor

I have a requirement with respect to Service Catalog. Could someone please assist me with this.

 

There are 2 fields - Location and User, where both are reference fields.

When we select Location as India in Location field, in User field particular user must be not visible. (Example: Abel Tuter must not be visible when we select Location as India)

 

Thankyou.

3 ACCEPTED SOLUTIONS

Ankur Bawiskar
Tera Patron
Tera Patron

@RakshithaM 

what's your business requirement here?

you can use advanced reference qualifier on User variable

Do you want to remove only 1 user when Location is India?

OR

this is for other locations also

If only for 1 then do this

javascript: var query = ''; if(current.variables.location.name == 'India') query='sys_id!=AbelUserSysId'; query;

 If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

Juhi Poddar
Kilo Patron

Hello @RakshithaM 

I believe that for location field you are referring to core_country table and for user field you are referring to sys_user table .

Now when configuring the reference field for user add the reference qualifier as follows:

javascript:current.variables.location=="8938b7111b121100763d91eebc0713ec" ? "active=true^sys_id!=5137153cc611227c000bbd1bd8cd2005" : "active=true";

8938b7111b121100763d91eebc0713ec : sys_id of location (India) 

5137153cc611227c000bbd1bd8cd2005: sys_id of user(Eg: Abel Tutor)

Adding screenshot for better understanding:

JuhiPoddar_0-1735301842813.png

Note: Please adjust the sys_id as per your requirement.

Hope this Helps!

 

"If you found my answer helpful, please like and mark it as an "accepted solution". It helps future readers to locate the solution easily and supports the community!"

 

Thank You
Juhi Poddar

View solution in original post

@RakshithaM 

it should be combined as this

javascript: var query = ''; if(current.variables.location.name == 'India') query='sys_id!=27d3f35cc0a8000b001df42d019a418f'; query = query + '^nameINBlackberry,Bond trading'; query;

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

13 REPLIES 13

Hi @Juhi Poddar 

Thankyou, the above code is working as per requirement.

 

Regards,

Rak**bleep**ha

Hi @Juhi Poddar / @Ankur Bawiskar ,

 

Could you please let me know if there is any other approach in achieving the same requirement other than using Reference qualifier.

@RakshithaM

you can use onChange client script on user variable and check the value of location variable

If it's India then clear the value and inform user

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading) {
        return;
    }

    g_form.hideFieldMsg('user');
    if (newValue == "abelTuterSysId" && g_form.getValue('location') == 'indiaLocationSysId') {
        g_form.clearValue('user');
        g_form.showFieldMsg('user', 'You cannot select Abel tuter for India Location', "error");
    }
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hello @RakshithaM 

Without a reference qualifier, you can’t fully remove the user from the reference list, as it pulls data directly from the table. While methods like g_form.removeOption can hide options temporarily, this approach only works for dropdown-like fields and does not prevent users from being searched or selected in the reference field. A reference qualifier is the best way to filter users at the database level.

Hope this helps!

 

Thank You

Juhi Poddar