- Создавайте константы с понятными названиями.
Для ускорения выборки рекомендуется использовать метод selectAttributes() класса SimpleRecord.
В приведенном ниже примере создается массив, содержащий ID записей:
selectAttributesconst user = new SimpleRecord('user'); user.addQuery('email', 'like', '@bestcompany'); user.selectAttributes('sys_id'); // select sys_id only user.query(); const userIDs = []; while (user.next()) { userIDs.push(user.sys_id); }
Используйте операторы in/not in для созданий условий:
is one of in queryconst tableIds = [ '156950363112415683', '156950616617772294', '155931135900000083', current.getValue('child_table_id') ] const column = new SimpleRecord('sys_db_column'); column.addQuery('table_id', 'in', tableIds); column.query();
вместо множества addOrCondition:
addOrConditionconst 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'); column.addOrCondition('table_id', '155931135900000083'); column.query();
Добавьте предварительный просмотр количества записей перед обновлением/удалением:
updateMultipleconst record = new SimpleRecord('sys_vcs_preview_log'); record.addQuery('retrieved_pack_id', current.sys_id); record.addQuery('state', 'skipped'); record.addQuery('error_text', 'В системе есть более новая запись'); record.query(); ss.addInfoMessage(`Correction for ${record.getRowCount()} objects`); record.setMultipleValue('state', 'good'); //record.updateMultiple();
deleteMultipleconst record = new SimpleRecord('imp_ldap_users'); record.addEncodedQuery('imp_company%3DSofaShop.ru^sys_created_atLIKE2019-'); record.query(); ss.addInfoMessage(record.getRowCount()); //current.deleteMultiple();
Скрипт, который создает запись и связанные с ней записи (например, создание записи Задача и записей дочерних задач) должен содержать проверку создания корневой записи перед созданием связанных записей:
Проверка корневой записиconst recordTask = new SimpleRecord('task'); //recordTask.subject = 'Main Task'; const insertedID = recordTask.insert(); // ID созданной записи ИЛИ 0 const activities = [ 'Analysis', 'Coding', 'Review', 'Testing', 'Merging', 'Release' ]; if (insertedID != 0) { // если Задача создана, создать связанные задачи 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())); }
Комментируйте свой код, когда вы используете опции поля Choice в своих скриптах:
Комментирование кодаif (current.stage == '4' || current.stage == '6') { // Отменен ИЛИ Завершен const start = new SimpleDateTime(current.start_time); //...
Используйте метод getAttributes() для проверки объекта перед вставкой или обновлением:
getAttributesconst task = new SimpleRecord('task'); task.initialize(); ss.info(JSON.stringify(task.getAttributes(), null, 2)); /* Информация: { "sys_id": "", "parent_id": "", "assigned_user": "", "number": "", "short_description": "", "active": 1, ... */
Этот метод позволяет перед вызовом проверить, имеет ли объект указанный атрибут или нет:
getAttributesif (task.getAttributes()['has_breached'] != undefined) { task.has_breached = true; // SLA превышено task.update(); }
Используйте исходные сообщения в качестве аргумента:
Исходные сообщения как аргументss.addInfoMessage('The protocol was sent on email'); // Исходное сообщение и сообщения-переводы были добавлены заранее
вместо локализации сообщения:
Локализация сообщенияconst sm = new SimpleMessage(); const localizedMessage = sm.getMessage('The protocol was sent on email'); ss.addInfoMessage(localizedMessage);
и вместо прописывания условий отображения текстов сообщений на разных языках:
Условия для перевода сообщенияif (ss.getUser().language_id.language === 'en') { ss.addInfoMessage('The protocol was sent on email'); } else { ss.addInfoMessage('Протокол был отправлен на почту'); }
- No labels