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.

Get fields of a table

xiaix
Tera Guru

// Check if the table has the field, u_number

var grCheck = new GlideRecord('myCustomTable');

grCheck.query();

var fields = new GlideRecordUtil().getFields(grCheck);

var numberFieldFound = false;

for (var j = 0; j < fields.length; j++)

{

      var fieldName = fields[j];

      if (fieldName == "u_number")

      {

              numberFieldFound = 'true';

              break;

      }

}

// u_number field found.   Make sure it has a value.   If not, give it one!

if (numberFieldFound)

{

      var fCount = 0;

      // https://community.servicenow.com/thread/260128

      var grU = new GlideRecord('myCustomTable');

      grU.orderBy('sys_created_on');    

      grU.query();    

      while (grU.next())

      {

              if (grU.u_number)

                      continue;

              fCount++;

              var nm = new NumberManager('myCustomTable');    

              grU.u_number = nm.getNextObjNumberPadded();    

              grU.autoSysFields(false);   // Do not update sys_updated_on, sys_updated_by, and sys_mod_count    

              grU.setWorkflow(false);       // Do not run any other business rules    

              grU.update();

      }

      gs.addInfoMessage(fCount + " records were auto-updated with a u_number value.");

}

else

{

      // No u_number field.   Tell the user!

      gs.addErrorMessage("There is no 'u_number' field on the " + 'myCustomTable' + " table!");

      return;

}

I'm trying to look at a custom table and see if a u_number field is present.   If not, warn the user.

The problem is, GlideRecordUtil().getFields() needs a record to grab.   I need a way to find out even if there is no record.

Anyone know the answer?

1 ACCEPTED SOLUTION

xiaix
Tera Guru

// Check if the Calendar Event table has the field, u_number


var numberFieldFound = false;


var grCheck = new GlideRecord('sys_dictionary');


grCheck.addQuery('name', 'myCustomTable');


grCheck.addQuery('element', 'u_number');


grCheck.query();


if (grCheck.next())


      numberFieldFound = 'true';




// u_number field found.   Make sure it has a value.   If not, give it one!


if (numberFieldFound)


{


      var fCount = 0;


      // https://community.servicenow.com/thread/260128


      var grU = new GlideRecord('myCustomTable');


      grU.orderBy('sys_created_on');    


      grU.query();    


      while (grU.next())


      {


              if (grU.u_number)


                      continue;


              fCount++;


              var nm = new NumberManager('myCustomTable');    


              grU.u_number = nm.getNextObjNumberPadded();    


              grU.autoSysFields(false);   // Do not update sys_updated_on, sys_updated_by, and sys_mod_count    


              grU.setWorkflow(false);       // Do not run any other business rules    


              grU.update();


      }


      if (fCount)


              gs.addInfoMessage(fCount + " records were auto-updated with a u_number value.");


}


else


{


      // No u_number field.   Tell the user!


      gs.addErrorMessage("There is no 'u_number' field on the " + 'myCustomTable' + " table!");


      return;


}



I needed to query sys_dictionary to look for u_number.      


View solution in original post

1 REPLY 1

xiaix
Tera Guru

// Check if the Calendar Event table has the field, u_number


var numberFieldFound = false;


var grCheck = new GlideRecord('sys_dictionary');


grCheck.addQuery('name', 'myCustomTable');


grCheck.addQuery('element', 'u_number');


grCheck.query();


if (grCheck.next())


      numberFieldFound = 'true';




// u_number field found.   Make sure it has a value.   If not, give it one!


if (numberFieldFound)


{


      var fCount = 0;


      // https://community.servicenow.com/thread/260128


      var grU = new GlideRecord('myCustomTable');


      grU.orderBy('sys_created_on');    


      grU.query();    


      while (grU.next())


      {


              if (grU.u_number)


                      continue;


              fCount++;


              var nm = new NumberManager('myCustomTable');    


              grU.u_number = nm.getNextObjNumberPadded();    


              grU.autoSysFields(false);   // Do not update sys_updated_on, sys_updated_by, and sys_mod_count    


              grU.setWorkflow(false);       // Do not run any other business rules    


              grU.update();


      }


      if (fCount)


              gs.addInfoMessage(fCount + " records were auto-updated with a u_number value.");


}


else


{


      // No u_number field.   Tell the user!


      gs.addErrorMessage("There is no 'u_number' field on the " + 'myCustomTable' + " table!");


      return;


}



I needed to query sys_dictionary to look for u_number.