Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Этот серверный класс содержит методы для работы с записями базы данных.

SimpleRecord(tableName) 
Anchor
object
object


Используйте этот конструктор для создания объекта класса SimpleRecord для конкретной таблицы.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
tableNameStringДаНет

Пример:

Code Block
languagejs
themeEclipse
titleSimpleRecord
linenumberstrue
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
languagejs
themeEclipse
titleget using () c REM
linenumberstrue
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
languagejs
titlegetValue() с использованием объекта SimpleReference
linenumberstrue
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

Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДа

Нет


Info

Для REM-атрибутов используйте следующий паттерн:

'<sys_id>:<attr_name>',

где sys_

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДа

Нет

Info

Для REM-атрибутов используйте следующий паттерн:

'<sys_id>:<attr_name>',

где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута.


operatorString (больше информации в статье Операторы условий)Нет=
valueInteger/String/Boolean/Array/SimpleRecord SimpleReference objectДаНет

Возвращаемое значение:

ТипОписание
SimpleRecord
Запрос содержащий объект SimpleRecord или условие, добавленное к этому объекту
objectМетод возвращает экземпляр, на котором был вызван.

Примеры:

Code Block
languagejs
themeEclipse
titleaddOrCondition()
linenumberstrue
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
languagejs
themeEclipse
titleaddOrCondition() c REM-атрибутом
linenumberstrue
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
languagejs
themeEclipse
titleSimpleRecord как аргумент
linenumberstrue
collapsetrue
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

Условие может содержать критерии на основе атрибутов из разных моделей. Если такие критерии создаются с использованием оператора И, выборка записей будет пуста. Чтобы отобразить записи соответствующие условию, используйте оператор ИЛИ.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДа

Нет

Info

Для REM-атрибутов используйте следующий паттерн:

'<sys_id>:<attr_name>',

где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута.


operatorString
(больше информации в статье Операторы условий)
Нет=
valueInteger/String/Boolean/Array/
SimpleRecord
SimpleReference objectДаНет

Возвращаемое значение:

ТипОписание
SimpleRecord
Условие запроса добавленное в объект SimpleRecord
objectМетод возвращает экземпляр, на котором был вызван.

Примеры:

Code Block
languagejs
themeEclipse
titleaddQuery()
linenumberstrue
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
languagejs
themeEclipse
titleaddQuery() с REM-атрибутом
linenumberstrue
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
languagejs
themeEclipse
titleSimpleRecord как аргумент
linenumberstrue
collapsetrue
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
languagejava
themeEclipse
titleФильтрация по текстовым полям
linenumberstrue
collapsetrue
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))
// Ошибка: Условие запроса неверное

Параметр:

НазваниеТипОбязательныйЗначение по умолчанию
conditionString Да

Нет

Info

Для REM-атрибутов используйте следующий паттерн:

'<sys_id>%3A<attrid>:<attr_name>',

где sys_id – ID модели, которая содержит атрибут, и attr_name – системное имя REM-атрибута.


Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Примеры:

Code Block
languagejs
themeEclipse
titleaddEncodedQuery()
linenumberstrue
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
languagejs
themeEclipse
titleaddEncodedQuery() с REM-атрибутом
linenumberstrue
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
"
.

Пример:

Code Block
languagejs
themeEclipse
titlecanCreate()
linenumberstrue
current.canCreate();

canDelete()


Используйте этот метод, чтобы проверить, доступно ли текущему пользователю удаление записей в указанной таблице по правилам контроля доступа (ACL).

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает значение
"
true
"
, если действие разрешено, если нет, метод возвращает
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titlecanDelete()
linenumberstrue
current.canDelete();

canRead()


Используйте этот метод, чтобы проверить, доступен ли текущему пользователю просмотр записей в указанной таблице по правилам контроля доступа (ACL).

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает значение
"
true
"
, если действие разрешено, если нет, метод возвращает
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titlecanRead()
linenumberstrue
current.canRead();

canUpdate()


Используйте этот метод, чтобы проверить, доступно ли текущему пользователю редактирование записей в указанной таблице по правилам контроля доступа (ACL).

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает значение
"
true
"
, если действие разрешено, если нет, метод возвращает
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titlecanUpdate()
linenumberstrue
current.canUpdate();

deleteMultiple()


Используйте этот метод, чтобы удалить записи из полученной выборки.Обратите внимание, что при удалении записей с помощью этого метода Вложения удаляемых записей не удаляются вложения.

Note

Не используйте этот метод для таблиц с зависимостями. Всегда удаляйте каждую запись по отдельности.

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает
"
true
"
, если записи успешно удалены, в случае ошибки метод возвращает значение
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titledeleteMultiple()
linenumberstrue
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 будет удалена текущая запись. 

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
idString Нет

Нет

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает значение
"
true
"
, еслизапись успешно удалена, в случае ошибки метод возвращает значение
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titledeleteRecord()
linenumberstrue
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

String

Да

Нет

valueStringНет
NULL
null

Возвращаемое значение:

ТипОписание
SimpleRecord object
Этот метод
Метод возвращает объект SimpleRecord из таблицы, указанной в запросе.

Пример:

Code Block
languagejs
themeEclipse
titleget()
linenumberstrue
const current = new SimpleRecord('task');
current.get('163663310116371174');


Info

В качестве значения для методаget() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта:

Code Block
languagejs
themeEclipse
titleSimpleRecord как аргумент
linenumberstrue
collapsetrue
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()


Данный Используйте метод возвращает , чтобы получить объект с атрибутами текущей записи в качестве ключей и значения атрибутов как значения значений ключей.

Возвращаемое значение:

ТипОписание
Object
Объект

Метод возвращает объект с атрибутами записи и их значениями.

Пример:

Code Block
languagejs
themeEclipse
titlegetAttributes()
linenumberstrue
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()


Данный Используйте метод возвращает , чтобы получить заголовок текущей таблицы.

Возвращаемое значение:

ТипОписание
String
Заголовок
Метод возвращает заголовок таблицы записи.

Пример:

Code Block
languagejs
themeEclipse
titlegetClassDisplayValue()
linenumberstrue
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getClassDisplayValue());
// Информация: Задачи

getConditionQuery()


Метод возвращает Используйте метод, чтобы получить текущее условие запроса.

Возвращаемое значение:

ТипОписание
String
Условие
Метод возвращает условие запроса.

Пример:

Code Block
languagejs
themeEclipse
titlegetConditionQuery()
linenumberstrue
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 Отображаемое поле.

В таблице представлены отображаемые значения в серверных скриптах по типам колонок.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
Property
propertyStringНет
NULL
null

Возвращаемое значение:

TypeОписание
String
Отображаемое
Метод возвращает отображаемое значение записи или поля.

Пример:

Code Block
languagejs
themeEclipse
titlegetDisplayValue()
linenumberstrue
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getDisplayValue('caller'));
ss.info(current.getValue('caller'));
// Информация: Иван Иванов
// Информация: 155931135900000001

getErrors() 
Anchor
getErrors()
getErrors()


Этот метод возвращает Используйте этот метод, чтобы получить сообщения об ошибке в случае сбоя при создании, обновлении или удалении записи.

Используйте этот метод для контроля проведения операции с записью в скрипте.

Warning

Настоятельно рекомендуется использовать данный метод, так как некоторые ошибки могут не отображаться в процессе отладки.

Например, ошибки в запросах условия, переданных addEncodedQuery() или аналогичным методом, можно получить, вызвав getErrors().

Возвращаемое значение:

ТипОписание
Array of Strings
Значения
Метод возвращает значения ошибок.

Пример:

Code Block
languagejs
themeEclipse
titlegetErrors()
linenumberstrue
const record = new SimpleRecord('user');
const insertedRecordId = record.insert();
if (insertedRecordId == 0) {
  ss.info(record.getErrors());
}
// Информация: ["Поле \"\"Логин\" [username]\" обязательно для заполнения. (id записи: )",...

getLabel(property) 
Anchor
getLabel()
getLabel()


Используйте этот метод, чтобы получить заголовок поля.

Info

Метод getLabel() не используется с атрибутами REM. Вместо этого используйте метод getTitle().

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДаНет

Возвращаемое значение:

ТипОписание
String
Название
Метод возвращает название поля.

Пример:

Code Block
languagejs
themeEclipse
titlegetLabel()
linenumberstrue
const current = ss.getUser();
const fieldLabel = current.getLabel('username');
ss.addErrorMessage('Поле "' +  fieldLabel + '" должно быть заполнено');
// Поле "Логин" должно быть заполнено

getReModelId() 
Anchor
getremodelid
getremodelid


Используйте этот метод, чтобы получить ID расширенной модели записи, относящейся к текущей записи. Используйте метод setReModelId, чтобы установить новый ID модели.

Возвращаемое значение:

ТипОписание

String

Метод возвращает ID модели. Если модель не найдена, метод возвращает значение ' null'.

Пример:

Code Block
languagejs
themeEclipse
titlegetReModelId()
linenumberstrue
(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()


Используйте этот метод, чтобы получить количество элементов в выборке.

Возвращаемое значение:

ТипОписание
Integer
Количество
Метод возвращает количество элементов в выборке.

Пример:

Code Block
languagejs
themeEclipse
titlegetRowCount()
linenumberstrue
const task = new SimpleRecord('task');
task.query();
ss.addInfoMessage('Количество всех задач: ' + task.getRowCount());
//Количество всех задач: 2

getTableName()


Используйте этот метод, чтобы получить системное название текущей таблицы.

Возвращаемое значение:

ТипОписание
String
Системное
Метод возвращает cистемное название текущей таблицы.

Пример:

Code Block
languagejs
themeEclipse
titlegetTableName()
linenumberstrue
const current = ss.getUser();
ss.info('/list/' + current.getTableName() + '/' + current.sys_id);
// Информация: /list/user/155931135900000001

getTitle(attribute) 
Anchor
getTitle()
getTitle()


Метод возвращает Используйте метод, чтобы получить заголовок указанного атрибута расширенной модели записи (REM).

Параметр:

НазваниеТипОбязательныйЗначение по умолчанию
columnStringДаНет

Возвращаемое значение:

ТипОписание
StringМетод возвращает заголовок атрибута REM.

Пример:

Code Block
languagejs
themeEclipse
titlegetTitle()
linenumberstrue
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'));
}
// Информация: Проверка завершена


Info

Чтобы вернуть колонки, заголовки которых не являются частью модели расширенной записи, используйте метод getLabel().

getValue(property) 
Anchor
getValue()
getValue()


Этот Используйте метод возвращает , чтобы получить значение указанного атрибута объекта.

Если поле относится к типу Reference или List, возвращается его значение sys_id.ID.

В таблице представлены отображаемые значения в серверных скриптах по типам колонок.

Note
Note

Используйте этот метод, чтобы получить значения полей типа Reference  Reference вместо Dot dot-walking.

Например, current.getValue('reference_field') вместо current.reference_field.sys_id.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДаНет

Возвращаемое значение:

ТипОписание
Any
Значение

Метод возвращает значение указанного атрибута объекта.

Пример:

Code Block
languagejs
themeEclipse
titlegetValue()
linenumberstrue
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Метод возвращает
"
true
"
, если в записи есть вложение, если нет, метод возвращает
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titlehasAttachment()
linenumberstrue
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
languagejs
themeEclipse
titleinitialize()
linenumberstrue
const taskRecord = new SimpleRecord('task');
ss.info(taskRecord.getAttributes().caller);
taskRecord.initialize();
ss.info(taskRecord.getAttributes().caller);
// Информация: 
// Информация: 155931135900000001

insert()


Этот метод использует Используйте метод, чтобы создать новую запись со значения полей объекта для создания новой записи.

Если запись не создана, метод возвращает «0» '0' (ноль) и генерирует сообщение об ошибке, которое можно получить с помощью метода getErrors().

Возвращаемое значение:

ТипОписание
String
  • Если запись не была создана, метод возвращает
«0»
  • '0' (ноль),
а так же
  • и генерирует сообщение со списком ошибок.
  • Если запись была создана, метод возвращает
уникальный
  • ID созданной записи.

Пример:

Code Block
languagejs
themeEclipse
titleinsert()
linenumberstrue
const newTask = new SimpleRecord('task');
newTask.subject = 'Subtask';
const insertedTaskID = newTask.insert();
ss.info(`/record/task/${insertedTaskID}`);
// Информация: /record/task/163675231910113745

isTableVcsEnabled()


Используйте этот метод, чтобы проверить установлен ли флажок Контроль версий для указанной таблицы.

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает значение атрибута
is_vcs_enabled
Контроль версийтаблицы записи.

Пример:

Code Block
languagejs
themeEclipse
titleisTableVcsEnabled()
linenumberstrue
const current = new SimpleRecord('user');
ss.info(current.isTableVcsEnabled());
// Информация: false

matchesCondition(condition)


Используйте этот метод, чтобы проверить, соответствует ли текущая запись условию.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
conditionStringНет''

Возвращаемое значение:

ТипОписание
BooleanМетод возвращает
"
true
"
, если запись соответствует указанным условиям, в противном случае метод возвращает
"
false
"
.

Пример:

Code Block
languagejs
themeEclipse
titlematchesCondition()
linenumberstrue
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

При первом вызове, метод возвращает первую запись в запросе. Если запрос пуст, метод возвращает

"

false

"

.

Пример:

Code Block
languagejs
themeEclipse
titlenext()
linenumberstrue
const user = new SimpleRecord('user');
user.setLimit(1);
user.query();
user.next();
ss.info(user.sys_id);
// Информация: 100000000000000000

orderBy(column)


Используйте этот метод, чтобы отсортировать записи в порядке возрастания.

Tip

Используйте этот метод несколько раз, чтобы отсортировать записи по нескольким колонкам.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
columnStringДаНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titleorderBy()
linenumberstrue
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

Используйте этот метод несколько раз, чтобы отсортировать записи по нескольким колонкам.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
columnStringДаНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titleorderByDesc()
linenumberstrue
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
languagejs
themeEclipse
titlequery()
linenumberstrue
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 и обновите снова.


ПараметрПараметры:

НазваниеТипОбязательныйЗначение по умолчанию
attributesString/ArrayДаНет


Info

Рекомендуется передавать Передавайте значение одного атрибута в качестве строки. Для передачи большего количества название атрибутов, используйте массив, как в примере ниже.

Возвращаемое значение:

ТипОписание
SimpleRecord object

Метод возвращает объект SimpleRecord, содержащий атрибуты и значения.

Note

Независимо от исходного содержимого набора атрибутов, возвращаемый объект всегда содержит атрибут sys_idID. Смотрите пример примеры ниже.


ПримерПримеры:

Code Block
languagejs
themeEclipse
titleselectAttributes(String)
linenumberstrue
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
languagejs
themeEclipse
titleselectAttributes(Array)
linenumberstrue
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, так как это может привести к непредсказуемому поведению системы.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
flagBooleanДаНет
messageStringНетНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlesetAbortAction()
linenumberstrue
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в выборке по условию.

Параметр:

НазваниеТипОбязательныйЗначение по умолчанию
maxNumRecordsIntegerДаНет

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlesetLimit()
linenumberstrue
const record = new SimpleRecord('user');
record.setLimit(3);
record.query();
ss.info(record.getRowCount());
// Информация: 3

setMultipleValue(property,value)


Используйте этот метод, чтобы установить значения свойств полей для каждой записи в текущей выборке.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДаНет
value
String
AnyДаНет

Возвращаемое значение:

ТипОписание
Void

Метод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlesetMultipleValue()
linenumberstrue
const task = new SimpleRecord('task');
task.addQuery('state', '7'); // Черновик
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '2'); // Открыто
// task.updateMultiple();

setReModelId(reModelId) 
Anchor
setremodelid
setremodelid


Используйте этот метод, чтобы установить ID определенной расширенной модели расширенной записи. Чтобы получить ID модели, используйте метод getReModelId.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
reModelIdStringДаНет

Если параметр reModelId равен "null", расширенная модель расширенной записи, относящейся относящаяся к записи, будет отвязана.

Возвращаемое значение:

ТипОписание
Void

Метод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlegetReModelId
linenumberstrue
()
linenumberstrue
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
languagejs
themeEclipse
titlesetReModelId()
linenumberstrue
(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)

 

Anchor
setValue()
setValue()


Используйте этот метод, чтобы установить значение поля в текущей записи.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
propertyStringДаНет
value
String
AnyДаНет

Возвращаемое значение:

ТипОписание
Void
Этот метод
Метод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlesetValue()
linenumberstrue
const task = new SimpleRecord('task');
task.setValue('subject', 'mail');
task.insert();

silentMode(enable)


Используйте этот метод для обновления записи без выполнения каких-либо элементов, связанных с этой записью, реализующих выполнения бизнес-логикулогики, например реализованной бизнес-правилаправилами, уведомленияуведомлениями, рабочие процессы рабочими процессами и т. д.другими.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
enableBooleanНетtrue

Возвращаемое значение:

ТипОписание
VoidМетод не возвращает значение.

Пример:

Code Block
languagejs
themeEclipse
titlesilentMode()
linenumberstrue
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
languagejs
themeEclipse
titleupdate()
linenumberstrue
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 или Integer
Boolean
  • Если произошли ошибки проверки и запись не была обновлена, метод возвращает
«0» и
  • false и генерирует сообщение со списком ошибок.
  • При отсутствии ошибок метод
не
  • возвращает значение true.

Пример:

Code Block
languagejs
themeEclipse
titleupdateMultiple()
linenumberstrue
const task = new SimpleRecord('task');
task.addQuery('state', '0'); // Открыто
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '10'); // Отменено
// task.updateMultiple();


Table of Contents
absoluteUrltrue
printablefalse