Использование переменных
Основные понятия
Как и переменные в языке программирования, переменные в рабочем процессе — важный инструмент для связывания и организации процессов.
После срабатывания рабочий процесс выполняется по узлам; в части элементов настройки узлов можно использовать переменные. Источник переме нных — данные из вышестоящих узлов относительно текущего, в том числе следующих категорий:
- Контекстные данные триггера: например, при триггерах событий действия или событиях коллекции объект данных одной строки может использоваться всеми узлами как переменная. Конкретика зависит от реализации каждого триггера.
- Данные вышестоящего узла: когда выполнение доходит до любого узла — это данные результата ранее завершённых узлов.
- Локальные переменные: когда узел находится внутри особых ветвящихся конструкций, он может использовать локальные переменные этой ветки. Например, в цикле можно использовать объект данных каждой итерации.
- Системные переменные: встроенные параметры системы, например текущее время.
Мы уже неоднократно использовали переменные в разделе Быстрый старт. Например, в узле «Вычисление» можно ссылаться на контекстные данные триггера при вычислениях:

В узле «Обновить запись» контекст триггера можно использовать как переменную в условии фильтрации, а результат узла «Вычисление» — как переменную для значения обновляемого поля:

Структура данных
Внутренне переменная задаётся как структура JSON, и обычно можно использовать конкретный фрагмент данных по его JSON-пути. Так как многие переменные основаны на структуре коллекций NocoBase, данные связей выстраиваются по уровням как свойства объектов и образуют древовидную структуру. Например, можно выбрать значение конкретного поля из данных связи в результате запроса. Кроме того, если связь ведёт к множеству связанных записей, переменная может быть массивом.
При выборе переменной чаще всего нужен атрибут значения на последнем уровне — обычно это простой тип данных (число или строка). Если же на каком-то уровне иерархии есть массив, последний уровень тоже отображается как массив. Такие данные можно корректно обработать только если узел поддерживает массивы. Например, в узле «Вычисление» часть вычислительных движков имеет функции для работы с массивами. Другой пример — узел «Цикл»: объект цикла тоже может быть массивом.
Например, когда узел «Выбрать записи» возвращает несколько записей, результат узла будет массивом нескольких однотипных строк данных:
Если этот результат в последующих узлах используется как переменная и выбран путь вида Данные узла / Выбрать записи / Заголовок, получится массив значений соответствующего поля по всем строкам:
Если это многомерный массив (например, поле связи «многие-ко-многим»), после развёртывания получится одномерный массив значений этого поля.
Встроенные системные переменные
Системное время
Возвращает системное время в момент выполнения узла. Часовой пояс соответствует настройке на сервере.
Параметры диапазона дат
Используются при настройке условий фильтрации поля даты в узлах запроса, обновления и удаления. Поддерживается только сравнение с оператором «является». И время начала, и время окончания диапазона учитывают часовой пояс, заданный на сервере.


