Add a new row to multi row variable set using Business Rule

Hardik Panchal
Mega Guru

Hello All,

I have a requirement where after an RITM is inserted, we need to Remove all the rows from mrvs and add a new row based on the new values.

I'm able to remove/clear mrvs rows, but not able to update the values within mrvs.

Please help

Below is my business rule:

find_real_file.png

(function executeRule(current, previous /*null when async*/ ) {
var varrowsInt = current.variables.assets_assigned_to_you.getRowCount();
	var mrvs = JSON.parse(current.variables.assets_assigned_to_you);
	for (var k = 0; k < varrowsInt; k++) {
		var grvarvalue = new GlideRecord('sc_req_item');
		grvarvalue.addQuery('request', current.request);
		grvarvalue.addQuery('description=NULL');
		grvarvalue.query();

		if (grvarvalue.next()) {

			grvarvalue.description = "For Asset Serial number : " + current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned;
			grvarvalue.variables.assets_assigned_to_you = '';
			grvarvalue.variables.assets_assigned_to_you.addRow();
			var mrvsJson = {
				"u_em_serial_number_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned,
				"u_em_asset_tag_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_asset_tag_assigned,
			};
			grvarvalue.assets_assigned_to_you = JSON.stringify(mrvsJson);
			//grvarvalue.setWorkflow(false);
			grvarvalue.update();
		}
	}

})(current, previous);
1 ACCEPTED SOLUTION

Murthy Ch
Giga Sage

Hi @Hardik Panchal 

Almost you are correct. Update like below:

(function executeRule(current, previous /*null when async*/ ) {
var varrowsInt = current.variables.assets_assigned_to_you.getRowCount();
	var mrvs = JSON.parse(current.variables.assets_assigned_to_you);
	for (var k = 0; k < varrowsInt; k++) {
		var grvarvalue = new GlideRecord('sc_req_item');
		grvarvalue.addQuery('request', current.request);
		grvarvalue.addQuery('description=NULL');
		grvarvalue.query();

		if (grvarvalue.next()) {

			grvarvalue.description = "For Asset Serial number : " + current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned;
			grvarvalue.variables.assets_assigned_to_you = '';
			//grvarvalue.variables.assets_assigned_to_you.addRow();
			var mrvsJson = [{  //changed here...
				"u_em_serial_number_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned,
				"u_em_asset_tag_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_asset_tag_assigned,
			}];  //changed here...
			grvarvalue.variables.assets_assigned_to_you = JSON.stringify(mrvsJson);  //updated here
			//grvarvalue.setWorkflow(false);
			grvarvalue.update();
		}
	}

})(current, previous);

AS MRVS is stored in array JSON we have use like array format.

 

Thanks,

Murthy

Thanks,
Murthy

View solution in original post

2 REPLIES 2

Murthy Ch
Giga Sage

Hi @Hardik Panchal 

Almost you are correct. Update like below:

(function executeRule(current, previous /*null when async*/ ) {
var varrowsInt = current.variables.assets_assigned_to_you.getRowCount();
	var mrvs = JSON.parse(current.variables.assets_assigned_to_you);
	for (var k = 0; k < varrowsInt; k++) {
		var grvarvalue = new GlideRecord('sc_req_item');
		grvarvalue.addQuery('request', current.request);
		grvarvalue.addQuery('description=NULL');
		grvarvalue.query();

		if (grvarvalue.next()) {

			grvarvalue.description = "For Asset Serial number : " + current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned;
			grvarvalue.variables.assets_assigned_to_you = '';
			//grvarvalue.variables.assets_assigned_to_you.addRow();
			var mrvsJson = [{  //changed here...
				"u_em_serial_number_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_serial_number_assigned,
				"u_em_asset_tag_assigned": current.variables.assets_assigned_to_you.getRow(k).u_em_asset_tag_assigned,
			}];  //changed here...
			grvarvalue.variables.assets_assigned_to_you = JSON.stringify(mrvsJson);  //updated here
			//grvarvalue.setWorkflow(false);
			grvarvalue.update();
		}
	}

})(current, previous);

AS MRVS is stored in array JSON we have use like array format.

 

Thanks,

Murthy

Thanks,
Murthy

Thanks Murthy Chintalapudi for your reply.

It worked well!!!