Перейти к содержанию

Пакеты действий

Пакеты действий создаются и редактируются из категории (вкладка 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 запросов в Общих настройках приложения.

Описание работы с пакетом действий в прежнем интерфейсе администрирования