You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

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

SimpleRecord(tableName)


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


Параметры:

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

Пример:

SimpleRecord
const taskRecord = new SimpleRecord('task');


REM attribute object


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

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

Например:

record.rem_attr.getValue('my_rem_attribute');

Параметр:

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

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

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

Пример:

get using REM
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-атрибуты) определенной таблицы. Чтобы отфильтровать записи, используйте операторы соответствующие типу атрибута. 

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


Параметры:

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

Нет

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

'<sys_id>:<attr_name>',

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

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


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

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


Примеры:

addOrCondition
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)
addOrCondition c REM-атрибутом
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)

В качестве значения для метода 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('Tasks count: ' + relatedTask.getRowCount());
// Инфо: Количество задач: 122

addQuery(property, operator, value)


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

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

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

Параметры:

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

Нет

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

'<sys_id>:<attr_name>',

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

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


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

ТипОписание
SimpleRecordУсловие запроса добавленое в объект SimpleRecord.


Примеры:

addQuery
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
addQuery с REM-атрибутом
let record = new SimpleRecord('task');
record.addQuery('166972638116358001:description', 'not work');
record.query();
ss.info("Total rows: " + record.getRowCount());
// Info: Total rows: 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());
// Инфо: Количество задач: 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);
}
// Info: (subjectLIKEHello, SimpleOne))
// Error: Condition query is invalid


Параметр:

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

Нет

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

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

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

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

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

Примеры:

addEncodedQuery
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))
addEncodedQuery с REM-атрибутом
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".


Пример:

canCreate
current.canCreate();

canDelete()


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

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


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

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


Пример:

canDelete
current.canDelete();

canRead()


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

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


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

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


Пример:

canRead
current.canRead();

canUpdate()


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

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


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

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


Пример:

canUpdate
current.canUpdate();

deleteMultiple()


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

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


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

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


Пример:

deleteMultiple
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".


Пример:

deleteRecord
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 является обязательным.

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

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

ДаНет
valueStringНетNULL


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

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


Пример:

get
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);
}

В качестве значения для метода get() вместо 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 user = new SimpleRecord('user');
user.get(task.caller);
user.language_id = '156628684306541141'; // Английский
ss.info(user.update());
// Инфо: 167515292501757147

getAttributes()


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

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

ТипОписание
ObjectМассив атрибутов

Пример:

getAttributes
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Заголовок или название


Пример:

getClassDisplayValue
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getClassDisplayValue());
// Инфо: Задача

getConditionQuery()


Метод возвращает текущее условие запроса.

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

ТипОписание
StringУсловие запроса

Пример:

getConditionQuery
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) 


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


Параметры:

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


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

TypeОписание
StringПоле или значение записи


Пример:

getDisplayValue
const current = new SimpleRecord('task');
current.get('163663310116371174');
ss.info(current.getDisplayValue('caller'));
ss.info(current.getValue('caller'));
// Инфо: Иван Иванов
// Инфо: 155931135900000001

getErrors() 


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

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

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

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

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

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

Пример:

getErrors
const record = new SimpleRecord('user');
const insertedRecordId = record.insert();
if (insertedRecordId == 0) {
  ss.info(record.getErrors());
}
// Инфо: ["Поле \"\"First Name\" [first_name]\" является обязательным. (record id: )",...

getLabel(property) 


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

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


Параметры:

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


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

ТипОписание
StringНазвание поля


Пример:

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

getReModelId() 


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

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

ТипОписание

String

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

Пример:

getReModelId
(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Количество элементов в ряду

Пример:

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

getTableName()


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


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

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


Пример:

getTableName
const current = ss.getUser();
ss.info('/list/' + current.getTableName() + '/' + current.sys_id);
// Info: /list/user/155931135900000001

getTitle(attribute) 


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

Параметр:

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

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

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


Пример:

getTitle
const current = new SimpleRecord('task');
current.get('163638951512716126');
if (current.sys_id) {
    ss.info(current.rem_attr.getTitle('reviewed'));
}
// Инфо: Ревью завершено

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

getValue(property) 


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

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

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

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


getValue
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".

Пример:

hasAttachment
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Метод не возвращает значение.

Пример:

initialize
const taskRecord = new SimpleRecord('task');
ss.info(taskRecord.getAttributes().caller);
taskRecord.initialize();
ss.info(taskRecord.getAttributes().caller);
// Инфо: 
// Инфо: 155931135900000001

insert()


Этот метод использует значения полей текущей записи для вставки в новую запись.

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


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

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


Пример:

insert
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 таблицы записи.

Пример:

isTableVcsEnabled
const current = new SimpleRecord('user');
ss.info(current.isTableVcsEnabled());
// Инфо: false


matchesCondition(condition)


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


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

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

ТипОписание
BooleanМетод возвращает "true", если запись соответствует указанным условиям, в противном случае метод возвращает "false".
matchesCondition
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".


Пример:

next
const user = new SimpleRecord('user');
user.setLimit(1);
user.query();
user.next();
ss.info(user.sys_id);
// Инфо: 100000000000000000

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

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

orderBy(column)


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

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


Параметры:

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


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

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


Пример:

orderBy
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Метод не возвращает значение.


Пример:

orderByDesc
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Метод не возвращает значение.


Пример:

query
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)


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

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

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

Параметр:

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

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


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

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

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

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

Пример:

selectAttributes (String)
const record = new SimpleRecord('user');
record.selectAttributes('email');
record.query();
record.next();
ss.info(record.getAttributes());
// Инфо: {"email":"john.doe@email.com","sys_id":"162423321917274937"}


Пример:

selectAttributes (Array)
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)


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


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

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


Параметры:

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


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

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


Пример:

setAbortAction
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Метод не возвращает значение.


Пример:

setLimit
const record = new SimpleRecord('user');
record.setLimit(3);
record.query();
ss.info(record.getRowCount());
// Info: 3

setMultipleValue(property,value)


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


Параметры:

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

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

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

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

setMultipleValue
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) 


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

Параметры:

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

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

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

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

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

Пример:

getReModelId
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();

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

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


setValue(property, value) 


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

Параметры:

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


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

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


Пример:

setValue
const task = new SimpleRecord('task');
task.setValue('subject', 'mail');
task.insert();

silentMode(enable)


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


НазваниеТипОбязательныйЗначение по умолчанию
enableBooleanНетtrue
ТипОписание
VoidМетод не возвращает значение.
silentMode
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()


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

Используйте этот метод для существующих записей.

  • Измененияя буду применены, если запись уже существовала.
  • Если запись ранее не существовала, метд getErrors() вернет сообщение об ошибке: "Невозможно обновить новую запись. Используйте для этого `insert()`. (record id: )"


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

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


Пример:

update
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» и сообщение со списком ошибок.
  • При отсутствии ошибок метод не возвращает значение.
updateMultiple
const task = new SimpleRecord('task');
task.addQuery('state', '0'); // Открыто
task.query();
ss.info(task.getRowCount());
task.setMultipleValue('state', '10'); // Отменено
// task.updateMultiple();

  • No labels