gr.update() not updating all records

Anubhuti
Tera Expert

Hi All,

I am trying to update the work notes of multiple task records, but only one record is getting updated.

Below is the script I am using:

var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

When running it as background script, I am getting the below mentioned error and when I am removing gr.update() i am not getting any error:

Cannot find function getLocation in object com.glide.script.fencing.ScopedUser@@@@@@
Has anybody experienced similar issue?

1 ACCEPTED SOLUTION

Anubhuti
Tera Expert

Hi All,

 

Thanks for your response.

As only one record was getting updated, at first I stored all the sysid in one array and then updated the work notes in another for loop and its working fine.

var arr =[];
var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
arr.push(gr.sys_id.toString());
}

for(var i =0; i<arr.length; i++){
var gr = new GlideRecord('tablename');
gr.addQuery('sys_id',arr[i].toString());
gr.query();
if(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

View solution in original post

13 REPLIES 13

Ashutosh Munot1
Kilo Patron
Kilo Patron

HI,

Use below code:

var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
gr.work_notes = "comments";

gr.setWorkflow(false);
gr.update();
}
}


From wherever you run script the BR will trigger on that tables. So use setWorkflow(false);


Thanks,
Ashutosh

Anubhuti
Tera Expert

Hi All,

 

Thanks for your response.

As only one record was getting updated, at first I stored all the sysid in one array and then updated the work notes in another for loop and its working fine.

var arr =[];
var gr = new GlideRecord('tablename');
gr.addQuery('parent',current.sys_id);
gr.addEncodedQuery('stateNOT IN3,7');
gr.query();
while(gr.next()) {
arr.push(gr.sys_id.toString());
}

for(var i =0; i<arr.length; i++){
var gr = new GlideRecord('tablename');
gr.addQuery('sys_id',arr[i].toString());
gr.query();
if(gr.next()) {
gr.work_notes = "comments";
gr.update();
}
}

Just a sidenode

That is far from recommended duo to performance impact.

Why dont you try to figure out whats wrong ?
What happens if you update another field on multiple records at a time ? Does that work ?
You can easily test it from the list first. - if it works try through the script you created

 

Yes, I agree this is not recommended and may impact performance as well but I tried everything possible.

As soon as I add gr.update() error occurs.

One of the reason could be that I am working in a scoped application.

That is why I asked if anyone is aware of the error I got.

I will try to find out the cause for the error ,this is just a temporary fix.

If anyone get to know about the same please update all of us.