
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 10-31-2020 02:33 PM
Recently came across a limitation of MRVS multi-row variable set that it cannot access the form variables. Meaning if you have a Catalog item form with 'Requested For' variable and an MRVS multi-row variable set, and would like to have the requested_for field value to be carried forward to MRVS scope, it's not possible and that creates limitation for scripting, setting filter criteria for your MRVS variables. Most of you who have worked with MRVS and tried to fetch the values from the form will be able relate better:
I found the answer in using the browser session for storing catalog form values and retrieving them on your MRVS:
//Store the value in the session storage:
sessionStorage.setItem("requested_for", ""+g_form.getValue('requested_for'));
//Retrieving the session value
var req_for = sessionStorage.getItem("requested_for");
Let's get into details of our use case about 'Requested For' and accessing its value in the 'MRVS'. I have attached the updateset for the explanation below.
After you created the catalog item, variable(requested_for), and the MRVS variable set, start with the below:
- Step1: Write a Catalog Client Script to store value onChange
-
- Name: Store Value req_for (onChange)
- UI Type: All
- Type: OnChange
- Applies to: A Catalog item
- Catalog item: <Your catalog item name>
- Variable name: requested_for
- Script:
function onChange(control, oldValue, newValue, isLoading) { if (isLoading || newValue == '') { return; } if (typeof(Storage) !== "undefined") { sessionStorage.setItem("requested_for", ""+g_form.getValue('requested_for')); } else { alert("Sorry, your browser does not support Web Storage..."); } }
- Step2: Write another Catalog Client Script to store value onLoad
-
- Name: Store Value req_for (onLoad)
- UI Type: All
- Type: OnLoad
- Applies to: A Catalog item
- Catalog item: <Your catalog item name>
- Script:
function onLoad() { if (typeof(Storage) !== "undefined") { sessionStorage.setItem("requested_for", ""+g_form.getValue('requested_for')); } else { alert("Sorry, your browser does not support Web Storage..."); } }
- Step 3:Write one last Catalog Client Script to Retrieve value onLoad
-
- Name: Retrieve Value req_for (onLoad)
- UI Type: All
- Type: OnLoad
- Applies to: A Variable Set
- Variable Set: <Your MRVS name>
- Script:
//Your MRVS should have a variable named 'tb_requested_for', and the value will appearfunction onLoad() { var req_for = sessionStorage.getItem("requested_for"); g_form.setValue('tb_requested_for',req_for); }
The above example shows you how to store value from the form and then retrieve it on the MRVS page, you can save multiple form values and retrieve them in MRVS, Once you retrieve these values on the MRVS, you will be able to use it for MRVS.variables filter criteria, or for multiple other reasons.
If you find this article helpful. Please comment and hit like.
HAPPY SCRIPTING!!!
- 22,119 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This has helped me. Thanks
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
great little solution! Do you have any idea what limitations the browser session method might have?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi kevclark,
Glad the solution helped you and thanks for marking it helpful.
About the session storage limitation, few that are top of my mind are:
- Its like cache memory, The data is deleted when the user closes the specific browser tab. But that should not affect in most cases, as with the tab closure, the form data also is lost and has to be refilled
- I have not tested with the 'same browser, multiple tabs' working on the same form.
Thanks,
Ashish
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi All,
I want to display table on Service Catalog. I have tried using Multi-Row variable Set. By default MRVS Order is 100 then it is visible on form, but the MRVS has to visible in middle of service catalog form. So I have changed order number of MRVS variable set then it is not visible on form. Can any one help me out with this problem.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Not sure if you have already got the solution, but if it helps, just number the MRVS in sequence where you want it. For example if you want it between variables with order 100 and 300, make your variable set order as 200.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Will this solution work on the Now Mobile app?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hello all, are there any ways to store variables in session using NowMobile app?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hello all, are there any ways to store variables in session using NowMobile app?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Ashish , this helped me a lot to populate info into MRVS variable from outside, i tried to apply reference qualifiers using this field , but it is not working . please let me know can we apply reference qualifiers in MRVS ?
Thank you,
Shabbir
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Starting Quebec, you can now use the g_service_catalog API which is available in all environments, such as, Service Portal, Now Platform, Workspace, and Now® Mobile
https://developer.servicenow.com/dev.do#!/reference/api/rome/client/g_service_catalogClientAPI#g_service_catalog-getValue_S?navFilter=g_service_catalog
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Starting Quebec, you can now use the g_service_catalog API which is available in all environments, such as, Service Portal, Now Platform, Workspace, and Now® Mobile
https://developer.servicenow.com/dev.do#!/reference/api/rome/client/g_service_catalogClientAPI#g_service_catalog-getValue_S?navFilter=g_service_catalog

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
A MRVS Cannot Appear in a Form Section, so if you moved it into a position which would force it into a Form Section, that would cause it to disappear.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi, I have a it different scenario. I have cost in the MRVS where we add cost as per rows. I want to add the cost and populate in other variable whenever a new row is added with cost.
As you can see 100 + 300 should populate in Total cost.
Lets suppose if I add new row with cost 200 then it should automatically calculate 100+300+200 and show it in Total cost. Is it possible?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
It is helped me lot.
It is working in legacy but not in user portal.
Can u help me on this.
Best Regards,
Shaik Nabi Khaja.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Did you find a good solution to this?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Thanks Ashish for this Solution. It is really helpful.
I just want to know is there any way to access MRVS variables value in the main form??
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Mentioned solution works well. Since the post is from 2020, I would suggest an alternative solution using g_service_catalog - getValue(String variableName).
Official documentation can be found here
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
One of the ways of doing this can be:
Write a onload client script on the multi row variable set.
Use the method g_service_catalog.parent.getValue("main_form_variable_name");
Please note you will have to create a hidden variable on the mrvs for storing the value
For example, if there is field on the main form which has a name technology.
You want to get the value of the supplier field on mrvs to do any kind of operations.
you can write below on load client script in mrvs.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
this is not working iam getting a javascript error in console. with the 3rd script