How to insert new record while reference another record using background script?

Vijay Kumar21
Tera Contributor

Hi Team,

We are trying to insert a new record in table 1 using background script, This new record needs to be referenced with another table (table 2). 

The issue is new record is getting created but the reference field is empty.

 

var order = "3243211";
 var net = new GlideRecord('table1'); 
 net.addQuery('id', "21"); 
 net.query(); 
 while (net.next()){ 
 var netInfoID = net.number; 
 var gr = new GlideRecord('table2'); 
 gr.initialize();
 gr.order_id = order; 
 gr.network_info = netInfoID; 
 gr.network.setDisplayValue(netInfoID); 
 gr.setWorkflow(false); 
 gr.insert(); 
 }

 

find_real_file.png

1 ACCEPTED SOLUTION

Mahendra RC
Mega Sage

Hello Vijay,

I updated the code I misinterpreted your requirement initially

You can use the above code from @suvro or can use the below script. Always use getValue() and setValue() to get and set value it is a best practice:

(function () {
	var orderNo = "3243211";
	var tableGR = new GlideRecord('table'); 
	tableGR.addQuery("id", "21"); 
	tableGR.query(); 
	while (tableGR.next()){ 
	var netNumber = tableGR.getValue("number");
	
	var table2GR = new GlideRecord('table2'); 
	table2GR.initialize();
	table2GR.setValue("order_id", orderNo); 
	table2GR.setValue("network_info", netNumber); 
	table2GR.network.setDisplayValue(netNumber); 
	table2GR.setWorkflow(false); 
	var recordGuid = table2GR.insert(); 
	if (recordGuid) {
		tableGR.setValue("<reference_Field_name>", recordGuid);
		tableGR.update()
	}
 }
})();

You can also try below code:

(function () {
	var orderNo = "3243211";
	var tableGR = new GlideRecord('table'); 
	tableGR.addQuery("id", "21"); 
	tableGR.query(); 
	while (tableGR.next()){ 
	var netNumber = tableGR.getValue("number");
	var netGuid = tableGR.getUniqueValue();
	
	var table2GR = new GlideRecord('table2'); 
	table2GR.initialize();
	table2GR.setValue("order_id", orderNo); 
	table2GR.setValue("network_info", netNumber); 
	table2GR.setValue("network", netGuid); 
	table2GR.setWorkflow(false); 
	var recordGuid = table2GR.insert(); 
	if (recordGuid) {
		tableGR.setValue("<reference_Field_name>", recordGuid);
		tableGR.update()
	}
 }
})();

Please mark my respsone as helpful/correct, if it answer your question.

Thanks

 

View solution in original post

2 REPLIES 2

suvro
Mega Sage
Mega Sage

use below

var order = "3243211";
 var net = new GlideRecord('table1'); 
 net.addQuery('id', "21"); 
 net.query(); 
 while (net.next()){ 
 var netInfoID = net.number; 
 var gr = new GlideRecord('table2'); 
 gr.initialize();
 gr.order_id = order; 
 gr.network_info = netInfoID; 
 gr.network.setDisplayValue(netInfoID); 
 gr.setWorkflow(false); 
 net.<reference_field_name> = gr.insert(); 

net.update();
 }

Mahendra RC
Mega Sage

Hello Vijay,

I updated the code I misinterpreted your requirement initially

You can use the above code from @suvro or can use the below script. Always use getValue() and setValue() to get and set value it is a best practice:

(function () {
	var orderNo = "3243211";
	var tableGR = new GlideRecord('table'); 
	tableGR.addQuery("id", "21"); 
	tableGR.query(); 
	while (tableGR.next()){ 
	var netNumber = tableGR.getValue("number");
	
	var table2GR = new GlideRecord('table2'); 
	table2GR.initialize();
	table2GR.setValue("order_id", orderNo); 
	table2GR.setValue("network_info", netNumber); 
	table2GR.network.setDisplayValue(netNumber); 
	table2GR.setWorkflow(false); 
	var recordGuid = table2GR.insert(); 
	if (recordGuid) {
		tableGR.setValue("<reference_Field_name>", recordGuid);
		tableGR.update()
	}
 }
})();

You can also try below code:

(function () {
	var orderNo = "3243211";
	var tableGR = new GlideRecord('table'); 
	tableGR.addQuery("id", "21"); 
	tableGR.query(); 
	while (tableGR.next()){ 
	var netNumber = tableGR.getValue("number");
	var netGuid = tableGR.getUniqueValue();
	
	var table2GR = new GlideRecord('table2'); 
	table2GR.initialize();
	table2GR.setValue("order_id", orderNo); 
	table2GR.setValue("network_info", netNumber); 
	table2GR.setValue("network", netGuid); 
	table2GR.setWorkflow(false); 
	var recordGuid = table2GR.insert(); 
	if (recordGuid) {
		tableGR.setValue("<reference_Field_name>", recordGuid);
		tableGR.update()
	}
 }
})();

Please mark my respsone as helpful/correct, if it answer your question.

Thanks