Versions Compared

Key

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

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

SimpleRecord(tableName)


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


Параметры:

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

Пример:

Code Block
languagejs
themeEclipse
titleSimpleRecord
linenumberstrue
const taskRecord = new SimpleRecord('task');


REM attribute object


В классе SimpleRecord имеется отдельный объект Record Extended Modelsrem_attr, который содержит информацию о REM attributes. Используйте его для чтения и редактирования значений атрибута REM текущей записи с помощью других методов класса, как в примере ниже.

Tip

rem_attr имеет несколько методов аналогичных методам SimpleRecord: 

Например:

record.rem_attr.getValue('my_rem_attribute');

Параметр:

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

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

ТипОписание
SimpleRecord objectМетод возвращает значение SimpleRecord object из определенной модели расширенной записи. Метод возвращает"null", если запись не имеет модели расширенной записи.

Пример:

Code Block
languagejs
themeEclipse
titleget using REM
linenumberstrue
const record = new SimpleRecord('task');
record.get('160638931615274614');
if (record.getReModelId()) {
    ss.info(record.rem_attr.description);
}

addOrCondition(property, operator, value)


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

Вы также можете задавать атрибуты расширенной модели записи (REM-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы соответствующие типу атрибута. 

Note

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


Параметры:

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

Нет


Info

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

'<sys_id>:<attr_name>',

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


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


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

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


Примеры:

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('Condition query: ' + 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('Condition query: ' + record.getConditionQuery());
record.query();
// Info: Condition 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('Tasks count: ' + 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Условие запроса добавленое в объект SimpleRecord.


Примеры:

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('Count: ' + 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("Total rows: " + record.getRowCount());
// Info: Total rows: 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('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());
// Инфо: Количество задач: 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))
// Ошибка: Condition query is invalid


Параметр:

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

Нет

Info

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

'<sys_id>%3A<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();
// Info: Decoded condition: (active=1)^((sys_db_table_id=158645243815904649^166972638116358001:descriptionLIKEwork))

canCreate()


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

Так же используйте этот метод в  UI Actions, чтобы оптимизировать видимость записей.


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

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


Пример:

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

canDelete()


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

Так же используйте этот метод в  UI Actions, чтобы оптимизировать видимость записей.


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

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


Пример:

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

canRead()


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

Так же используйте этот метод в  UI Actions, чтобы оптимизировать видимость записей.


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

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


Пример:

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


canUpdate()


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

Так же используйте этот метод в  UI Actions, чтобы оптимизировать видимость записей.


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

ТипОписание
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());
// Info: 0
// Info: true


deleteRecord()


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


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

ТипОписание
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('Task with ID ' + task.sys_id + ' was deleted!');
  return;
}
ss.error(task.getErrors());


get(propertyOrValue, value)


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


Параметры:

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

Значение строки ID записи или имени свойства. Если значение равно имени свойства, второй параметр value является обязательным.

Note

Передача значения 'NULL' или пустой строки в качестве значения параметра propertyOrValue ведет к исключению:

"Аргумент 1 переданный в "get()" не может быть пустым".


ДаНет
valueStringНетNULL


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

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


Пример:

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

if (current.sys_id) {
    const company = new SimpleRecord('org_company');
    company.get('c_website', current.c_customer_url);
    ss.eventQueue('notify.responsible', current, company.responsible.email);
}


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('No tasks found!');
  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('Condition before query: ' + task.getConditionQuery());
task.query();
ss.info('Condition after query: ' + task.getConditionQuery());
// Info: Условие до запроса: (state=7)^OR(priority<3)
// Info: Условие после:

getDisplayValue(property) 
Anchor
getDisplayValue()
getDisplayValue()


Данный метод возвращает значение поля display_by_ref или значение записи. Например, для поля reference возвращается название сущности, а не ID.


Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
PropertyStringНет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(condition) или аналогичным, можно отобразить, вызвав этот метод.


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

ТипОписание
ArrayЗначение ошибки


Пример:

Code Block
languagejs
themeEclipse
titlegetErrors
linenumberstrue
const record = new SimpleRecord('user');
const insertedRecordId = record.insert();
if (insertedRecordId == 0) {
  ss.info(record.getErrors());
}
// Инфо: ["Поле \"\"First Name\" [first_name]\" является обязательным. (record 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Системное название текущей таблицы


Пример:

Code Block
languagejs
themeEclipse
titlegetTableName
linenumberstrue
const current = ss.getUser();
ss.info('/list/' + current.getTableName() + '/' + current.sys_id);
// Info: /list/user/155931135900000001

getTitle(attribute) 
Anchor
getTitle()
getTitle()


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

Параметр:

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

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

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


Пример:

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'));
}
// Инфо: Ревью завершено


Info

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

getValue(property) 
Anchor
getValue()
getValue()


Этот метод возвращает значение свойства объекта на основе его имени.

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

Note

To speed up the script execution, use this method to get values of the fields of the Reference type instead of Dot-walking.

For example, it is preferable to use the current.getValue('reference_field') structure instead of current.reference_field.sys_id one.


Параметры:

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


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

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

Значение строки свойства объекта.


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 пользователя в вашем часовом поясе

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('File should be attached');
  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» (ноль) и выводит сообщение об ошибке, которое можно получить с помощью метода getErrors().


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

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


Пример:

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

isTableVcsEnabled()


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


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

ТипОписание
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()


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


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

ТипОписание
Record 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


Note

Пока метод не вызван, значения объекта SimpleRecord недоступны., и появляется сообщение «Текущая запись не установлена». См. пример:

Code Block
languagejs
themeEclipse
const task = new SimpleRecord('task');
task.setLimit(1);
task.query();
// task.next();
ss.info(task.number);
// Ошибка: Текущая запись не установлена.



orderBy(column)


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


Tip

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


Параметры:

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


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

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


Пример:

Code Block
languagejs
themeEclipse
titleorderBy
linenumberstrue
const firstLog = new SimpleRecord('sys_log');
firstLog.orderBy('sys_created_at'); // oldest record first
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);
// Info: 2021-06-03 06:34:02 - IMAP IMAP (Default): Connection error: ...


orderByDesc(column)


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


Параметры:

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


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

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


Пример:

Code Block
languagejs
themeEclipse
titleorderByDesc
linenumberstrue
const lastComment = new SimpleRecord('sys_activities_stream_field');
lastComment.orderByDesc('sys_created_at'); // newest record first
lastComment.setLimit(1);
lastComment.selectAttributes(['value', 'sys_created_by']);
lastComment.query();
lastComment.next();
ss.info(lastComment.sys_created_by.display_name + ': ' + lastComment.value);
// Info: John Doe: test

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('Task number: ' +  tasks.number);
}
// Info: Task number: TSK0000001
// Info: Task number: TSK0000003


selectAttributes(attributes)


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


Warning

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

Info

Заполните запись, чтобы сохранить.


Параметр:

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


Info

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


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

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

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

Note

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


Пример:

Code Block
languagejs
themeEclipse
titleselectAttributes (String)
linenumberstrue
const record = new SimpleRecord('user');
record.selectAttributes('email');
record.query();
record.next();
ss.info(record.getAttributes());
// Инфо: {"email":"john.doe@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)


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


Note

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


Note

Не рекомендуется использовать этот метод с бизнес-правилами async, так как это может привести к непредсказуемому поведению системы.


Параметры:

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


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

ТипОписание
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'; // Open
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());
// Info: 3


setMultipleValue(property,value)


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


Параметры:

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

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

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

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


Code Block
languagejs
themeEclipse
titlesetMultipleValue
linenumberstrue
const task = new SimpleRecord('task');
task.addQuery('state', '7'); // Draft
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '2'); // Open
// task.updateMultiple();

setReModelId(reModelId) 
Anchor
setremodelid
setremodelid


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

Параметры:

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

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

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

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

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

Пример:

Code Block
languagejs
themeEclipse
titlegetReModelId
linenumberstrue
const 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(), значения его атрибутов, привязанных к предыдущей модели, будут сброшены.

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



setValue(property, value) 
Anchor
setValue()
setValue()


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

Параметры:

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


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

ТипОписание
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());
// Info: 155931135900000001
// Info: []


updateMultiple()


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

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

ТипОписание
Void или Integer
  • Если произошли ошибки проверки и запись не была обновлена, метод возвращает «0» и сообщение со списком ошибок.
  • При отсутствии ошибок метод не возвращает значение.


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