Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
- 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:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const user = new SimpleRecord new SimpleRecord('user'); user.addQuery('email', 'like', 'best.company@bestcompany'); user.selectAttributes('sys_id'); // select sys_id only user.query(); const userIDs = []; while while (user.next()) { userIDs userIDs.push(user.sys_id); } |
- Before adding query for sys_id value by addQuery(), add checking if value passed to queryUse operators in/not in for building conditions:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const tableIds = [ '156950363112415683', '156950616617772294', '155931135900000083',if (!!current.resolved_problems) { const problem = new SimpleRecord('itsm_problem'); problem.addQuery('sys_id', 'in', current.resolved_problems.split(',')); problem.query(); while (problem.next()) { if (!!problem.solved_by_changes) { problem.solved_by_changes += `,${current.sys_id}`; } else { problem.solved_by_changes = current.sys_id; } problem.update(); } } |
Code Block | ||||
---|---|---|---|---|
| ||||
problem.addQuery('syscurrent.getValue('child_table_id') ] const column = new SimpleRecord('sys_db_column'); column.addQuery('table_id', 'in', ['']); |
which will lead to skipping of that condition row.
Use operators 'in'/'not in' for building conditionstableIds);
column.query(); |
instead of multiple addOrCondition:
Code Block | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
const column = new SimpleRecord('sys_db_column'); /* column.addQuery('table_id', current.getValue('child_table_id')); column.addOrCondition('table_id', '156950363112415683'); column.addOrCondition('table_id', '156950616617772294').addOrCondition('table_id', '155931135900000083'); */ const tableIds = [ '156950363112415683', '156950616617772294', '155931135900000083', current.getValue('child_table_id') ] column.addQuerycolumn.addOrCondition('table_id', 'in155931135900000083', tableIds); column.query(); |
- Add records count preview before updating/deleting:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const record = new SimpleRecord('sys_vcs_preview_log'); record.addQuery('retrieved_pack_id', current.sys_id); record.addQuery('state', 'skipped'); record.addQuery('error_text', 'The system has a newer record'); record.query(); ss.addInfoMessage(`Correction for ${record.getRowCount()} objects`); record.setMultipleValue('state', 'good'); //record.updateMultiple(); |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const record = new SimpleRecord('imp_ldap_users'); record.addEncodedQuery( `imp'imp_company%3DSofaShop.ru^sys_created_atLIKE2019-`'); record.query(); ss.addInfoMessage(record.getRowCount()); //current.deleteMultiple(); |
- Script that creates record and its related records (e.g. creation of the Task record and child tasks records). It should contain checking root record creation before related records creation:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
const recordTask = new SimpleRecord('task'); //recordTask.subject = 'Main Task'; const insertedID = recordTask.insert(); // ID of inserted record OR 0 const activities = [ 'Analysis', 'Coding', 'Review', 'Testing', 'Merging', 'Release' ]; if (insertedID != 0) { // if Task created than create related tasks const subtasksID = []; activities.forEach(activityName => { const subTaskRecord = new SimpleRecord('task'); subTaskRecord.parent_id = insertedID; subTaskRecord.subject = activityName; subtasksID.push(subTaskRecord.insert()); }); } else { ss.addErrorMessage(JSON.stringify(recordTask.getErrors())); } |
- Comment your code when you use the Choice attributes in your scripts:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if if (current.stage == '4' || current.stage == '6') { // Canceled OR Completed const const start = new SimpleDateTime new SimpleDateTime(current.start_time); //... |
- Use the getAttributes() method to check an object before inserting or updating:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const task = new SimpleRecord('task'); task.initialize(); ss.info(JSON.stringify(task.getAttributes(), null, 2)); /* Info: { "sys_id": "", "parent_id": "", "assigned_user": "", "number": "", "short_description": "", "active": 1, ... */ |
- Also, this method allows checking whether an object has a specified attribute or not before calling:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
if if (task.getAttributes()['has_breached'] != undefined) { task task.has_breached = true true; // SLA Breached task.update( task.update(); } |
- Use Source Messages as an argument:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
ss.addInfoMessage('The protocol was send on email');
// Source Message and Message was previously added |
instead of message preparing:
Code Block | ||||
---|---|---|---|---|
| ||||
const sm = new SimpleMessage();
const localizedMessage = sm.getMessage('The protocol was send on email');
ss.addInfoMessage(localizedMessage); |
instead of hardcode messaging:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if (ss.getUser().language_id.language === 'en') {
ss.addInfoMessage('The protocol was send on email');
} else {
ss.addInfoMessage('Протокол был отправлен на почту');
} |