Этот серверный класс содержит методы для работы с записями базы данных.
SimpleRecord(tableName)
Используйте этот конструктор для создания объекта класса SimpleRecord для конкретной таблицы.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
tableName | String | Да | Нет |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | SimpleRecord |
---|
linenumbers | true |
---|
|
const taskRecord = new SimpleRecord('task'); |
REM-атрибуты
объекта объекта
В классе SimpleRecord имеется отдельный объект Расширенная модель расширенной модели записи (REM) – rem_attr, который содержит информацию о REM-атрибутах. Используйте его для чтения и редактирования значений REM-атрибутов текущей записи с помощью методов класса, как в примере ниже.
Tip |
---|
rem_attr имеет несколько методов, аналогичных методам SimpleRecord: Например: record.rem_attr.getValue('my_rem_attribute');
|
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | get using () c REM |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('task');
record.get('160638931615274614');
if (record.getReModelId()) {
ss.info(record.rem_attr.description);
} |
addOrCondition(property, operator, value)
Этот метод добавляет ИЛИ условие к существующему запросу. Он работает в сочетании с методом addQuery(). В этом методе вы можете использовать необходимый оператор из списка операторов условий, указанный в нижнем или верхнем регистре. Обратите внимание, что необходимо использовать системное имя оператора в скриптах.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы соответствующие типу атрибута.
Note |
---|
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ. |
Параметры:
Объект SimpleReference
Anchor |
---|
| SimpleReference |
---|
| SimpleReference |
---|
|
При обращении к ссылочным полям в ответ приходит специальный объект SimpleReference, позволяющий обращаться через dot-walking к полям объекта, указанного в ссылочном поле.
Tip |
---|
Объект SimpleReference имеет несколько методов, аналогичных методам SimpleRecord: |
Пример:
Code Block |
---|
language | js |
---|
title | getValue() с использованием объекта SimpleReference |
---|
linenumbers | true |
---|
|
let record = new SimpleRecord('task');
record.setLimit(1);
record.query();
record.next();
ss.info(record.caller.getValue('username')); |
addOrCondition(property, operator, value)
Используйте метод, чтобы добавить условие ИЛИ к существующему запросу. Он работает в сочетании с методом addQuery(). В этом методе вы можете использовать необходимый оператор из списка операторов условий, указанный в нижнем или верхнем регистре. Используйте системные имена операторов в скриптах.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Note |
---|
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет
Info |
---|
Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>', где sys_ |
|
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет Info |
---|
Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>', где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
|
operator | String (больше информации в статье Операторы условий) | Нет | = |
value | Integer/String/Boolean/Array/SimpleRecord SimpleReference object | Да | Нет |
Возвращаемое значение:
Запрос содержащий объект SimpleRecord или условие, добавленное к этому объектуobject | Метод возвращает экземпляр, на котором был вызван. |
Примеры:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addOrCondition() |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('task');
record.addQuery('subject', 'like', 'not work');
record.addOrCondition('description', 'like', 'not work');
ss.info('Условие запроса: ' + record.getConditionQuery());
record.query();
// Информация: Условие запроса: (subjectLIKEnot work)^OR(descriptionLIKEnot work) |
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addOrCondition() c REM-атрибутом |
---|
linenumbers | true |
---|
|
let record = new SimpleRecord('task');
record.addQuery('subject', 'like', 'not work');
record.addOrCondition('166972638116358001:description', 'contains', 'not work');
ss.info('Условие запроса: ' + record.getConditionQuery());
record.query();
// Информация: Условие запроса: (subjectLIKEnot work)^OR(166972638116358001:descriptionLIKEnot work) |
Info |
---|
В качестве значения для метода addOrCondition() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта: Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | SimpleRecord как аргумент |
---|
linenumbers | true |
---|
collapse | true |
---|
| const task = new SimpleRecord('task');
task.setLimit(1);
task.query();
if (!task.next()) {
ss.info('No tasks found!');
return;
}
const relatedTask = new SimpleRecord('task');
relatedTask.addQuery('caller', task.caller);
relatedTask.addOrCondition('assigned_user', task.caller);
relatedTask.query();
ss.info('Количество задач: ' + relatedTask.getRowCount());
// Информация: Количество задач: 122 |
|
addQuery(property, operator, value)
Используйте этот метод, чтобы добавить условие для выбора записей из базы данных. В этом методе вы можете использовать необходимый оператор из списка операторы условия, указанный в нижнем или в верхнем регистре. Обратите внимание, необходимо использовать системное имя оператора Используйте системные имена операторов в скриптах.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Note |
---|
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет Info |
---|
Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>', где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
|
operator | String |
(больше информации в статье Операторы условий) | Нет | = |
value | Integer/String/Boolean/Array/ |
SimpleRecord Возвращаемое значение:
Условие запроса добавленное в объект SimpleRecordobject | Метод возвращает экземпляр, на котором был вызван. |
Примеры:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addQuery() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.addQuery('active', true);
task.addQuery('subject', 'like', 'email');
task.addQuery('sys_created_at', '<', '2019-04-01 00:00:00');
task.query();
ss.info('Количество: ' + task.getRowCount());
// Информация: Количество: 0 |
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addQuery() с REM-атрибутом |
---|
linenumbers | true |
---|
|
let record = new SimpleRecord('task');
record.addQuery('166972638116358001:description', 'not work');
record.query();
ss.info("Всего записей: " + record.getRowCount());
// Информация: Всего записей: 1 |
Info |
---|
В качестве значения для метода addQuery() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта: Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | SimpleRecord как аргумент |
---|
linenumbers | true |
---|
collapse | true |
---|
| const task = new SimpleRecord('task');
task.setLimit(1);
task.query();
if (!task.next()) {
ss.info('Нет задач!');
return;
}
const otherTask = new SimpleRecord('task');
otherTask.addQuery('caller', task.caller);
otherTask.addQuery('sys_id', '!=', task.sys_id);
otherTask.query();
ss.info('Количество задач: ' + otherTask.getRowCount());
// Информация: Количество задач: 720 |
|
addEncodedQuery(condition)
Используйте данный метод, чтобы добавить закодированное условие для выбора записей из базы данных.
Info Допустимо использование декодированного условия.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Note |
---|
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ. |
При настройке фильтрации по текстовым полям String, Text, Translated Text, Conditions и URL используйте фигурные скобки для аргумента фильтрации. Запись аргумента в круглых скобках может вызвать ошибку фильтрации:
Code Block |
---|
language | java |
---|
theme | Eclipse |
---|
title | Фильтрация по текстовым полям |
---|
linenumbers | true |
---|
collapse | true |
---|
|
const subject = 'Hello, SimpleOne)';
const task = new SimpleRecord('task');
task.addEncodedQuery(`subjectLIKE${subject}`);
ss.info(task.getConditionQuery());
try {
task.query();
} catch (e) {
ss.error(e.message);
}
// Информация: (subjectLIKEHello, SimpleOne))
// Ошибка: Условие запроса неверное |
Параметр:
Название | Тип | Обязательный | Значение по умолчанию |
---|
condition | String | Да | Нет Info |
---|
Для REM-атрибутов используйте следующий паттерн: '<sys_id>%3A<attrid>:<attr_name>', где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
|
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Примеры:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addEncodedQuery() |
---|
linenumbers | true |
---|
|
const currentUser = ss.getUser();
const reciever = new SimpleRecord('employee');
reciever.addQuery('active', true);
if (currentUser.company.class === 'internal') {
reciever.addEncodedQuery(`(company=${currentUser.getValue('company')})`);
} else {
reciever.addEncodedQuery(`%28sys_db_table_id%3D158645243815904649%5Esys_created_byDYNAMIC156957117519820256%29`);
}
ss.info('Decoded condition: ' + reciever.getConditionQuery());
reciever.query();
// ИнфоИнформация: Декодированное условие: (active=1)^((sys_db_table_id=158645243815904649^sys_created_byDYNAMIC156957117519820256)) |
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | addEncodedQuery() с REM-атрибутом |
---|
linenumbers | true |
---|
|
const receier = new SimpleRecord('task');
receiver.addQuery('active', true);
receiver.addEncodedQuery('%28sys_db_table_id%3D158645243815904649%5E166972638116358001%3AdescriptionLIKEwork`);
ss.info('Decoded condition: ' + receiver.getConditionQuery());
receiver.query();
// ИнфоИнформация: Декодированное условие: (active=1)^((sys_db_table_id=158645243815904649^166972638116358001:descriptionLIKEwork)) |
canCreate()
Используйте этот метод, чтобы проверить, доступно ли текущему пользователю создание записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает значение |
"", если действие разрешено, если нет, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | canCreate() |
---|
linenumbers | true |
---|
|
current.canCreate(); |
canDelete()
Используйте этот метод, чтобы проверить, доступно ли текущему пользователю удаление записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает значение |
"", если действие разрешено, если нет, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | canDelete() |
---|
linenumbers | true |
---|
|
current.canDelete(); |
canRead()
Используйте этот метод, чтобы проверить, доступен ли текущему пользователю просмотр записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает значение |
"", если действие разрешено, если нет, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | canRead() |
---|
linenumbers | true |
---|
|
current.canRead(); |
canUpdate()
Используйте этот метод, чтобы проверить, доступно ли текущему пользователю редактирование записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает значение |
"", если действие разрешено, если нет, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | canUpdate() |
---|
linenumbers | true |
---|
|
current.canUpdate(); |
deleteMultiple()
Используйте этот метод, чтобы удалить записи из полученной выборки.Обратите внимание, что при удалении записей с помощью этого метода Вложения удаляемых записей не удаляются вложения.
Note |
---|
Не используйте этот метод для таблиц с зависимостями. Всегда удаляйте каждую запись по отдельности. |
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает |
"", если записи успешно удалены, в случае ошибки метод возвращает значение |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | deleteMultiple() |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('sys_activity_feed_item');
record.addQuery('content', 'isempty');
record.query();
ss.info(record.getRowCount());
ss.info(record.deleteMultiple());
// Информация: 0
// Информация: true |
deleteRecord(id)
Используйте этот метод для удаления записи.
При вызове метода в выборке записей с указанием параметра, удаляется запись с конкретным ID. Для удаления текущей записи можно как указать ID, так и не указывать. В обоих случаях в результате удаляется сама При отсутствии параметра id будет удалена текущая запись.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
id | String | Нет | |
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает значение |
"", еслизапись успешно удалена, в случае ошибки метод возвращает значение |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | deleteRecord() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.get('155931135900000000');
if (!task.sys_id) {
return;
}
const isDeleted = task.deleteRecord();
if (isDeleted) {
ss.info('Задача с ID ' + task.sys_id + ' была удалена!');
return;
}
ss.error(task.getErrors()); |
get(propertyOrValue, value)
Используйте этот метод, чтобы загрузить объект из базы данных по значению поля или, в некоторых случаях, по ID. Параметр propertyOrValue принимает значение ID записи или имени свойства. Если значение равно имени свойства, второй параметр value является обязательным.
Note |
---|
Передача значения 'NULL' null или пустой строки в качестве значения параметра propertyOrValue ведет к исключению: "Аргумент 1 функции "get()" не может быть пустым".
|
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
propertyOrValue | | Да | Нет |
value | String | Нет |
NULLВозвращаемое значение:
Тип | Описание |
---|
SimpleRecord object |
Этот метод Метод возвращает объект SimpleRecord из таблицы, указанной в запросе. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | get() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163663310116371174'); |
Info |
---|
В качестве значения для методаget() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта: Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | SimpleRecord как аргумент |
---|
linenumbers | true |
---|
collapse | true |
---|
| const task = new SimpleRecord('task');
task.setLimit(1);
task.query();
if (!task.next()) {
ss.info('Нет задач!');
return;
}
const user = new SimpleRecord('user');
user.get(task.caller);
user.language_id = '156628684306541141'; // Английский
ss.info(user.update());
// Информация: 167515292501757147 |
|
getAttributes()
Данный Используйте метод возвращает , чтобы получить объект с атрибутами текущей записи в качестве ключей и значения атрибутов как значения значений ключей.
Возвращаемое значение:
Объект Метод возвращает объект с атрибутами записи и их значениями. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getAttributes() |
---|
linenumbers | true |
---|
|
const userRecord = ss.getUser();
ss.info(userRecord.getAttributes());
// Информация: {"sys_id":"155931135900000001","sys_created_at":"2019-09-30 00:00:00","sys_updated_at":"2021-06-28... |
getClassDisplayValue()
Данный Используйте метод возвращает , чтобы получить заголовок текущей таблицы.
Возвращаемое значение:
Заголовок Метод возвращает заголовок таблицы записи. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getClassDisplayValue() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getClassDisplayValue());
// Информация: Задачи |
getConditionQuery()
Метод возвращает Используйте метод, чтобы получить текущее условие запроса.
Возвращаемое значение:
Условие Метод возвращает условие запроса. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getConditionQuery() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
const condition = task.addQuery('state', '7');
condition.addOrCondition('priority', '<', '3');
ss.info('Условие до запроса: ' + task.getConditionQuery());
task.query();
ss.info('Условие после: ' + task.getConditionQuery());
// Информация: Условие до запроса: (state=7)^OR(priority<3)
// Информация: Условие после: |
getDisplayValue(property)
Anchor |
---|
| getDisplayValue() |
---|
| getDisplayValue() |
---|
|
Данный Используйте метод возвращает , чтобы получить отображаемое значение параметра записи. Например, для поля reference Reference возвращается название сущности, а не ID.
Без параметра данные данный метод возвращает отображаемое значение записи из поля с установленным флажком display_by_ref Отображаемое поле.
В таблице представлены отображаемые значения в серверных скриптах по типам колонок.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
PropertyNULLВозвращаемое значение:
Отображаемое Метод возвращает отображаемое значение записи или поля. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getDisplayValue() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getDisplayValue('caller'));
ss.info(current.getValue('caller'));
// Информация: Иван Иванов
// Информация: 155931135900000001 |
getErrors()
Этот метод возвращает Используйте этот метод, чтобы получить сообщения об ошибке в случае сбоя при создании, обновлении или удалении записи.
Используйте этот метод для контроля проведения операции с записью в скрипте.
Warning |
---|
Настоятельно рекомендуется использовать данный метод, так как некоторые ошибки могут не отображаться в процессе отладки. Например, ошибки в запросах условия, переданных addEncodedQuery() или аналогичным методом, можно получить, вызвав getErrors(). |
Возвращаемое значение:
Тип | Описание |
---|
Array of Strings |
Значения Метод возвращает значения ошибок. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getErrors() |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('user');
const insertedRecordId = record.insert();
if (insertedRecordId == 0) {
ss.info(record.getErrors());
}
// Информация: ["Поле \"\"Логин\" [username]\" обязательно для заполнения. (id записи: )",... |
getLabel(property)
Используйте этот метод, чтобы получить заголовок поля.
Info |
---|
Метод getLabel() не используется с атрибутами REM. Вместо этого используйте метод getTitle(). |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет |
Возвращаемое значение:
Название Метод возвращает название поля. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getLabel() |
---|
linenumbers | true |
---|
|
const current = ss.getUser();
const fieldLabel = current.getLabel('username');
ss.addErrorMessage('Поле "' + fieldLabel + '" должно быть заполнено');
// Поле "Логин" должно быть заполнено |
getReModelId()
Используйте этот метод, чтобы получить ID расширенной модели записи, относящейся к текущей записи. Используйте метод setReModelId, чтобы установить новый ID модели.
Возвращаемое значение:
Тип | Описание |
---|
String | Метод возвращает ID модели. Если модель не найдена, метод возвращает значение ' null'. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getReModelId() |
---|
linenumbers | true |
---|
|
(function executeRule(current, previous = null /*not null only when action is update*/) {
if (current.getReModelId()) {
const model = new SimpleRecord('sys_rmc_model');
model.get(current.getReModelId()); // currentтекущая modelмодель
current.$$service = model.getValue('cmdb_service_id'); // Передает в сервис, если поле существует
}
})(current, previous); |
getRowCount()
Используйте этот метод, чтобы получить количество элементов в выборке.
Возвращаемое значение:
Количество Метод возвращает количество элементов в выборке. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getRowCount() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.query();
ss.addInfoMessage('Количество всех задач: ' + task.getRowCount());
//Количество всех задач: 2 |
getTableName()
Используйте этот метод, чтобы получить системное название текущей таблицы.
Возвращаемое значение:
Системное Метод возвращает cистемное название текущей таблицы. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getTableName() |
---|
linenumbers | true |
---|
|
const current = ss.getUser();
ss.info('/list/' + current.getTableName() + '/' + current.sys_id);
// Информация: /list/user/155931135900000001 |
getTitle(attribute)
Метод возвращает Используйте метод, чтобы получить заголовок указанного атрибута расширенной модели записи (REM).
Параметр:
Название | Тип | Обязательный | Значение по умолчанию |
---|
column | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
String | Метод возвращает заголовок атрибута REM. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getTitle() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163638951512716126');
if (current.sys_id) {
ss.info(current.rem_attr.getTitle('reviewed'));
}
// Информация: Проверка завершена
const current = new SimpleRecord('task');
current.get('163638951512716126');
if (current.sys_id) {
ss.info(current.rem_attr.getTitle('reviewed'));
}
// Информация: Проверка завершена |
getValue(property)
Этот Используйте метод возвращает , чтобы получить значение указанного атрибута объекта.
Если поле относится к типу Reference или List, возвращается его значение sys_id.ID.
В таблице представлены отображаемые значения в серверных скриптах по типам колонок.
Note |
---|
Note |
---|
Используйте этот метод, чтобы получить значения полей типа Reference Reference вместо Dot dot-walking. Например, current.getValue('reference_field') вместо current.reference_field.sys_id. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет |
Возвращаемое значение:
Значение Метод возвращает значение указанного атрибута объекта. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getValue() |
---|
linenumbers | true |
---|
|
const current = ss.getUser();
const user = new SimpleRecord('user');
user.addQuery('timezone_id', current.getValue('timezone_id'));
user.selectAttributes('sys_id');
user.query();
ss.info(user.getRowCount() + ' пользователя в вашем часовом поясе');
// Информация: 24 пользователя в вашем часовом поясе |
Info |
---|
Вы также можете обратиться напрямую к значению ссылочного поля с учетом контекста используя оператор '$$'. Это позволяет проверить наличие дополнительных полей и получить их значение. Подробнее читайте в статье Использование dot-walking в скриптах. |
hasAttachment()
Используйте этот метод, чтобы проверить, имеет ли указанная запись вложение.
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает |
"", если в записи есть вложение, если нет, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | hasAttachment() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163663310116371174');
const hasAttach = current.hasAttachment();
if (!hasAttach) {
ss.addErrorMessage('Нужно прикрепить файл');
return;
}
current.state = '2'; // Открыто
current.update(); |
initialize()
Используйте этот метод, чтобы заполнить все доступные поля предопределенными значениями по умолчанию.
Он подходит только для новых записей, которые никогда не сохранялись.
Метод вызывается автоматически при создании записи.
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | initialize() |
---|
linenumbers | true |
---|
|
const taskRecord = new SimpleRecord('task');
ss.info(taskRecord.getAttributes().caller);
taskRecord.initialize();
ss.info(taskRecord.getAttributes().caller);
// Информация:
// Информация: 155931135900000001 |
insert()
Этот метод использует Используйте метод, чтобы создать новую запись со значения полей объекта для создания новой записи.
Если запись не создана, метод возвращает «0» '0' (ноль) и генерирует сообщение об ошибке, которое можно получить с помощью метода getErrors().
Возвращаемое значение:
Тип | Описание |
---|
String | - Если запись не была создана, метод возвращает
|
«0» а так же - и генерирует сообщение со списком ошибок.
- Если запись была создана, метод возвращает
|
уникальный Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | insert() |
---|
linenumbers | true |
---|
|
const newTask = new SimpleRecord('task');
newTask.subject = 'Subtask';
const insertedTaskID = newTask.insert();
ss.info(`/record/task/${insertedTaskID}`);
// Информация: /record/task/163675231910113745 |
isTableVcsEnabled()
Используйте этот метод, чтобы проверить установлен ли флажок Контроль версий для указанной таблицы.
Возвращаемое значение:
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | isTableVcsEnabled() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('user');
ss.info(current.isTableVcsEnabled());
// Информация: false |
matchesCondition(condition)
Используйте этот метод, чтобы проверить, соответствует ли текущая запись условию.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
condition | String | Нет | '' |
Возвращаемое значение:
Тип | Описание |
---|
Boolean | Метод возвращает |
"", если запись соответствует указанным условиям, в противном случае метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | matchesCondition() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.description = 'emaio';
ss.info(task.matchesCondition('descriptionLIKEemail')); // false
task.description = 'email';
ss.info(task.matchesCondition('descriptionLIKEemail')); // true |
next()
Используйте этот метод, чтобы получить следующую запись в запросе.
Возвращаемое значение:
Тип | Описание |
---|
SimpleRecord object |
or или Boolean | При первом вызове, метод возвращает первую запись в запросе. Если запрос пуст, метод возвращает |
""Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | next() |
---|
linenumbers | true |
---|
|
const user = new SimpleRecord('user');
user.setLimit(1);
user.query();
user.next();
ss.info(user.sys_id);
// Информация: 100000000000000000 |
orderBy(column)
Используйте этот метод, чтобы отсортировать записи в порядке возрастания.
Tip |
---|
Используйте этот метод несколько раз, чтобы отсортировать записи по нескольким колонкам. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
column | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | orderBy() |
---|
linenumbers | true |
---|
|
const firstLog = new SimpleRecord('sys_log');
firstLog.orderBy('sys_created_at'); // сначала старые записи
firstLog.addQuery('message', 'like', 'Connection');
firstLog.setLimit(1);
firstLog.selectAttributes(['message', 'sys_created_at']);
firstLog.query();
firstLog.next();
ss.info(firstLog.sys_created_at + ' - ' + firstLog.message);
// Информация: 2021-06-03 06:34:02 - IMAP IMAP (Default): ConnectionОшибка errorсоединения: ... |
orderByDesc(column)
Используйте этот метод, чтобы отсортировать записи в порядке убывания.
Tip |
---|
Используйте этот метод несколько раз, чтобы отсортировать записи по нескольким колонкам. |
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
column | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | orderByDesc() |
---|
linenumbers | true |
---|
|
const lastComment = new SimpleRecord('sys_activities_stream_field');
lastComment.orderByDesc('sys_created_at'); // сначала новая запись
lastComment.setLimit(1);
lastComment.selectAttributes(['value', 'sys_created_by']);
lastComment.query();
lastComment.next();
ss.info(lastComment.sys_created_by.display_name + ': ' + lastComment.value);
// Информация: Иван Иванов: Тестовый комментарий |
query()
Используйте этот метод, чтобы применить запрос для получения выборки из базы данных. Выборка будет сохранена в объекте, для которого этот метод был вызван.
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | query() |
---|
linenumbers | true |
---|
|
const tasks = new SimpleRecord('task');
tasks.addQuery('sys_created_at', '>', '2020-01-01');
tasks.orderBy('sys_created_at');
tasks.setLimit(2);
tasks.query();
while (tasks.next()) {
ss.info('Номер задачи: ' + tasks.number);
}
// Информация: Номер задачи: TSK0000001
// Информация: Номер задачи: TSK0000003 |
selectAttributes(attributes)
Используйте этот метод для оптимизации запросов к базе данных, особенно когда необходимо получить только несколько полей объекта, а не весь объект.
Warning |
---|
Не используйте этот метод для выбора записей, которые нужно обновить или удалить после выбора. В противном случае некоторые значения полей записи могут быть потеряны при их обновлении или удалении. Выполненное действие также может вызвать следующее исключение: Info |
---|
Вы не можете обновить запись с набором сокращенных атрибутов. Удалите вызов метода selectAttributes и обновите снова. |
|
ПараметрПараметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
attributes | String/Array | Да | Нет |
Info |
---|
Рекомендуется передавать Передавайте значение одного атрибута в качестве строки. Для передачи большего количества название атрибутов, используйте массив, как в примере ниже. |
Возвращаемое значение:
Тип | Описание |
---|
SimpleRecord object | Метод возвращает объект SimpleRecord, содержащий атрибуты и значения. Note |
---|
Независимо от исходного содержимого набора атрибутов, возвращаемый объект всегда содержит атрибут sys_idID. Смотрите пример примеры ниже. |
|
ПримерПримеры:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | selectAttributes(String) |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('user');
record.selectAttributes('email');
record.query();
record.next();
ss.info(record.getAttributes());
// Информация: {"email":"ivan.ivanov@email.com","sys_id":"162423321917274937"} |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | selectAttributes(Array) |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('user');
record.selectAttributes(['email', 'username']);
record.query();
record.next();
ss.info(record.getAttributes());
// Информация: {"email":"john.doe@email.com","username":"john.doe","sys_id":"162423321917274937"} |
setAbortAction(flag,message)
Используйте этот метод в бизнес-правилах для настройки флажка, обозначающего прерванность текущей операции (добавить/обновить/удалить)для прерывания текущей операции.
note Note |
---|
Важно, что код не выполняется, если он написан - Скрипт, написанный после вызова данного метода
в теле скрипта. |
- не будет выполняться.
- Не рекомендуется использовать этот метод с бизнес-правилами
- типа async, так как это может привести к непредсказуемому поведению системы.
|
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
flag | Boolean | Да | Нет |
message | String | Нет | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | setAbortAction() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('task');
current.get('163663310116371174');
const hasAttach = current.hasAttachment();
if (!hasAttach) {
ss.addErrorMessage('FileНужно shouldприкрепить be attachedвложение!');
current.setAbortAction(true);
}
current.state = '2'; // Открыто
current.update(); |
setLimit(maxNumRecords)
Используйте этот метод, чтобы ограничить количество записей , выбранных при помощи методов запроса SimpleRecordв выборке по условию.
Параметр:
Название | Тип | Обязательный | Значение по умолчанию |
---|
maxNumRecords | Integer | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | setLimit() |
---|
linenumbers | true |
---|
|
const record = new SimpleRecord('user');
record.setLimit(3);
record.query();
ss.info(record.getRowCount());
// Информация: 3 |
setMultipleValue(property,value)
Используйте этот метод, чтобы установить значения свойств полей для каждой записи в текущей выборке.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет |
value |
StringВозвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | setMultipleValue() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.addQuery('state', '7'); // Черновик
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '2'); // Открыто
// task.updateMultiple(); |
setReModelId(reModelId)
Используйте этот метод, чтобы установить ID определенной расширенной модели расширенной записи. Чтобы получить ID модели, используйте метод getReModelId.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
reModelId | String | Да | Нет |
Если параметр reModelId равен "null", расширенная модель расширенной записи, относящейся относящаяся к записи, будет отвязана.
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | getReModelId |
---|
linenumbers | true |
---|
() | linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.get('163352033916904699');
if (task.getValue('service') === '164069027812962298') { // Почтовый сервер
task.setReModelId('158569205818704980'); // Запрос доступа к почтовому серверу
} else {
task.setReModelId(null);
}
task.update(); |
Note |
---|
- При вызове данного метода на экземпляре SimpleRecord, значения его атрибутов, привязанных к предыдущей модели, будут сброшены.
- После вызова данного метода и обновления текущей записи, значения атрибутов предыдущей модели будут утеряны.
|
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | setReModelId() |
---|
linenumbers | true |
---|
|
(function executeRule(current, previous = null /*not null only when action is update*/ ) {
// правило срабатывает при изменении услуги
ss.importIncludeScript('getRemAttributes');
const rmc = new SimpleRecord('sys_rmc_model');
rmc.addQuery('cmdb_service_id', current.getValue('service'));
rmc.addQuery('active', true);
rmc.selectAttributes('sys_id');
rmc.setLimit(1);
rmc.query();
if (rmc.next()) {
const previousModelAttributes = getRemAttributes(current);
current.setReModelId(rmc.sys_id);
const currentModelAttributes = getRemAttributes(current);
Object.keys(previousModelAttributes).forEach(attributeName => {
if (currentModelAttributes.hasOwnProperty(attributeName)) {
current.rem_attr[attributeName] = previousModelAttributes[attributeName];
}
})
} else {
currentconst task = new SimpleRecord('task');
task.get('163352033916904699');
if (task.getValue('service') === '164069027812962298') { // Email Server Service
task.setReModelId('158569205818704980'); // Email Server Access Request
} else {
task.setReModelId(null);
}
task.update(); |
Note |
---|
При вызове данного метода на экземпляре SimpleRecord(), значения его атрибутов, привязанных к предыдущей модели, будут сброшены. После вызова данного метода и обновления текущей записи значения атрибута, привязанного к предыдущей модели будут утеряны.})(current, previous); |
setValue(property, value)
Используйте этот метод, чтобы установить значение поля в текущей записи.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
property | String | Да | Нет |
value |
StringВозвращаемое значение:
Этот метод Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | setValue() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.setValue('subject', 'mail');
task.insert(); |
silentMode(enable)
Используйте этот метод для обновления записи без выполнения каких-либо элементов, связанных с этой записью, реализующих выполнения бизнес-логикулогики, например реализованной бизнес-правилаправилами, уведомленияуведомлениями, рабочие процессы рабочими процессами и т. д.другими.
Параметры:
Название | Тип | Обязательный | Значение по умолчанию |
---|
enable | Boolean | Нет | true |
Возвращаемое значение:
Тип | Описание |
---|
Void | Метод не возвращает значение. |
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | silentMode() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.addQuery('active', false);
task.addQuery('approval_state', 'isempty');
task.query();
ss.info(task.getRowCount());
task.silentMode();
task.setMultipleValue('approval_state', 'not_requested'); // задает setзначение Defaultпо Valueумолчанию
//task.updateMultiple(); |
update()
Используйте этот метод для обновления записи базы в базе данных.
Info |
---|
Используйте этот метод для существующих записей. - Измененияя буду примененыИзменения будут применены, только если запись уже существовала.
- Если запись ранее не существовала, метдметод getErrors() вернет сообщение об ошибке:
"Невозможно обновить новую запись. Используйте для этого Ошибка при обновлении записи, используйте метод `insert()`. (record id записи: )"
|
Возвращаемое значение:
Тип | Описание |
---|
String | - Если запись не была обновлена, метод возвращает '0' и генерирует сообщение со списком ошибок.
- При отсутствии ошибок метод возвращает ID обновленной записи.
|
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | update() |
---|
linenumbers | true |
---|
|
const current = new SimpleRecord('user');
current.get(ss.getUserId());
current.timezone_id = '156076775207670452'; // UTC
ss.info(current.update());
ss.info(current.getErrors());
// Информация: 155931135900000001
// Информация: [] |
updateMultiple()
Используйте этот метод , чтобы обновить все записи выборадля обновления всех записей выборки.
Возвращаемое значение:
Void или IntegerBoolean | - Если произошли ошибки проверки и запись не была обновлена, метод возвращает
|
«0» и - false и генерирует сообщение со списком ошибок.
- При отсутствии ошибок метод
|
не - возвращает значение true.
|
Пример:
Code Block |
---|
language | js |
---|
theme | Eclipse |
---|
title | updateMultiple() |
---|
linenumbers | true |
---|
|
const task = new SimpleRecord('task');
task.addQuery('state', '0'); // Открыто
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '10'); // Отменено
// task.updateMultiple(); |