Пакеты действий¶
Пакеты действий создаются и редактируются из категории (вкладка Smart) или раздела Общие SMART.
ℹ️ Некоторые действия могут выполняться корректно только в контексте конкретной категории. Такие действия недоступны при создании пакетов действий из раздела Общие SMART. Например, это относится к действию "Принудительно изменить статус" и т.п.
Вы можете создать пакет, сразу привязав его к событию, или без привязки к событию.
Чтобы создать новый пакет действий, привязанный к событию, создайте новую привязку к нужному событию и затем из привязки нажмите кнопку Создать. Вы можете выбрать один из уже созданных пакетов в выпадающем списке, а чтобы изменить его, нажмите кнопку Редактировать.
Чтобы создать новый пакет действий без привязки к событию, нажмите кнопку Создать пакет в разделе Пакеты действий. Чтобы отредактировать уже существующий пакет, кликните мышью по его названию.
Откроется окно редактирования смарт-пакета. В окне указывается название пакета и настраиваются действия, которые будут последовательно выполнятся при запуске пакета. Изменить порядок действий в пакете можно, перетаскивая строки мышкой.
В поле Название пакета вводится произвольный текст, описывающий логику пакета.
ℹ️ Если присвоить пакету имя, которое будет содержать в себе апострофы (\'), работать с таким пакетом действий будет невозможно, пока апострофы не будут убраны из названия. Кавычки (") использовать можно.
ℹ️ При выборке пакета действий: если пакет использует смарт-скрипты, привязанные к событию А, то его нельзя выбрать в контексте события B.
Смарт-действия существуют только в составе пакета действий.
Для удаления пакета действий выберите соответствующий пункт в контекстном меню строки или выберите значение Удалить пакет в меню быстрых действий с пакетом.
Создание и редактирование смарт-действия¶
Чтобы создать новое смарт-действие в пакете, нажмите кнопку +Действие. Откроется окно создания смарт-действия.
Все реализованные в системе смарт-действия перечислены в выпадающем списке и распределены по смысловым блокам.
Вы можете выбрать нужное смарт-действие, просматривая весь список, или найти его по слову в названии — для этого начните набирать слово, и система подскажет возможные варианты.
После выбора смарт-действия в окне редактирования отобразится список его параметров.
В качестве формата значений некоторых параметров система предлагает выбрать один из вариантов:
| Значение | Описание |
|---|---|
| Значение | Справа от параметра появляется поле для ввода фиксированного значения параметра нужного типа. Если значение имеет тип "Булево" (то есть может принимать значение "истина" или "ложь"), рядом с таким полем отображается флажок, который может быть включен или выключен |
| Smart/TSQL | Появляется возможность выбрать одно из сохраненных ранее смарт-выражений (из выпадающего списка), при необходимости изменить его (кнопка ) или создать новое (кнопка ). Смарт-выражение может быть сохранено как в формате Smart, так и в формате TSQL. |
| Lua-скрипт | Появляется возможность выбрать один из сохраненных ранее Lua-скриптов (из выпадающего списка), при необходимости изменить его (кнопка ) или создать новый (кнопка ). |
| Оставить пустым | Если параметр необязательный, то значение ему не будет присвоено |
| Текущая задача | Доступно для параметров типа Задача. В этом случае действие будет выполнено в той же задаче, в которой происходит событие |
ℹ️ Smart-выражение должно возвращать тип данных, соответствующий параметру (например, для флажка это True\False, для даты\времени — DateTime, для задачи — ID задачи и т.п.). Если возвращаемое значение список, который формируется непосредственно в смарт-выражении, то он должен иметь формат {ААА, ВВВ, ССС} ℹ️ Lua-скрипт должен возвращать тип данных, соответствующий параметру (например, для флажка это True\False, для даты\времени — DateTime, для задачи — ID задачи и т.п.). Если возвращаемое значение список, который формируется непосредственно в Lua-скрипте, то он должен иметь формат {ААА, ВВВ, ССС}
ℹ️ При быстром тестировании смарт-выражения, используемого в параметрах смарт-действия, выборка ограничена 100 записями. Если ожидаемый результат содержит больше записей, для проверки полного результата используйте выполнение сгенерированного T-SQL-скрипта непосредственно в базе данных.
По умолчанию действия выполняются в той же задаче, из которой вызываются. Если же действие должно быть выполнено в другой задаче (например, из родительской задачи нужно изменить значение ДП в подчиненной задаче), то в поле Задача необходимо указать ID целевой задачи. Если смарт-выражение в поле "Задача" возвращает несколько задач, то смарт-действие будет выполнено в каждой из них.
Если действия выполняются от имени какого-то пользователя, то этот пользователь должен обладать соответствующими правами. В противном случае при выполнении смарт-действия возникнет ошибка. Поэтому если есть возможность, действия следует выполнять от имени специального пользователя — системного робота, который обладает максимальными правами (в Общих настройках приложения этот пользователь указывается в поле "Диспетчер задач").
При выполнении некоторых смарт-действий можно писать "тихий" комментарий. Такой комментарий не имеет адресатов и не увеличивает счетчик индикатора непрочитанных комментариев у подписчиков задачи. "Тихий" комментарий всегда прочитывается автоматически и не отправляет push-уведомления, независимо от настроек уведомлений.
В параметрах, отмеченных знаком *, значение должно быть указано обязательно!
Автогенерация описания логики смарт-пакета¶
Для удобства работы со смарт-пакетами, содержащими несколько действий, в "Первой Форме" реализован механизм автогенерации описания логики, реализованной в пакете. При добавлении каждого действия вы можете отметить один или несколько параметров, определяющих суть действия (Показ превью), и при сохранении смарт-действия по этим параметрам будет сгенерирован текст.
Показ превью
Автогенерация описаний смарт-действий, входящих в пакет, не изменяет поле описания самого пакета — это поле формируется вручную и может содержать произвольный текст. Изменить описание можно в меню быстрых действий.
Описание пакета действий отображается при наведении мыши на кнопку информации.
Меню быстрых действий\ Нажатие на кнопку в панели инструментов открывает меню быстрых действий со смарт-пакетом.
Доступные действия:
| Действие | Описание |
|---|---|
| Редактировать название | Вызывает окно, в котором можно отредактировать название пакета действий. |
| Редактировать описание | Вызывает окно, в котором можно указать или отредактировать описание пакета действий. |
| Редактировать модуль | Вызывает окно, в котором можно выбрать модуль, к которому относится данный пакет действий. Если модуль не выбран, пакет находится в глобальном модуле. |
| Дублировать пакет | После подтверждения в текущей категории будет создана копия пакета действий |
| Удалить пакет | Удаляет пакет действий |
Передача параметров между смарт-действиями¶
Некоторые смарт-действия возвращают результаты, эти результаты записываются в переменные. В описании таких смарт-действий присутствует фраза "(возвращает ХХХ)", где ХХХ — тип результата. Если в пакете есть такие смарт-действия, то в следующих смарт-действиях при редактировании смарт-выражений в дереве сущностей присутствует пункт "Переменные", в котором можно обратиться к результатам предыдущих смарт-действий.
Циклические смарт-пакеты¶
Если действия в пакете должны выполняться несколько раз для разных объектов, для пакета нужно включить признак циклического выполнения.
Для циклического пакета отображаются две дополнительные настройки:
-
Список итерируемых объектов — список объектов, над которыми должен выполняться пакет. Список задается смарт-выражением, которое возвращает строку с ID объектов, перечисленными через запятую.
-
Условие прерывания цикла — смарт-выражение с условием. Когда условие выполняется, цикл прерывается.
Каждому циклу неявным образом присваивается индекс итерации (счетчик повторов), который доступен в рамках смарт-пакета, вместе с текущим значением итератора (элемента списка итерируемых объектов).
ℹ️ Переменные цикла доступны в окне редактирования смарт-выражения только в том случае, если в пакете заданы выражения "Список итерируемых объектов" и "Условие прерывания цикла"
ℹ️ Индекс итерации начинается со значения 0
Выполнение циклического пакета¶
Логика работы:
-
Вычисляется список итерируемых объектов и запускается цикл, перебирающий эти объекты;
-
Значение текущего объекта из списка и индекс итерации передаются во все смарт-выражения в действиях пакета;
-
Выполнение прекращается, когда пакет выполнен для всех объектов списка или когда выполнено условие прерывания цикла.
Пример:
Смарт-выражение возвращает список номеров строк ДП "Таблица". Например, если таблица содержит три строки, то смарт-выражение вернет список {1, 2, 3}.
Список итерируемых объектов
Поскольку индекс итерации начинает считать с 0, а в данном примере таблица содержит три строки, соответственно после трех циклов интерации индекс итерации (0, 1, 2) станет равным 3 — условие прерывания.
Условие прерывания цикла
Если вы обрабатываете все строки таблицы подряд, для обращения к нужной строке таблицы можно использовать индекс итерации — он всегда принимает значения от 0 и по порядку по возрастанию.
Однако если вы обрабатываете не все строки таблицы, а выборочные по определенному условию, то нужно обращаться к списку итерируемых объектов. Например, если под ваше условие подходят только 3 строки из 10, индекс итерации будет принимать значения 0, 1 и 2, а список итерируемых объектов будет возвращать номера 3,5 и 7 (номера строк, подходящих под условие). Обратите внимание, что список итерируемых объектов отдается как строка, а не как число.
Логирование смарт-пакетов¶
Логирование смарт-пакетов зависит от опций Логировать выполнение smart запросов в Общих настройках приложения.
Описание работы с пакетом действий в прежнем интерфейсе администрирования