Can I reset and then reuse a GlideRecord?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-15-2024 08:17 AM
Looking for more optimal coding practices and wanted to get some feedback.
I have a script which is working great but I'm creating three GlideRecords that all reference the same table, albeit, they are ultimately doing different queries (inserts, deletions, record gathering etc).
Is there a way to clear out a GlideRecord and then simply reuse it, rather than declaring duplicates to accomplish the same thing?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 05:54 AM
Hi @Danish Bhairag2 ,
See script below - error is caused on the GlideRecord update. Using a new GlideRecord doesn't cause this. (Unique key violation)
var grStakeGrpMem = new GlideRecord('sys_user_grmember');
grStakeGrpMem.addEncodedQuery('group=25dcde621b58a850f30dfc03cc4bcb53'); // EDI Applications Managers group (test sample)
grStakeGrpMem.query();
// variable declarations
var addStakeArr = []; // add stakeholders
var grStakeHolAdd = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object
// loop through found records
while(grStakeGrpMem.next())
{
if(grStakeGrpMem.getDisplayValue('user') != '') // // push record(s) to array if display value is not null
{
addStakeArr.push(grStakeGrpMem.getValue('user'));
}
}
// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++)
{
grStakeHolAdd.initialize();
grStakeHolAdd.setValue('user', addStakeArr[i]);
grStakeHolAdd.insert();
}
// clear gliderecord and query against users in stakeholder group
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'IN', addStakeArr.toString());
grStakeHolAdd.query();
// loop through queried records
while(grStakeHolAdd.next())
{
if(grStakeHolAdd.getValue('active', false)) // if active field is false, enter if and set active to true
{
grStakeHolAdd.setValue('active', true);
grStakeHolAdd.update(); // ERROR HAPPENS HERE
}
}
// clear gliderecord and query against users not in stakeholder group or have an inactive user record
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'NOT IN', addStakeArr.toString());
grStakeHolAdd.addOrCondition('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolAdd.query();
// loop through queried records
while(grStakeHolAdd.next())
{
if(grStakeHolAdd.getValue('active', true)) // if active field is true, enter if and set active to false
{
grStakeHolAdd.setValue('active', false);
grStakeHolAdd.update();
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 08:26 AM
Hi @Danish Bhairag2,
See script below:
var grStakeGrpMem = new GlideRecord('sys_user_grmember');
grStakeGrpMem.addEncodedQuery('group=25dcde621b58a850f30dfc03cc4bcb53'); // EDI Applications Managers group (test sample)
grStakeGrpMem.query();
// variable declarations
var addStakeArr = []; // add stakeholders
var grStakeHolAdd = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object
// loop through found records
while(grStakeGrpMem.next())
{
if(grStakeGrpMem.getDisplayValue('user') != '') // // push record(s) to array if display value is not null
{
addStakeArr.push(grStakeGrpMem.getValue('user'));
}
}
// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++)
{
grStakeHolAdd.initialize();
grStakeHolAdd.setValue('user', addStakeArr[i]);
grStakeHolAdd.insert();
}
// clear gliderecord and query against users in stakeholder group
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'IN', addStakeArr.toString());
grStakeHolAdd.query();
// loop through queried records
while(grStakeHolAdd.next())
{
if(grStakeHolAdd.getValue('active', false)) // if active field is false, enter if and set active to true
{
grStakeHolAdd.setValue('active', true);
grStakeHolAdd.update(); // ERROR HAPPENS HERE
}
}
// clear gliderecord and query against users not in stakeholder group or have an inactive user record
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'NOT IN', addStakeArr.toString());
grStakeHolAdd.addOrCondition('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolAdd.query();
// loop through queried records
while(grStakeHolAdd.next())
{
if(grStakeHolAdd.getValue('active', true)) // if active field is true, enter if and set active to false
{
grStakeHolAdd.setValue('active', false);
grStakeHolAdd.update();
}
}