Show/Hide Toolbars

Руководство администратора

Редактор смарт-выражения

Ссылки Назад Вверх Вперед

Основой редактора смарт-выражений является меню встроенных функций и операторов. Сверху над меню расположено поле Имя, оно содержит название smart-выражения. Само смарт-выражение формируется в поле, расположенном под меню, над кнопкой Сохранить .

exp1

Интерфейс редактирования смарт-выражения

Чтобы добавить в смарт-выражение функцию или оператор, выберите его мышью в меню и затем заполните атрибуты. Чтобы вставить в строку параметр или объект из дерева сущностей, щелкните по нему мышью. Если вы предварительно выделите атрибут в строке, то введенный параметр заменит этот атрибут:

smart_exp_edit

Редактирование параметра функции

Чтобы удалить функцию из смарт-выражения, щелкните левой кнопкой мыши по названию и выберите "Удалить" в появившемся контекстном меню:

smart_exp_del

Удаление функции

Дерево сущностей

В левой части окна редактирования смарт-выражения расположено дерево сущностей: в нем представлены параметры и объекты "Первой Формы", которые можно использовать в смарт-выражениях, а также набор предопределенных конструкций для работы с этими объектами.

smart_tree

Дерево сущностей в окне редактирования смарт-выражений

В дереве сущностей представлены:

системные объекты, единичные или коллекции (коллекции представляют собой наборы однотипных объектов). Например, задачи, подписи, пользователи, группы, орг.единицы;

основные (системные) и дополнительные параметры задач, а также параметры других объектов. Например, ID задачи, текст задачи, ID подписи, название подписи;

свойства контекста. Их набор и значения определяются тем, откуда вызывается smart-выражение. Например, при вызове из задачи свойства контекста содержат параметры этой конкретной задачи, а при обработке некоторых событий — параметры события;

переменные (результаты предыдущих смарт-действий в рамках одного пакета);

раздел "Прочее" предоставляет доступ ко всем объектам и параметрам системы (включая те, которые описаны в трех первых пунктах) вне контекста, то есть независимо от того, откуда вызывается smart-выражение.

Иконки дерева сущностей

Иконка

Описание

smart_param_context_unque

Ключ, или уникальный идентификатор (например, ID задачи). Этот параметр позволяет однозначно идентифицировать конкретный объект в общем множестве подобных объектов

smart_param_context_single

Параметр, который возвращается в единственном числе (например, срок задачи)

smart_param_context_group

Единичный объект, который имеет набор собственных параметров (например, заказчик задачи или родительская задача)

smart_param_context_tree

Коллекция — множество однотипных объектов (например, исполнители задачи или дочерние задачи); каждый из объектов может иметь свой набор параметров

smart_param_context_tool

Конструкция для работы с коллекциями

Параметры

Единичные параметры smart_param_context_single соответствуют основным (системным) или дополнительным параметрам задач. Единичные параметры могут иметь следующие типы:

Тип

Обозначение

Пояснения

Пример

целое число

Int32


Номер задачи, ID заказчика, ID статуса, Приоритет

десятичная дробь

Decimal


Процент выполнения

строка

String


Текст задачи, Дерево проектов

логическое значение

Boolean

String

Параметр типа "логическое значение" может иметь два представления: boolean и  string. В Boolean возможны значения True, true, False, false; в String возможны значения "да", "Да", "нет", "Нет"

Ожидает подписи, Закрыта, Срок заблокирован

дата\время

DateTime


Дата создания, Срок, Дата завершения

При выборе параметра в дереве сущностей он добавляется в смарт-выражение:

smart_tree_parameter_added

Обращение к параметру

В зависимости от типа параметра, к нему можно применять соответствующие операторы и функции.

Единичные объекты

Единичные объектыsmart_param_context_groupмогут иметь только одно значение. Например, Заказчик, Ответственный исполнитель, Родительская задача. Также единичные объекты соответствуют дополнительным параметрам следующих типов: Lookup, Список выбора задач в категории, Файл, Дерево.

smart_tree_single_object

Единичные объекты в дереве сущностей

Такие объекты имеют набор собственных параметров. Например, объект Заказчик имеет параметры ID пользователя, Ник, Полное имя и т.д. Чтобы получить доступ к параметрам объекта, надо раскрыть список параметров, нажав на знак "+" рядом с именем объекта:

smart_tree_single_object_parameters_list

Параметры единичного объекта

В smart-выражение можно добавить как сам единичный объект, так и любой из его параметров (параметры добавляются к имени объекта через точку):

smart_tree_single_object_added

Обращение в параметрам единичного объекта

Для ДП Lookup и "Список выбора задач из категории" к списку параметров добавляется строка "Выбрать значения для сравнения":

smart_tree_single_object_parameters_list_with_str

Параметры для сравнения

Если кликнуть по этой строке мышью, откроется окно выбора значений — аналогичное тому, что открывается в пользовательском интерфейсе. В нем доступны для выбора задачи из категории, на которую настроен соответствующий ДП.

По нажатию кнопки Сохранить будет сформировано smart-выражение, проверяющее, входит ли данный объект в список выбранных значений (в фигурных скобках перечисляются ID задач):

smart_tree_single_object_select_added

Список выбранных значений

Коллекции (множественные объекты)

Если какой-то параметр задачи может одновременно хранить несколько значений, то ему в дереве сущностей соответствует множественный объект smart_param_context_tree , или коллекция. Например, Исполнители, Дочерние задачи, Запрошенные подписи. Также коллекции соответствуют дополнительным параметрам следующих типов: Выбор пользователей, Таблица, Выбор нескольких задач из категории.

Каждый экземпляр коллекции имеет набор собственных параметров. Для работы с коллекциями используются специальные конструкции; чтобы получить доступ к этим конструкциям, надо нажать на знак "+" рядом с именем коллекции:

smart_tree_multi_object_tools_list

Конструкции, которые используются для работы с коллекциями

ДП "Выбор пользователей" в дереве сущностей могут соответствовать три отдельные строчки (в зависимости от настроек конкретного ДП — от того, разрешен ли выбор отдельных пользователей, групп и орг.единиц):

smart_tree_users

Один ДП типа "Выбор пользователей" представлен в дереве сущностей тремя строками

Если в других категориях имеются ДП типа Lookup, "Список выбора задач в категории" или "Выбор нескольких задач в категории", которые настроены на выбор из данной категории, то для каждого такого ДП в дерево сущностей добавляется коллекция, с помощью которой можно отобрать задачи, которые ссылаются на данную задачу.

smart_tree_lookup

Дополнительный объект для отбора задач, ссылающихся на данную

Конструкции для работы с коллекциями

Для работы с коллекциями используются специальные конструкции smart_param_context_tool, которые позволяют отбирать из множества один или несколько объектов по определенным правилам или подсчитывать количество таких объектов. Для каждой коллекции доступен стандартный набор из 10 конструкций:

smart_tree_tools

Конструкции для работы с коллекциями

Первые 4 конструкции из этого набора раскрываются и содержат вложенные конструкции "вернуть сам элемент" и "вернуть свойство элемента":

smart_tree_tools2

Вложенные конструкции

При выборе конструкции в смарт-выражение добавляется соответствующая строка. Конструкция "вернуть сам элемент" возвращает объект — структуру, содержащую все параметры объекта:

smart_tree_tools3

Выражение, возвращающее сам объект

Конструкция "вернуть свойство элемента" возвращает соответствующие свойства (параметры) объекта:

smart_tree_tools4

Выражение, возвращающее свойство элемента

Конструкции, название которых заканчивается словами "такой что", "таких что" и т.п., предусматривают ввод дополнительных условий отбора. При выборе таких конструкций открывается вложенное окно для ввода условия, а в дереве сущностей отображается контекст объекта, а не задачи в целом. Обратиться к параметрам исходной задачи можно, раскрыв папку вверху дерева. Для возврата к обычному виду надо нажать кнопку Закончить редактирование  (чтобы добавить в smart-выражение введенные условия) или Отмена (чтобы вернуться без сохранения):

Кликните мышью для просмотра изображения в полном размере

Редактирование дополнительных условий для отбора объектов

Свойства контекста и переменные

Набор объектов и параметров в дереве сущностей определяется тем, откуда вызывается редактор smart-выражений и, соответственно, тем, для каких объектов создается выражение (то есть контекстом).

Когда редактор вызывается из категории, то дерево сущностей содержит параметры этой конкретной категории:

smart_context_task

Дерево сущностей с параметрами категории, из которой вызывается смарт-выражение

При вызове из окна привязки пакета действий к событию (для некоторых событий) в дереве сущностей содержатся параметры события. Для разных событий параметры могут различаться:

smart_tree_event_context

или

smart_tree_event2_context

Параметры событий

При редактировании условий отбора из коллекции в дереве сущностей отображаются параметры этого объекта с возможностью обратиться к параметрам исходной задачи:

smart_context_tool

Выражение, возвращающее свойство элемента

При переходе к редактированию смарт-выражений из раздела "Почта" (меню "Система" — "Почта", кнопка Smart) в дереве сущностей отображаются параметры электронного письма, а внизу дерева — параметры почтового клиента (ящик, папки и пр.):

smart_context_email

Параметры электронного письма и почтового ящика

Некоторые смарт-действия возвращают значения, которые могут быть использованы в следующих смарт-действиях в рамках одного смарт-пакета. Эти значения доступны в блоке "Переменные".

Кликните мышью для просмотра изображения в полном размере

Переменные в дереве сущностей

Раздел "Прочее"

В разделе "Прочее" доступны все объекты системы "Первая Форма" вне контекста задачи и события. Например, с помощью раздела "Прочее" можно из одной задачи получить значение ДП в другой задаче.

smart_tree_extra_example

Использование элементов раздела "Прочее"

Объект "Текущий пользователь" позволяет получить данные о пользователе — например, чтобы вывести его имя, проверить его принадлежность к группам и орг. единицам и т.п.

Работа с остальными объектами из раздела "Прочее" осуществляется так же, как и с остальными коллекциями:

smart_tree_extra

Выражение, возвращающее свойство элемента

Если раскрыть раздел Другие задачи из категорий, то откроется дерево категорий. Если раскрыть раздел Задачи из сводных разделов, то откроется список настроенных в системе сводных разделов.

smart_tree_extra_all_tasks

Вложенные подразделы раздела "Прочее"

При редактировании Общих смартов, то есть вне какого-либо контекста, обратиться к объектам и их параметрам можно только с помощью раздела "Прочее".

Сохранение смарт-выражения

Для использования созданного смарт-выражения или смарт-фильтра его надо сохранить в системе, нажав кнопку Сохранить. Иногда существующее смарт-выражение надо немного модифицировать и сохранить под другим именем. Для этого введите новое имя в поле "Имя" и нажмите кнопку Сохранить как новый.

smart_exp_save

Сохранение смарт-выражения

Для копирования всего смарт-выражения или его части можно использовать стандартный способ копирования через буфер обмена (клавиши Ctrl+C чтобы скопировать и Ctrl+V чтобы вставить).

warning_icon  При создании смарт-выражения надо следить за тем, чтобы возвращаемый результат имел нужный тип. Например, если формируется смарт-выражения для записи в поле "Дата", результат этого выражения должен иметь тип "Дата". Если формируется смарт-выражение для записи в поле, соответствующее единичному объекту, то результатом не может быть список. Если список формируется непосредственно в смарт-выражении, то он должен иметь формат {ААА, ВВВ, ССС}.

Использование фигурных скобок

В смарт-выражениях могут использоваться как единичные объекты, так и коллекции и списки. Бывают случаи, когда смарт-выражение должно обязательно возвращать коллекцию, даже если она включает в себя только один элемент. Чтобы единичный объект или список таких объектов воспринимался как коллекция, он заключается в фигурные скобки.

smart_collection

Примеры использования фигурных скобок

Использование ID объектов вместо номеров

Вместо непосредственного ввода ID объекта предпочтительнее использовать кнопку Выбрать ID объекта. В этом случае откроется окно для выбора:

smart_object_select_window

Выбор ID объекта в смарт-выражении

В результате будет создана конструкция, в которой вместо числового ID объекта используется типизированная ссылка на него:

smart_object_select

Использование ID объекта в смарт-выражении

Такой способ формирования ссылки на объект является предпочтительным, поскольку облегчает выполнение служебных заданий и перенос смарт-выражений между разными инсталляциями системы.

Использование параметров события

Некоторые смарт-события имеют контекстные переменные (например, для перехода по маршруту — пользователь, нажавший на кнопку). Если смарт-выражение вызывается в пакете документов, привязанном к такому событию, в дереве сущностей будет отображаться папка "Параметры события ...". Раскрыв папку, вы увидите список параметров и сможете обратиться к нужному свойству.

smart_event_param

Обращение к параметру события в смарт-выражении

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

Порядок создания смарт-выражений

Чаще всего сложные выражения удобнее создавать, начиная с общего "контура" и постепенно углубляясь в детали:

Кликните мышью для просмотра изображения в полном размере

Создание сложного смарт-выражения

Проверка смарт-выражения

Созданное выражение или фильтр можно протестировать на существующих задачах. Для этого надо указать номер задачи и нажать кнопку Тест. Результат проверки отобразится во всплывающем окне:

smart_test

 Проверка смарт-выражения

После тестирования отображаются два окна с текстом смарт-выражения в форматах E-SQL и TSQL.

smart_sql_test

 Смарт-выражение в формате SQL

Тестирование в контексте

Если смарт-выражение использует переменные контекста события, чтобы протестировать его надо раскрыть блок "Контекстные параметры" и заполнить значения всех параметров. Список параметров зависит от события, к которому привязан пакет (на скриншоте ниже контекстные параметры для события "Перед сменой приоритета").

smart_test_context

Тестирование смарт-выражения, использующего переменные контекста события

Логирование смартов

Для оценки сложности smart-выражений и smart-фильтров и нагрузки, которую они создают на сервер приложения, используется логирование смартов:

Если в интерфейсе администратора в Общих настройках приложения (пункт меню "Система" — "Общие настройки приложения") заданы параметры "Логировать время выполнения smart запросов" и др, то в журнале (пункт меню "Журналы" — "Лог выполнения автоматизации") будут создаваться записи, фиксирующие время выполнения smart-выражений и smart-фильтров.

Полезные ссылки