SimpleRecord
Этот серверный класс содержит методы для работы с записями базы данных.
SimpleRecord(tableName)
Используйте этот конструктор для создания объекта класса SimpleRecord для конкретной таблицы.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
tableName | String | Да | Нет |
Пример:
const taskRecord = new SimpleRecord('task');
REM-атрибуты объекта
В классе SimpleRecord имеется отдельный объект расширенной модели записи (REM) – rem_attr, который содержит информацию о REM-атрибутах. Используйте его для чтения и редактирования значений REM-атрибутов текущей записи с помощью методов класса, как в примере ниже.
rem_attr имеет несколько методов, аналогичных методам SimpleRecord:
Пример:
record.rem_attr.getValue('my_rem_attribute');
Пример:
const record = new SimpleRecord('task');
record.get('160638931615274614');
if (record.getReModelId()) {
ss.info(record.rem_attr.description);
}
Объект SimpleReference
При обращении к ссылочным полям в ответ приходит специальный объект SimpleReference, позволяющий обращаться через dot-walking к полям объекта, указанного в ссылочном поле.
Объект SimpleReference имеет несколько методов, аналогичных методам SimpleRecord:
Пример:
let record = new SimpleRecord('task');
record.setLimit(1);
record.query();
record.next();
ss.info(record.caller.getValue('username'));
addOrCondition(property, operator, value)
Используйте метод, чтобы добавить условие ИЛИ к существующему запросу. Он работает в сочетании с методом addQuery(). В этом методе вы можете использовать необходимый оператор из списка операторов условий, указанный в нижнем или верхнем регистре. Используйте системные имена операторов в скриптах.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
property | String | Да | Нет Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>' где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
operator | String | Нет | = |
value | Integer/String/Boolean/Array/SimpleReference object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
SimpleRecord object | Метод возвращает экземпляр, на котором был вызван. |
Примеры:
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)
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)
В качестве значения для метода addOrCondition() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта:
SimpleRecord как аргумент
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-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
property | String | Да | Нет Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>' где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
operator | String | Нет | = |
value | Integer/String/Boolean/Array/SimpleReference object | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
SimpleRecord object | Метод возвращает экземпляр, на котором был вызван. |
Примеры:
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
let record = new SimpleRecord('task');
record.addQuery('166972638116358001:description', 'not work');
record.query();
ss.info("Всего записей: " + record.getRowCount());
// Информация: Всего записей: 1
В качестве значения для метода addQuery() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта:
SimpleRecord как аргумент
const task = new SimpleRecord('task');
task.setLimit(1);
task.query();
if (!task.next()) {
ss.info('No tasks found!');
return;
}
const otherTask = new SimpleRecord('task');
otherTask.addQuery('caller', task.caller);
otherTask.addQuery('sys_id', '!=', task.sys_id);
otherTask.query();
ss.info('Tasks count: ' + otherTask.getRowCount());
// Info: Tasks count: 720
addEncodedQuery(condition)
Используйте данный метод, чтобы добавить закодированное условие для выбора записей из базы данных. Допустимо использование декодированного условия.
Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы, соответствующие типу атрибута.
Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ.
При настройке фильтрации по текстовым полям String, Text, Translated Text, Conditions и URL используйте фигурные скобки для аргумента фильтрации. Запись аргумента в круглых скобках может вызвать ошибку фильтрации:
Фильтрация по текстовым полям
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 | Да | Нет Для REM-атрибутов используйте следующий паттерн: '<sys_id>:<attr_name>' где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута. |
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Примеры:
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))
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 | Метод возвращает значение true, если действие разрешено, если нет, метод возвращает false. |
Пример:
current.canCreate();
canDelete()
Используйте этот метод, чтобы проверить, доступно ли текущему пользователю удаление записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает значение true, если действие разрешено, если нет, метод возвращает false. |
Пример:
current.canDelete();
canRead()
Используйте этот метод, чтобы проверить, доступен ли текущему пользователю просмотр записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает значение true, если действие разрешено, если нет, метод возвращает false. |
Пример:
current.canRead();
canUpdate()
Используйте этот метод, чтобы проверить, доступно ли текущему пользователю редактирование записей в указанной таблице по правилам контроля доступа (ACL).
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает значение true, если действие разрешено, если нет, метод возвращает false. |
Пример:
current.canUpdate();
deleteMultiple()
Используйте этот метод, чтобы удалить записи из полученной выборки. Вложения удаляемых записей не удаляются.
Не используйте этот метод для таблиц с зависимостями. Всегда удаляйте каждую запись по отдельности.
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает true, если записи успешно удалены, в случае ошибки метод возвращает значение false. |
Пример:
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 | String | Нет | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает значение true, если запись успешно удалена, в случае ошибки метод возвращает значение false. |
Пример:
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 является обязательным.
Передача значения null или пустой строки в качестве значения параметра propertyOrValue ведет к исключению:
Аргумент 1 функции "get()" не может быть пустым
.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
propertyOrValue | String | Да | Нет |
value | String | Нет | null |
Возвращаемое значение:
Тип | Описание |
---|---|
SimpleRecord object | Метод возвращает объект SimpleRecord из таблицы, указанной в запросе. |
Пример:
const current = new SimpleRecord('task');
current.get('163663310116371174');