Синтаксис формул в дизайнере бизнес-процессов
Окно формулы в настройках элементов бизнес-процесса позволяет решить множество задач пользователей bpm'online без необходимости привлечения разработчиков. Например, автоматически формировать тексты email-сообщений на основе исходных данных, определять условия для перехода по потокам и т.д. Чтобы использовать все возможности бизнес-процессов, необходимо на базовом уровне владеть синтаксисом формул.
Содержание
•Основные синтаксические правила
•Примеры использования синтаксиса формул
Основные синтаксические правила
При работе с полем формул следует придерживаться определенного синтаксиса, который будет привычным для пользователей, знакомых с С#. При работе с полем [Формула] важно придерживаться типизации при заполнении формул. По возможности используйте значения одного типа, к примеру, текстовые с текстовыми, числовые с числовыми. Иначе необходимо преобразовать значения в нужный тип.
Кроме того, рекомендуем ознакомиться с основными операторами, которые помогут реализовать сложные условия в окне [Формула].
"" | Текстовые строки необходимо заключить в кавычки. |
+ | Используется для соединения значений. |
== | Определяет равенство двух значений. |
!= | Определяет неравенство двух значений. |
<, > | Сравнивает величину двух значений. |
>=, <= | Больше или равно, меньше или равно. |
&& | Логическое “И”. |
|| | Логическое “Или”. |
true, false | Булевы значения “Истина” и “Ложь”. |
\n, <br> | Перенос текстовой строки. |
Примеры использования синтаксиса формул
В большинстве случаев синтаксис при заполнении элемента [Формула] сводится не только к правильной расстановке знаков и кавычек. Для решения специфических задач необходимо также использовать простые функции и свойства.
Смотрите далее
•Как формировать сложный текст
•Как использовать различные типы данных
•Как использовать параметры даты и времени
•Как работать со справочными параметрами и условными потоками
Один из самых распространенных сценариев использования поля [Формула] — формирование или "связывание" данных.
Пример
В ходе выполнения бизнес-процесса необходимо создать заголовок активности для сбора комплектации товара. Требуется указать продукт и клиента, для которого собирается комплектация.
Для решения задачи в формулу нужно добавить как параметры элемента [Читать данные], так и константные текстовые значения:
"Собрать комплектацию " + [#Читать продукты.Первый элемент результирующей коллекции.Название#] + " для клиента " + [#Читать данные контрагента.Первый элемент результирующей коллекции.Название#]
На заметку
Между статичными данными и кавычками "" следует добавлять пробелы, чтобы разделить результирующий текст.
Пример
В поле [Рекомендации по заполнению страницы] элемента бизнес-процесса необходимо перенести длинный текст.
Для решения задачи воспользуйтесь символом переноса текста \n в виде:
“1. Назначить встречу с руководителем.\n2. Обсудить с руководителем тактику ведения сделки.”
Таким образом можно переносить не только текстовые строки, но и другие параметры окна формулы. Символ переноса всегда находится внутри скобок “ ”.
На заметку
Для переноса строк также можно использовать заключенный в скобки HTML-тег “<br>”.
Как использовать различные типы данных
При работе с элементом [Формула] необходимо использовать данные одного типа. Нет нужды запоминать типизацию — на странице заполнения формулы тип данных каждого параметра обозначен значком:
— идентификатор элемента;
— числовой;
— дробный;
— текстовый;
— справочное значение;
— значение даты и времени.
Пример
В ходе выполнения бизнес-процесса необходимо создать заголовок активности для сбора комплектации товара. Требуется указать название продукта, клиента и желаемую дату комплектации.
В данном случае нельзя обычным способом добавить параметр даты комплектации. Для решения задачи нужно преобразовать значение даты в текстовое значение:
"Собрать комплектацию" + [#Читать продукты.Первый элемент результирующей коллекции.Название#] + " для клиента " + [#Читать данные контрагента.Первый элемент результирующей коллекции.Название#] + ", срок до " + ([#Читать заказ.Первый элемент результирующей коллекции.Плановая дата выполнения#]).ToString()
Для преобразования параметра [#Читать заказ.Первый элемент результирующей коллекции.Плановая дата выполнения#] его необходимо заключить в круглые скобки и добавить метод .ToString(). В этом случае бизнес-процесс, в который включен элемент формирования заголовка активности, отработает корректно.
Как использовать параметры даты и времени
Чтобы выполнить бизнес-процессы с использованием операций с датой и временем, можно воспользоваться структурой DateTime языка программирования C#. Основные свойства и методы представлены в таблице:
.Date | Возвращает дату выбранного параметра. |
.Hour | Возвращает значение часов выбранного параметра даты. |
DateTime.MinValue | Минимальное значение даты и времени, 00:00, UTC 1 января 0001 года. |
.TotalMinutes | Возвращает полное значение даты и времени в минутах. |
.TotalHours | Возвращает полное значение даты и времени в часах. |
.TotalDays | Возвращает полное значение даты и времени в количестве дней. |
.AddMinutes(), .AddHours(), .AddDays() | Увеличивают выбранное значение даты и времени на определенное количество минут, часов или дней. |
Пример
В процессе квалификации лида для перехода между условными потоками необходимо проверить, заполнено ли поле даты принятия решения.
Чтобы произвести проверку, воспользуйтесь оператором != и свойством DateTime.MinValue:
[#Читать Лид после Квалификации.Первый элемент результирующей коллекции.Дата принятия решения#]!=DateTime.MinValue
Пример
В рамках бизнес-процесса для перехода между условными потоками необходимо сравнить значения даты закрытия двух продаж.
Для сравнения двух значений воспользуйтесь оператором == и свойством .Date в виде:
[#Читать данные продажи 1.Первый элемент результирующей коллекции.Дата закрытия#].Date
== [#Читать данные продажи 2.Первый элемент результирующей коллекции.Дата закрытия#].Date
Пример
В ходе выполнения бизнес-процесса необходимо рассчитать время, которое потребовалось для закрытия продажи.
В случае, когда необходимо рассчитать разницу между двумя значениями даты, воспользуйтесь такой конструкцией:
Округлить(([#Читать данные продажи.Первый элемент результирующей коллекции.Дата
закрытия#]-[#Читать данные продажи.Первый элемент результирующей коллекции.Дата создания#]).TotalMinutes)
То есть нужно в окне формулы выбрать функцию [Округлить] и заполнить ее нужными параметрами элемента процесса, в нашем случае разницей значений, а затем добавить свойство .TotalMinutes. В итоге вы получите количество затраченного времени в минутах. Таким образом можно также использовать свойства .TotalHours и .TotalDays.
Пример
Для перехода по условным потокам бизнес-процесса необходимо определить, был ли лид создан более 12 часов назад.
Для выполнения задачи добавьте свойство .TotalHours к параметру элемента, значение параметра целиком заключите в круглые скобки, а затем произведите сравнение с числовым значением:
Округлить(([#Системная переменная.Текущее значение даты и времени#]-[#Читать данные лида.Первый элемент результирующей коллекции.Дата создания#]).TotalHours) –› 12
При работе с параметрами даты и времени также можно использовать функции .AddMinutes(), .AddHours() и .AddDays() для увеличения значения времени и даты на определенную величину. Например, чтобы привести данные даты и времени к часовому поясу пользователя при использовании элемента [Чтение данных].
На заметку
В bpm'online данные с типом "Дата/Время" хранятся в UTC. Элемент [Чтение данных] не приводит эти данные к часовому поясу пользователя.
Пример
При выполнении бизнес-процесса регистрации лида необходимо установить время перезвона через 3 часа после создания лида.
Для решения задачи укажите в значении .AddHours() добавляемое количество часов в виде:
([#Читать лид.Первый элемент результирующей коллекции.Дата создания#].AddHours(3)).Hour
Как работать со справочными параметрами и условными потоками
Функциональность элемента [Формула] в условном потоке ничем не отличается от его функциональности в других элементах бизнес-процесса. То есть, актуальны как основные правила, так и операторы. Условные потоки применяются для перехода к следующему элементу процесса, поэтому проверяют условия перехода.
Часто в условных потоках справочные параметры сравнивают с константными значениями справочника.
Пример
В бизнес-процессе корпоративной продажи необходимо проверить, что продажа находится в стадии “Коммерческое предложение”.
Для решения задачи нужно в условном потоке сравнить текущую стадию продажи со справочным значением:
[#Читать данные продажи.Первый элемент результирующей коллекции.Стадия#]==[#Справочник.OpportunityStage.Коммерческое предложение#]
Пример
В условном потоке необходимо проверить, заполнено ли справочное поле контакта лида.
Чтобы проверить, заполнены ли справочные поля, используйте условие:
[#Читать лид.Первый элемент результирующей коллекции.Контакт#]!= Guid.Empty
Если же нужно проверить, что справочное поле контакта лида не заполнено, то необходимо воспользоваться следующей конструкцией:
[[#Читать лид.Первый элемент результирующей коллекции.Контакт#]==Guid.Empty
Пример
В процессе визирования счета необходимо выполнить проверку, что виза получена.
Для решения задачи необходимо в условном потоке использовать условие:
[#Получение визы по счету.Результат#] == "Утверждена"
То есть, производится проверка результата визирования.
Обратите внимание, что вариантов решения задачи может быть несколько. Например, воспользуйтесь более сложной конструкцией:
[#Получение визы по счету.Результат#] == "Отклонена" || [#Получение визы по счету.Результат#] == "Ожидает визирования"
В этом случае производится проверка, что статус визы не “Отклонена” или не “Ожидает визирования”.
Пример
В условном потоке необходимо проверить, что проведена презентация.
Чтобы проверить статус презентации, необходимо использовать такую конструкцию:
[#Провести презентацию.Результат#] == true
Если презентация не проведена, то процесс перейдет по другому условному потоку.
Смотрите также
•Как работать с окном определения значения параметра
•Как установить константное значение параметра