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
Tera Sage

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