We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to change referenced tables on one reference field based on other dropdown values.

aastha3
Giga Contributor

I have a requirement where I have three variables   in service catalog

1. CI Type(select box) -> VM , Linux , ESX, JBOSS

2. CI Name (reference field)

3. Sys ID (single line text)

Now I want that whenever the CI type is changing the referenced table in CI Name   should change accordingly with their respective tables.

like for vm ->cmdb_ci_vm similarly for others as well.

My end result is to fetch selected ci name's sys id .

For changing reference field script include and onchange client script will be required .

for sysid fetch also onchange or onsubmit script will be required   . Not sure about this

Please help me with the correct code for my requirement .

Let me know if you need any further information.

1 ACCEPTED SOLUTION

Please replace-


var type=current.u_type;



with


var type=current.variables.u_type;



It should work now. Best of luck.


View solution in original post

26 REPLIES 26

Here is your code-


Write an onchange catalog client script-


Variable name - sys_id



function onChange(control, oldValue, newValue, isLoading) {


    if (isLoading || newValue == '') {


          return;


    }


g_form.setValue('sys_id',newValue);


   


}



Please mark all of my replies Helpful. and let me know whether this code solves your purpose or not...


Yes worked but I used variable CI name then it worked .



Thanks a lot for your help and quick response .


Manoj Kumar16
Giga Guru

Yes the variable name would have been CI name... You are welcome.....


Output of CI Name is coming as sys id instead of name . Any idea why this is happening ? I wrote soap script in workflow and tried to print output of ci_name field.


Is there some other procedure to fetch value when its a reference field ?


Manoj Kumar16
Giga Guru

Wherever you are using the variable ci_name you need to metion it as ci_name.name; or ci_name.displayValue(); that will give you the name instead of sys id