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

@pk2184046 

so what's your requirement?

Responsibility + Security Role should be unique?

Same combination should not be selected again?

If yes then this link has solution for you

How to stop duplicates entering in MRVS based on MRVS Variables(Applies Catalog item/ServicePortal) 

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

Hi Ankur,

I have tried that as well it throwing javascript error in your console like that

@pk2184046 

in the script present in the link update this line

    var multiRow = JSON.parse(g_service_catalog.parent.getValue("your_variable_set_here")); //This is the multirow that has already been submitted

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