Перейти к основному содержимому
Версия: 1.23.3

SimpleSystem

Методы этого класса предназначены для получения информации о системе, текущем пользователе и других данных.

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

ss.addInfoMessage(message, params)


Используйте этот метод для отображения информационного сообщения на языке текущего пользователя в правом нижнем углу. Для этого в параметр message введите значение из таблицы Исходные сообщения (source_message) из категории app. Дополнительные сведения см. в разделе Локализация элементов интерфейса. Параметр params позволяет определить значения для динамических частей переведенного сообщения.

Параметры:

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

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

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

Пример:

ss.addInfoMessage()
ss.addInfoMessage('Осталось три дня');
// или
ss.addInfoMessage('Осталось {count} {noun}', {'count': 'три', 'noun': 'дня'});

ss.addErrorMessage(message, params)


Используйте этот метод для отображения сообщения об ошибке на языке текущего пользователя в нижнем правом углу. Для этого в параметр message введите значение из таблицы Исходные сообщения (source_message) из категории app. Дополнительные сведения см. в разделе Локализация элементов интерфейса. Параметр params позволяет определить значения для динамических частей переведенного сообщения.

Параметры:

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

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

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

Пример:

ss.addErrorMessage()
ss.addErrorMessage('"Наименование" не может быть пустым');
// или
ss.addErrorMessage('"{title}" не может быть пустым', {title: "Наименование"});

ss.addSuccessMessage(message, params)


Используйте этот метод для отображения сообщения об успешно выполненном действии на языке текущего пользователя нижнем правом углу. Для этого в параметр message введите значение из таблицы Исходные сообщения (source_message) из категории app. Дополнительные сведения см. в разделе Локализация элементов интерфейса. Параметр params позволяет определить значения для динамических частей переведенного сообщения.

Параметры:

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

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

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

Пример:

ss.addSuccessMessage()
ss.addSuccessMessage('Успешно обновлено');
// или
ss.addSuccessMessage('Успешно {action_name}', {action_name: "обновлено"});

ss.info(message)


Используйте этот метод, чтобы добавить информационное сообщение в системный журнал, расположенный в таблице Основной журнал (sys_log).

Параметры:

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

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

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

Пример:

ss.info()
const task = new SimpleRecord('task');
task.orderByDesc('sys_created_at');
task.setLimit(1);
task.selectAttributes('number');
task.query();
while(task.next()){
ss.info(task.number);
}

ss.debug(message)


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

Параметры:

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

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

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

Пример:

ss.debug()
const insertedID = inquiry.insert();
if (insertedID == '0') {
ss.debug(inquiry.getErrors());
} else {
ss.debug(`Создан запрос с ID ${insertedID}`)
}

ss.warning(message)


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

Параметры:

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

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

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

Пример:

ss.warning()
const task = new SimpleRecord('task');
task.query();
while(task.next()){
ss.warning(task.sys_id);
}

ss.error(message)


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

Параметры:

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

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

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

Пример:

ss.error()
(function executeRule(current, previous /*null when async*/ ) {
const nowDateTime = new SimpleDateTime();
const targetDateTime = new SimpleDateTime(current.appropriate_datetime);
const secondsLeft = targetDateTime.getNumericValue() - nowDateTime.getNumericValue();
if (secondsLeft < 1800) { // осталось меньше получаса
ss.addErrorMessage('Время начала проведения работ не может начаться ранее, чем через полчаса');
ss.error(`Срочный запрос: осталось ${secondsLeft} до начала работ`);
current.setAbortAction(true);
}
})(current, previous);

ss.eventQueue(name, current, param_1, param_2, param_3, param_4, param_5)


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

Значение параметра name должно совпадать с наименованием записи Реестра событий (sys_event_register).

Таблица переданного текущего объекта должна совпадать с таблицей, указанной в записи Реестра событий (sys_event_register) или таблицей, расширенной от нее.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
nameStringДаНет
currentSimpleRecord objectДаНет
param_1StringНетnull
param_2StringНетnull
param_3StringНетnull
param_4StringНетnull
param_5StringНетnull

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

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

Пример:

ss.eventQueue()
if (current.state != '10') { // Не закрыт
ss.eventQueue('incident.close', current, ss.getUserID());
}

ss.eventQueueScheduled(name, current, process_started_at, param_1, param_2, param_3, param_4, param_5)


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

Значение параметра name должно совпадать с наименованием записи Реестра событий (sys_event_register).

Таблица переданного текущего объекта должна совпадать с таблицей, указанной в записи Реестра событий (sys_event_register) или таблицей, расширенной от нее.

Параметры:

НазваниеТипОбязательныйЗначение по умолчанию
nameStringДаНет
currentSimpleRecord objectДаНет
process_started_atSimpleDateTime objectДаНет
param_1StringНетnull
param_2StringНетnull
param_3StringНетnull
param_4StringНетnull
param_5StringНетnull

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

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

Пример:

ss.eventQueueScheduled()
if (current.state != '10') { // Не закрыт
const plusThreeDays = new SimpleDateTime(); // сейчас
plusThreeDays.addDays(3); // + 3 дня
ss.eventQueueScheduled('incident.autoclose', current, plusThreeDays, ss.getUserID());
}

ss.generateResetToken()


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

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

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

Пример:

generateResetToken()
const resetToken = ss.generateResetToken();
ss.info(resetToken);
//Информация: l_kxwLi-TsTwmgLYk3euOCeXeA14nE2U_1610699284

ss.generateUrlAction(userId, script, expire)


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

По умолчанию после перехода по URL-адресу открывается главная страница. Если необходимо перенаправить пользователя на другую страницу, введите ее адрес в переменную redirectUrl внутри скрипта.

По умолчанию отображается всплывающее сообщение Действие выполнено. Чтобы изменить текст сообщения, измените переменную message внутри скрипта.

Всплывающее сообщение можно отключить. Для этого установите message = null или ''.

Параметры:

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

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

ТипОписание
StringМетод возвращает URL-адрес действия.

Пример:

ss.generateUrlAction()
const simpleInstanceUri = ss.getProperty('simple.instance.uri');
const instanceUrl = simpleInstanceUri.startsWith('https://') ? simpleInstanceUri : 'https://' + simpleInstanceUri;


const аctionScript = `
const task = new SimpleRecord('task');
task.get('${current.sys_id}');
if (task.state == '7') { // Завершена
task.state = '10'; // Закрыта
task.update();
}
message = null;
redirectUrl = '${instanceUrl}' + '/record/task/' + '${current.sys_id}';
`;
const nowDateTime = new SimpleDateTime();
nowDateTime.addDays(3);
const url = ss.generateUrlAction(current.getValue('caller'), аctionScript, nowDateTime.getValue());
ss.info(url);
//Информация: your-instance-uri.simpleone.ru/url-action/run?key=Q2GqNFRXCRY2

ss.getApplicationId()


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

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

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

Пример:

ss.getApplicationId()
const appId = ss.getApplicationId();
ss.info(appId);
//Информация: 155931135900000002

ss.getProperty(name)


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

Параметры:

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

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

ТипОписание
StringМетод возвращает значение свойства, если доступно; в противном случае метод возвращает null.

Пример:

ss.getProperty()
ss.info(ss.getProperty('simple.passwordreset.enabled'));
//Информация: false

ss.setProperty(name, value, description)


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

Если запись существует, то метод обновляет ее значение и описание.

Параметры:

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

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

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

Пример:

ss.setProperty()
ss.setProperty('user.timezone.default', 'Europe/Moscow', 'Укажите часовой пояс пользователя по умолчанию');

ss.getSession()


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

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

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

Пример:

ss.getSession()
const session = ss.getSession();
const ipAddress = session.getClientIP();
ss.info(ipAddress);
//Информация: 127.0.0.1

ss.getUser()


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

внимание

В возвращаемом объекте недоступны свойства таблицы Сотрудники (employee) и других дочерних таблиц от таблицы Пользователи (user).

let user = ss.getUser();
user.work_schedule = '157165229904988595'; /* 24/7 */
user.update();

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

ТипОписание
SimpleRecord objectМетод возвращает объект SimpleRecord текущего пользователя.

Пример:

ss.getSession()
ss.info(ss.getUser().username);
//Информация: admin

ss.getUserID()


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

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

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

Пример:

ss.getUserID()
const approval = new SimpleRecord('sys_approval');
approval.addQuery('approver_id', ss.getUserID());
approval.addQuery('state', 'requested');
approval.selectAttributes('sys_id');
approval.query();
if (approval.getRowCount() > 0) {
//...
}

ss.getDocIdByIds(tableId,recordId)


Используйте метод, чтобы на основе ID таблицы и ID записи таблицы получить строку со значением Document ID (32-значное значение UUID).

Параметры:

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

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

ТипОписание
StringМетод возвращает запись Document ID (32-значное значение UUID).

Пример:

ss.getDocIdByIds()
const docID = ss.getDocIdByIds(current.sys_db_table_id, current.sys_id);
const approval = new SimpleRecord('sys_approval');
approval.addQuery('item', docID);
approval.query();

ss.getTableIdByDocId(docId)


Используйте метод, чтобы на основе записи Document ID (32-значное значение UUID) получить ID таблицы.

Параметры:

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

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

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

Пример:

ss.getTableIdByDocId()
const tableID = ss.getTableIdByDocId(current.item);
const table = new SimpleRecord('sys_db_table');
table.get(tableID);
const record = new SimpleRecord(table.name);
const recordID = ss.getRecordIdByDocId(current.item);
record.get(recordID);
ss.addInfoMessage(record.sys_created_at);
//Информация: 2020-05-24 16:30:21

ss.getRecordIdByDocId(docId)


Используйте метод, чтобы на основе записи DocumentID (32-значное значение UUID) получить ID записи.

Параметры:

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

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

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

Пример:

ss.getRecordIdByDocId()
const tableID = ss.getTableIdByDocId(current.item);
const table = new SimpleRecord('sys_db_table');
table.get(tableID);
const record = new SimpleRecord(table.name);
const recordID = ss.getRecordIdByDocId(current.item);
record.get(recordID);
ss.addInfoMessage(record.sys_created_at);

ss.hasRole(role)


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

Параметры:

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

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

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

Пример:

ss.hasRole()
const isUserManager = ss.hasRole('process_manager'); // true или false
return isUserManager;
внимание

Этот метод всегда возвращает значение true, если у пользователя есть указанная роль или роль admin. Чтобы проверить, есть ли у пользователя определенная роль, используйте следующий скрипт:

ss.hasRole
const MANAGER_ROLE = 'process_manager';
const userHasRole = new SimpleRecord('sys_user_has_role');
userHasRole.addQuery('user_id', ss.getUserId());
userHasRole.addQuery('role_id.name', MANAGER_ROLE);
userHasRole.setLimit(1);
userHasRole.selectAttributes(['sys_id']);
userHasRole.query();
const isManager = !!userHasRole.next();
return isManager

ss.importIncludeScript(name)


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

Параметры:

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

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

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

Пример:

ss.hasRole()
ss.importIncludeScript('calculateCAB');
const approvers = [];
if (!!current.customized_cab) {
approvers = approvers.concat(current.customized_cab.split(','));
}
if (!current.ignore_automatically_generated_cab) {
const includeScriptResult = calculateCAB(current);
approvers = approvers.concat(includeScriptResult);
}

ss.setRedirect(url)


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

примечание

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

Не рекомендуетсяРекомендуется
https://instance.Пример.com/record/task/record/task

Параметры:

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

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

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

Пример:

ss.setRedirect()
ss.setRedirect(`/list/${current.getTableName()}`);
// Перенаправить на листовое представление текущей таблицы

ss.setRedirect('/record/task');
// Перенаправить на форму создания новой записи в таблице "Задачи"