Определения
Переменные — это именованные объекты, с помощью которых можно манипулировать данными.
Переменные можно использовать для передачи данных между сценарием, записями, процессами и внешними системами.
Переменные в сценарии аналогичны атрибутам, но не привязаны к какому-либо шаблону.
В сценариях можно обращаться к системным переменным, локальным переменным сценария и переменным приложения.
Системные переменные
Системные переменные в сценарии инициализируются при его срабатывании.
Вне сценария системные переменные могут иметь другие значения и могут быть недоступны.
Предусмотрены следующие системные переменные:
BusinessObject
— ID записи, связанной с текущим экземпляром шаблона процесса в сценариях по событиям «Вход токена» и «Выход токена».origin
— значение зависит от типа события, вызвавшего сценарий:- событие «Нажатие кнопки» — ID записи, экземпляра процесса, задачи или аккаунта, для которого была нажата кнопка;
- события «Создание записи», «Изменение записи» — ID записи;
- события «Запуск процесса», «Вход токена», «Выход токена» — ID экземпляра процесса.
ProcessObject
— ID экземпляра процесса в сценариях по событиям «Запуск процесса», «Вход токена», «Выход токена».dialogVariables
— локальные переменные кнопки, которая вызвала сценарий по событию «Нажатие кнопки». Значения локальных переменных кнопки задаются в диалоговом окне для кнопки. См. пример.IncomingMessage
— в эту переменную можно поместить значения атрибутов ответа на HTTP-запрос в сценариях по событию «Получено сообщение».- Атрибуты ответа настраиваются в свойствах пути передачи данных «Получение HTTP-запросов».
- Чтобы изменить значения атрибутов ответа, используйте действие «Изменить значения переменных»: в поле «Набор переменных» укажите
IncomingMessage
, добавьте переменные в таблицу и задайте их значения.
timeZoneOffset
— смещение часового пояса сервера в минутах, тип данных — «Длительность».requestTime
— текущее время, тип данных «Дата и время».
Локальные переменные сценария
Локальные переменные сценария инициализируются с помощью действий сценария.
Локальные переменные сценария доступны только во время его работы, обратиться к ним вне сценария нельзя.
В сценариях предусмотрены следующие локальные переменные:
- Переменная, хранящая ID объекта, используемого для текущей итерации, в действии «Повторять по количеству объектов».
- Переменная, хранящая номер текущей итерации в действии «Повторять по числовому счётчику».
- Набор переменных, заданных в действии «Изменить значения переменных».
- Переменные для успешного ответа и ответа с ошибкой в действии «Отправить сообщение».
- Переменная, хранящая ID документа, в действии «Создать документ по шаблону».
Переменные типа «Объект»
С помощью действия «Изменить значения переменных» можно передавать переменные типа «Объект». Для этого необходимо создать родительскую переменную и добавить к ней дочерние:
- Создайте переменную, оставив её значение пустым.
- Установите флажок у имени родительской переменной в списке и нажмите кнопку «Создать».
- Дважды нажмите значок рядом с родительской переменной.
- В таблице отобразится дочерняя переменная.
Использование переменных в формулах и выражениях N3
Чтобы обратиться к переменной в формуле, укажите её системное имя с префиксом $$
.
Например, чтобы присвоить атрибуту значение ID процесса, связанного с шаблоном записи, используйте формулу:
FORMAT("{0}", LIST($$ProcessObject))
В выражениях N3 с переменными следует работать как с атрибутами. Чтобы обратиться к переменной, требуется импортировать функции для работы с ними.
Например, чтобы присвоить атрибуту значение ID процесса, связанного с шаблоном записи, используйте выражение:
# Импортируем функции для работы с переменными
@prefix variable: <http://comindware.com/ontology/session/variable#>.
@prefix session: <http://comindware.com/ontology/session#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
@prefix cmwstring: <http://comindware.com/logics/string#>.
{
# Находим значение системной переменной ProcessObject
# и помещаем его в ?ProcessObject.
session:context variable:ProcessObject ?ProcessObject.
# Форматируем ?ProcessObject в строку и помещаем в ?FullId.
("{0}" ?ProcessObject) string:format ?FullId.
# Обрезаем префикс "user." и помещаем ID процесса в атрибут.
(?FullId 5) cmwstring:substring ?value.
}
Практический пример
Настроим сценарий для массовой корректировки записей в табеле трудозатрат с использованием локальных переменных кнопки.
- Создайте шаблон записи «Трудозатраты» с атрибутом «Затраченное время» типа «Длительность».
-
Создайте шаблон записи «Табели трудозатрат» и добавьте в него атрибут «Записи трудозатрат» со следующими свойствами:
- Тип данных: запись
- Связанный шаблон: Трудозатраты
- Хранить несколько значений: флажок установлен
-
В шаблоне «Табели трудозатрат» создайте кнопку «Скорректировать время» со следующими свойствами:
- Контекст операции: запись
- Операция: вызвать событие «Нажата кнопка»
- Сохранять запись после выполнения: флажок установлен
- Результат выполнения: обновить данные
-
На вкладке «Локальные переменные» добавьте локальную переменную «Новое время» со следующими свойствами:
- Тип данных: длительность
- Системное имя:
newTime
-
На вкладке «Свойства» установите флажок «Отображать диалоговое окно» и настройте диалоговое окно:
- Отображаемое название: Введите затраченное время.
- Поместите на форму переменную «Новое время».
-
Настройте форму для шаблона записи «Табели трудозатрат»:
- Поместите на форму атрибут «Записи трудозатрат» как таблицу.
- Поместите кнопку «Скорректировать время» в область кнопок таблицы «Записи трудозатрат».
- В таблицу «Записи трудозатрат» поместите столбцы «ID» и «Затраченное время».
-
Настройте сценарий со следующим событием:
- Тип: нажатие кнопки
- Контекстный шаблон: Табели трудозатрат
- Кнопка: Скорректировать время
-
Добавьте действие «Повторять по количеству объектов» со следующими свойствами:
- Переменная —
rec
- Атрибут или выражение для поиска объектов: атрибут «Записи трудозатрат»
- Переменная —
-
Добавьте действие «Сменить контекст» внутрь действия «Повторять по количеству объектов» со следующими свойствами:
- Целевой шаблон записи: Трудозатраты
- Атрибут или выражение для поиска объектов: формула
$$rec
-
Добавьте действие «Изменить значения атрибутов» внутрь действия «Сменить контекст» со следующими свойствами:
- Атрибут «Затраченное время»
- Операция со значениями: Заменить.
-
Значение:
- Формула:
$$dialogVariables->newTime
или
- N3:
# Импортируем функции для работы с переменными
@prefix variable: <http://comindware.com/ontology/session/variable#>.
@prefix session: <http://comindware.com/ontology/session#>.
{
# Помещаем системную переменную dialogVariables в ?dialogVariables.
session:context variable:dialogVariables ?dialogVariables.
# Находим в ?dialogVariables значение переменной newTime.
?dialogVariables variable:newTime ?value.
}
- Формула:
Тестирование
- Создайте запись в шаблоне «Табели трудозатрат».
- На форме «Табель» создайте несколько записей в таблице «Записи трудозатрат» и не заполняйте поле «Затраченное время».
- Сохраните запись.
- Нажмите кнопку «Скорректировать время».
- Отобразится диалоговое окно «Введите затраченное время».
- В поле «Новое время» введите желаемое значение.
- Во всех записях в таблице «Записи трудозатрат» будет установлено затраченное время, которое вы ввели в диалоговом окне.