To debug a script, you can use a built-in debugger.

Role required: admin.

For this, please complete the steps below:

  1. Navigate to System Definition -> Scripts.
  2. Click New and fill in the fields.
  3. Click Save or Save and Exit to save the script or click Run to execute it without saving.

Alsoyou can open any record form in this debugger by calling the Open in script item in the hamburger menu.

Using this functionality, you are able to:

It is recommended to use SimpleSystem methods to display values when debugging a server-side script:

  1. To display them on a client-side:
    1. ss.addInfoMessage(message)
    2. ss.addErrorMessage(message)
  2. To put them into the Main Log (sys_log) dictionary which is intended as the main log storage:
    1. ss.info(message)
    2. ss.warning(message)
    3. ss.debug(message)
    4. ss.error(message)

Recommendations


To speed up the sampling generation, it is recommended to use the selectAttributes() method of the SimpleRecord class.

The example below generates an array containing IDs of the records:

const user = new SimpleRecord('user');
user.addQuery('email', 'like', 'best.company');
user.selectAttributes('sys_id'); // select sys_id only
user.query();
const userIDs = [];
while (user.next()) {
  userIDs.push(user.sys_id);
}


Comment your code when you use the Choice attributes in your scripts:

if (current.stage == '4' || current.stage == '6') { // Canceled OR Completed
  const start = new SimpleDateTime(current.start_time);
  //...


Use the getAttributes() method to check an object before inserting or updating:

const task = new SimpleRecord('task');
task.initialize();
ss.info(task.getAttributes());
// Info: {"sys_id":"","parent_id":"","assigned_user":"","number":"","short_description":"","active":1,"comments":"","description":"","state":7,"priority":"","urgency":"","impact":"","escalation":"","opened_at":"2020-07-24 08:55:33", ...}


Also, this method allows checking whether an object has a specified attribute or not before calling:

if (task.getAttributes()['has_breached'] != undefined) {
  task.has_breached = true; // SLA Breached
  task.update(); 
}