Versions Compared

Key

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

Этот серверный класс содержит методы для работы с записями базы данных с учетом правил контроля доступа (ACL) конкретного пользователя.

  • Если пользователь не имеет разрешения на Создание поля, но попробует заполнить его через скрипт, метод getErrors не вернет ошибок, запись создастся, однако запрещенное поле будет пустым.
  • Все методы SimpleRecordSecure идентичны методам SimpleRecord, но применяются с учетом правил контроля доступа.

    Если пользователь выполняет операцию Создание, Запись или Удаление в базе данных при наличии запрещающих ACL, операция не будет выполнена, а метод getErrors(), вызванный после нее,

    Если пользователь не имеет разрешения на Запись/Удаление данных, метод getErrors

    вернет соответствующую ошибку.

    Если пользователь

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

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

    Параметры:

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titleSimpleRecordSecure
    linenumberstrue
    const taskRecord = new SimpleRecordSecure('task');

    REM-атрибуты объекта

    В классе SimpleRecord имеется отдельный объект расширенной модели записи (REM) – rem_attr, который содержит информацию о REM-атрибутах. Используйте его для чтения и редактирования значений REM-атрибутов текущей записи с помощью методов класса, как в примере ниже.

    Tip

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

    Например:

    record.rem_attr.getValue('my_rem_attribute');

    Пример:

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

    addOrCondition(property, operator, value)

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

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

    Note

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

    Параметры:

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

    Нет

    Info

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

    '<sys_id>:<attr_name>',

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

    operatorStringНет=valueInteger/String/Boolean/Array/SimpleRecordSecure objectДаНет

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

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

    Примеры:

    Code Block
    languagejs
    themeEclipse
    titleaddOrCondition()
    linenumberstrue
    const record = new SimpleRecordSecure('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 SimpleRecordSecure('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 SimpleRecordSecure('task');
    task.setLimit(1);
    task.query();
    if (!task.next()) {
      ss.info('No tasks found!');
      return;
    }
    
    const relatedTask = new SimpleRecordSecure('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-атрибута.

    выполняет операцию Чтение из базы данных при наличии запрещающих ACL, данные предоставлены не будут, но метод getErrors() не вернет ошибок.

    Поведение системы при наличии запрещающих правил контроля доступа (ACL)

    Запрещенное действиеЗапрет для записиЗапрет для поля
    СозданиеЕсли пользователь заполняет запись через скрипт и выполняет метод insert(), то запись не создается.

    Если пользователь заполняет поле через скрипт и выполняет метод insert(), то запись создается, но поле пусто или заполнено значением по умолчанию (если оно предусмотрено).

    Запись

    Если пользователь указывает новые значения для полей записи через скрипт и выполняет метод update(), то запись не обновляется. При вызове updateMultiple() записи в выборке, изменение которых запрещено ACL, остаются без изменений, остальные успешно обновляются.

    Если пользователь указывает новое значение поля через скрипт и выполняет метод update()updateMultiple(), то запись обновляется, но значение полей, доступ к которым запрещен, остается без изменений.

    Удаление

    Если пользователь пытается удалить запись через скрипт и выполняет метод deleteRecord(), то запись остается без изменений. При вызове deleteMultiple(), если в выборке есть хоть одна запись, удаление которой запрещено, ни одна запись не удаляется.

    -

    ЧтениеЕсли пользователь запрашивает запись через скрипт, скрытые данные не включаются в ответ. Вся строка ответа пустая.Если пользователь запрашивает данные поля через скрипт, они не включаются в ответ. Колонка с запрещенным полем пустая.
    operatorStringНет=valueInteger/String/Boolean/Array/SimpleRecordSecure objectДаНет

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

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

    Примеры:

    Code Block
    languagejs
    themeEclipse
    titleaddQuery()
    linenumberstrue
    const task = new SimpleRecordSecure('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 SimpleRecordSecure('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 SimpleRecordSecure('task');
    task.setLimit(1);
    task.query();
    if (!task.next()) {
      ss.info('Нет задач!');
      return;
    }
    
    const otherTask = new SimpleRecordSecure('task');
    otherTask.addQuery('caller', task.caller);
    otherTask.addQuery('sys_id', '!=', task.sys_id);
    otherTask.query();
    ss.info('Количество задач: ' + otherTask.getRowCount());
    // Информация: Количество задач: 720

    addEncodedQuery(condition)

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

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

    Note

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

    При настройке фильтрации по текстовым полям String, Text, Translated Text, Conditions и URL используйте фигурные скобки для аргумента фильтрации. Запись аргумента в круглых скобках может вызвать ошибку фильтрации:

    Code Block
    languagejava
    themeEclipse
    titleФильтрация по текстовым полям
    linenumberstrue
    collapsetrue
    const subject = 'Hello, SimpleOne)';
    const task = new SimpleRecordSecure('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>:<attr_name>',

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

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

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

    Примеры:

    Code Block
    languagejs
    themeEclipse
    titleaddEncodedQuery()
    linenumberstrue
    const currentUser = ss.getUser();
    const reciever = new SimpleRecordSecure('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 SimpleRecordSecure('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 SimpleRecordSecure('sys_activity_feed_item');
    record.addQuery('content', 'isempty');
    record.query();
    ss.info(record.getRowCount());
    ss.info(record.deleteMultiple());
    // Информация: 0
    // Информация: true

    deleteRecord(id)

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

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

    Параметры:

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

    Нет

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titledeleteRecord()
    linenumberstrue
    const task = new SimpleRecordSecure('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 или пустой строки в качестве значения параметра propertyOrValue ведет к исключению:

    "Аргумент 1 функции "get()" не может быть пустым".

    Параметры:

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

    String

    Да

    Нет

    valueStringНетnull

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titleget()
    linenumberstrue
    const current = new SimpleRecordSecure('task');
    current.get('163663310116371174');
    InfoВ качестве значения для методаget() вместо ID записи может быть передано значение из Reference поля в формате current.{reference_field_name}. Пример скрипта:
    Code Block
    languagejs
    themeEclipse
    titleSimpleRecord как аргумент
    linenumberstrue
    collapsetrue
    const task = new SimpleRecordSecure('task');
    task.setLimit(1);
    task.query();
    if (!task.next()) {
      ss.info('Нет задач!');
      return;
    }
    
    const user = new SimpleRecordSecure('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 SimpleRecordSecure('task');
    current.get('163663310116371174');
    ss.info(current.getClassDisplayValue());
    // Информация: Задачи

    getConditionQuery()

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlegetConditionQuery()
    linenumberstrue
    const task = new SimpleRecordSecure('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)  AnchorgetDisplayValue()getDisplayValue()

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

    Без параметра данный метод возвращает отображаемое значение записи из поля с установленным флажком Отображаемое поле.

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

    Параметры:

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

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

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

    Пример:

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

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

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

    Warning

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

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

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

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

    Пример:

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

    Используйте этот метод, чтобы получить 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 SimpleRecordSecure('sys_rmc_model');
            model.get(current.getReModelId()); // текущая модель
            current.$$service = model.getValue('cmdb_service_id'); // Передает в сервис, если поле существует
        }
    })(current, previous);

    getRowCount()

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlegetRowCount()
    linenumberstrue
    const task = new SimpleRecordSecure('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)  AnchorgetTitle()getTitle()

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

    Параметр:

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlegetTitle()
    linenumberstrue
    const current = new SimpleRecordSecure('task');
    current.get('163638951512716126');
    if (current.sys_id) {
        ss.info(current.rem_attr.getTitle('reviewed'));
    }
    // Информация: Проверка завершена
    const current = new SimpleRecordSecure('task');
    current.get('163638951512716126');
    if (current.sys_id) {
        ss.info(current.rem_attr.getTitle('reviewed'));
    }
    // Информация: Проверка завершена
    Info

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

    getValue(property)  AnchorgetValue()getValue()

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

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

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

    Note

    Используйте этот метод, чтобы получить значения полей типа Reference вместо 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 SimpleRecordSecure('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 SimpleRecordSecure('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 SimpleRecordSecure('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 SimpleRecordSecure('task');
    newTask.subject = 'Subtask';
    const insertedTaskID = newTask.insert();
    ss.info(`/record/task/${insertedTaskID}`);
    // Информация: /record/task/163675231910113745

    isTableVcsEnabled()

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

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

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

    Пример:

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

    matchesCondition(condition)

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

    Параметры:

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlematchesCondition()
    linenumberstrue
    const task = new SimpleRecordSecure('task');
    task.description = 'emaio';
    ss.info(task.matchesCondition('descriptionLIKEemail')); // false
    task.description = 'email';
    ss.info(task.matchesCondition('descriptionLIKEemail')); // true

    next()

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

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlenext()
    linenumberstrue
    const user = new SimpleRecordSecure('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 SimpleRecordSecure('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): Ошибка соединения: ...

    orderByDesc(column)

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

    Tip

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

    Параметры:

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titleorderByDesc()
    linenumberstrue
    const lastComment = new SimpleRecordSecure('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 SimpleRecordSecure('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

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

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

    Примеры:

    Code Block
    languagejs
    themeEclipse
    titleselectAttributes(String)
    linenumberstrue
    const record = new SimpleRecordSecure('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 SimpleRecordSecure('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
    • Скрипт, написанный после вызова данного метода не будет выполняться.
    • Не рекомендуется использовать этот метод с бизнес-правилами типа async, так как это может привести к непредсказуемому поведению системы.

    Параметры:

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlesetAbortAction()
    linenumberstrue
    const current = new SimpleRecordSecure('task');
    current.get('163663310116371174');
    const hasAttach = current.hasAttachment();
    if (!hasAttach) {
        ss.addErrorMessage('Нужно прикрепить вложение!');
        current.setAbortAction(true);
    }
    current.state = '2'; // Открыто
    current.update();

    setLimit(maxNumRecords)

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

    Параметр:

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

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

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

    Пример:

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

    setMultipleValue(property,value)

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

    Параметры:

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

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

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

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

    Пример:

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

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

    Параметры:

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

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

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlegetReModelId()
    linenumberstrue
    const task = new SimpleRecordSecure('task');
    task.get('163352033916904699');
    if (task.getValue('service') === '164069027812962298') { // Почтовый сервер
        task.setReModelId('158569205818704980'); // Запрос доступа к почтовому серверу
    } else {
        task.setReModelId(null);
    }
    task.update();
    Note
    • При вызове данного метода на экземпляре SimpleRecordSecure, значения его атрибутов, привязанных к предыдущей модели, будут сброшены.
    • После вызова данного метода и обновления текущей записи, значения атрибутов предыдущей модели будут утеряны.

    Пример:

    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 {
            current.setReModelId(null);
        }
    
    })(current, previous);
    setValue(property, value) AnchorsetValue()setValue()

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

    Параметры:

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

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

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

    Пример:

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

    silentMode(enable)

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

    Параметры:

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titlesilentMode()
    linenumberstrue
    const task = new SimpleRecordSecure('task');
    task.addQuery('active', false);
    task.addQuery('approval_state', 'isempty');
    task.query();
    ss.info(task.getRowCount());
    task.silentMode();
    task.setMultipleValue('approval_state', 'not_requested'); // задает значение по умолчанию
    //task.updateMultiple();

    update()

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

    Info

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

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

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

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

    Пример:

    Code Block
    languagejs
    themeEclipse
    titleupdate()
    linenumberstrue
    const current = new SimpleRecordSecure('user');
    current.get(ss.getUserId());
    current.timezone_id = '156076775207670452'; // UTC
    ss.info(current.update());
    ss.info(current.getErrors());
    // Информация: 155931135900000001
    // Информация: []

    updateMultiple()

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

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

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

    Пример:

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


    Table of Contents