Issue with list collector

Jakkamsetti Pra
Tera Contributor

Hi Team,

 

Here I'm having values in list collector, when I'm trying to update with new values it's getting update with one value.

 

Here we need to update for multiple values also but for multiple values, the first value is getting update with new value and the other values disappearing.

 

var count=0;
var gr = new GlideRecord('incident');
gr.addEncodedQuery('sys_id=ea98ba3cdb33c81004a55ce2ca96195a');
gr.query();
while (gr.next()){
var demotype = gr.getDisplayValue('demo_type');
var splitdemotype = [];
var splitdemotype = demotype.split(',');
gs.print(splitdemotype);
for (var i = 0; i<splitdemotype; i++){
if(splitdemotype[i].trim() == 'On Hold'){
gs.print('First loop');
gr.setValue('demo_type','03e31627975de950fea876d11153afda');
}
else if(splitdemotype[i].trim() == 'Externally Targetted'){
gs.print('second loop');
gr.setValue('demo_type','4b5e06dddb1eac107b6afe8b0c961916');
}
else if(splitdemotype[i].trim() == 'External – Hight'){
gs.print('third loop');
gr.setValue('demo_type','4b5e06dddb1eac107b6afe8b0c961916');
}
else if(splitdemotype[i].trim() == 'External Host'){
gs.print('fourth loop');
gr.setValue('demo_type','669752a7975de950fea876d11153afa6');
}
else if(splitdemotype[i].trim() == 'External Ramp'){
gs.print('fifth loop');
gr.setValue('demo_type','669752a7975de950fea876d11153afa6');
}
else if(splitdemotype[i].trim() == 'External Loop'){
gs.print('six loop');
gr.setValue('demo_type','669752a7975de950fea876d11153afa6');
}
gr.update();
count++;
}
}
gs.print('Total demo_type records updated are : ' + count);

 

Result : Executed First loop,third loop

 

2 ACCEPTED SOLUTIONS

Ankur Bawiskar
Tera Patron
Tera Patron

@Jakkamsetti Pra 

Few things to inform

1) use If and not while as you are querying with sysId hence you will get only 1 record in incident table

2) I have used array

use this and check once

var arr = [];
var gr = new GlideRecord('incident');
gr.addEncodedQuery('sys_id=ea98ba3cdb33c81004a55ce2ca96195a');
gr.query();
if (gr.next()){
	var demotype = gr.getDisplayValue('demo_type');
	var splitdemotype = demotype.split(',');
	gs.print(splitdemotype);
	for (var i = 0; i<splitdemotype; i++){
		if(splitdemotype[i].trim() == 'On Hold'){
			gs.print('First loop');
			arr.push('03e31627975de950fea876d11153afda');
		}
		else if(splitdemotype[i].trim() == 'Externally Targetted'){
			gs.print('second loop');
			arr.push('4b5e06dddb1eac107b6afe8b0c961916');
		}
		else if(splitdemotype[i].trim() == 'External – Hight'){
			gs.print('third loop');
			arr.push('4b5e06dddb1eac107b6afe8b0c961916');
		}
		else if(splitdemotype[i].trim() == 'External Host'){
			gs.print('fourth loop');
			arr.push('669752a7975de950fea876d11153afa6');
		}
		else if(splitdemotype[i].trim() == 'External Ramp'){
			gs.print('fifth loop');
			arr.push('669752a7975de950fea876d11153afa6');
		}
		else if(splitdemotype[i].trim() == 'External Loop'){
			gs.print('six loop');
			arr.push('669752a7975de950fea876d11153afa6');
		}
	}
	gr.demo_type = arr.toString();
	gr.update();
}

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

View solution in original post

Please replace

for (var i = 0; i<splitdemotype; i++){

with

for (var i = 0; i<splitdemotype.length; i++){

View solution in original post

14 REPLIES 14

@Ankur Bawiskar , yes they are correct.

 

Without update, if we are trying to print then the values are printing correctly.

 

While updating only single field is updating.

 

Hi Ankur,

 

I took where two values are there for demo_type. It prints two values.demo type.png

Please replace

for (var i = 0; i<splitdemotype; i++){

with

for (var i = 0; i<splitdemotype.length; i++){

Thank you @Jaspal Singh . It's worked now.

Thank you @Ankur Bawiskar . After keeping .length for below line. It's worked. Thank you so much on this. 

var i = 0; i<splitdemotype; i++)