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.

Multi row variable set dupicate restriction

pk2184046
Tera Expert

Hi there, 

I have a multi row variable set having two variables. here is don't want users to select the same option twice below is the code I was trying but it is not working and throwing javascript error in you console.

 

function onSubmit() {
    var mrvs =parent.g_form.getValue("additional_responsibilities_and_security_roles"); //name of the multi row variable set

       var arr = JSON.parse(mrvs);

   
    var res = g_form.getValue("responsibility_add");  // name of the variable1
    var sec = g_form.getValue("security_role_add");  //name of the variable2
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].responsibility_add == res && arr[i].security_role_add==sec ) {
            return false;
        }
    }
    return true;
}
 
 
 
Additionally tried in place of parent.getvalue just getvalues same result 
2 ACCEPTED SOLUTIONS

Robert H
Mega Sage

Hello @pk2184046 ,

 

Please use this onSubmit script on your Variable Set:

function onSubmit() {

    var mrvs = g_service_catalog.parent.getValue("additional_responsibilities_and_security_roles");
    if (!mrvs) return true;
    var arr = JSON.parse(mrvs);

    var res = g_form.getValue("responsibility_add");
    var sec = g_form.getValue("security_role_add");
    var duplicate = arr.some(row =>
        row.responsibility_add === res &&
        row.security_role_add === sec);

    if (duplicate) {
		g_form.addErrorMessage('Row with same values already present.');
		return false;
	}

}

 

Regards,

Robert

View solution in original post

Hello @pk2184046 ,

 

Glad to hear that.

The issue was that, in order to access the parent form, you need to use

g_service_catalog.parent

instead of

parent.g_form

 

There are many old scripts floating around with the latter code, but that doesn't work in Service Portal / Employee Center.

 

Regards,

Robert

View solution in original post

12 REPLIES 12

J Siva
Kilo Patron
Kilo Patron

Hi @pk2184046 
Could you share the pic of your MRVS & it's configuration?

Regards,
Siva

Hi Siva,

Please see the attached screenshotScreenshot 2025-04-28 160858.png

Robert H
Mega Sage

Hello @pk2184046 ,

 

Please use this onSubmit script on your Variable Set:

function onSubmit() {

    var mrvs = g_service_catalog.parent.getValue("additional_responsibilities_and_security_roles");
    if (!mrvs) return true;
    var arr = JSON.parse(mrvs);

    var res = g_form.getValue("responsibility_add");
    var sec = g_form.getValue("security_role_add");
    var duplicate = arr.some(row =>
        row.responsibility_add === res &&
        row.security_role_add === sec);

    if (duplicate) {
		g_form.addErrorMessage('Row with same values already present.');
		return false;
	}

}

 

Regards,

Robert

Hi Robert ,

I have tried the above code it's throwing the error and not working

pk2184046_0-1745837332861.png