Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Background script - query table and update record on second table

kylem1
Tera Guru

Looking for help with the following background script. Query sys_user table where company record is not empty. Then, query core_company table and update the associated user company record notes field with "active". 

 

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();
while (grUser.next()) {
if ((!grUser.company.nil())) {
var grCompany = new GlideRecord("core_company");
grCompany.addQuery('name',grCompany.name);
grCompany.addQuery('notes','DOES NOT CONTAIN','active');
if (grCompany.next()){
grCompany.notes = "active";
grCompany.update();
}
}
}

 

1 ACCEPTED SOLUTION

This is what I ended up using. Thank you all for your help!

 

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();

while (grUser.next()) {
   var grCompany = new GlideRecord("core_company");
   grCompany.addQuery('name',grUser.company.name);
   grCompany.addEncodedQuery("notes!=active^ORnotes=NULL");
   //grCompany.setLimit(1);
   grCompany.query();

   if (grCompany.next()){
      gs.log(grCompany.name);
      grCompany.notes = "active";
      grCompany.update();
   }

}

View solution in original post

9 REPLIES 9

sachin_namjoshi
Mega Patron

use below code

 

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();
while (grUser.next()) {

var grCompany = new GlideRecord("core_company");
grCompany.addQuery('name',grUser.name);
grCompany.addQuery('notes','DOES NOT CONTAIN','active');
if (grCompany.next()){
grCompany.notes = "active";
grCompany.update();
}
}
}

MrMuhammad
Giga Sage

There are couple of issues that needs fix. 

 

Replace below

grCompany.addQuery('name',grCompany.name);

with

grCompany.addQuery('name',grUser.name);

 

Below line is missing 

grCompany.query();

 

UPDATED CODE HERE

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();

while (grUser.next()) {

   var grCompany = new GlideRecord("core_company");
   grCompany.addQuery('name',grCompany.name);
   grCompany.addQuery('notes','DOES NOT CONTAIN','active');
   grCompany.setLimit(1);
   grCompany.query();

   if (grCompany.next()){
      grCompany.notes = "active";
      grCompany.update();
   }

}

 

Thanks & Regards,

Sharjeel

Regards,
Muhammad

Still not updating the company record. I added a gs.log line below the while statement when is correctly logging the company referenced for the user. However, there is no update to the notes field on the company record. Adding a log to the last if statement does not produce output so I do not believe I am making it past the grCompany query. 

 

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();

while (grUser.next()) {
   gs.log(grUser.company.name);
   var grCompany = new GlideRecord("core_company");
   grCompany.addQuery('name',grUser.company.name);
   grCompany.addQuery('notes','DOES NOT CONTAIN','active');
   grCompany.setLimit(1);
   grCompany.query();

   if (grCompany.next()){
      grCompany.notes = "active";
      grCompany.update();
   }

}

Hi,

Try below updated working code,

 

var grUser = new GlideRecord("sys_user");
grUser.addEncodedQuery("companyISNOTEMPTY");
grUser.query();

while (grUser.next()) {
gs.log(grUser.company.name);
var grCompany = new GlideRecord("core_company");
grCompany.addQuery('name',grUser.company.name);
grCompany.addEncodedQuery('notesNOT LIKEactive');
grCompany.setLimit(1);
grCompany.query();

if (grCompany.next()){
grCompany.notes = "active";
grCompany.update();
}}

 

Mark correct and helpful based on impact.

Thanks,

Dhananjay.