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.