Документация по настройке процессов
PDF
Это документация Creatio версии 7.10.0. Мы рекомендуем использовать новую версию документации.

Синтаксис формул в дизайнере бизнес-процессов

Окно формулы в настройках элементов бизнес-процесса позволяет решить множество задач пользователей bpm'online без необходимости привлечения разработчиков. Например, автоматически формировать тексты email-сообщений на основе исходных данных, определять условия для перехода по потокам и т.д. Чтобы использовать все возможности бизнес-процессов, необходимо на базовом уровне владеть синтаксисом формул.

Содержание

Основные синтаксические правила

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

Основные синтаксические правила

При работе с полем формул следует придерживаться определенного синтаксиса, который будет привычным для пользователей, знакомых с С#. При работе с полем [Формула] важно придерживаться типизации при заполнении формул. По возможности используйте значения одного типа, к примеру, текстовые с текстовыми, числовые с числовыми. Иначе необходимо преобразовать значения в нужный тип.

Кроме того, рекомендуем ознакомиться с основными операторами, которые помогут реализовать сложные условия в окне [Формула].

""

Текстовые строки необходимо заключить в кавычки.

+

Используется для соединения значений.

==

Определяет равенство двух значений.

!=

Определяет неравенство двух значений.

<, >

Сравнивает величину двух значений.

>=, <=

Больше или равно, меньше или равно.

&&

Логическое “И”.

||

Логическое “Или”.

true, false

Булевы значения “Истина” и “Ложь”.

\n, <br>

Перенос текстовой строки.

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

В большинстве случаев синтаксис при заполнении элемента [Формула] сводится не только к правильной расстановке знаков и кавычек. Для решения специфических задач необходимо также использовать простые функции и свойства.

Смотрите далее

Как формировать сложный текст

Как использовать различные типы данных

Как использовать параметры даты и времени

Как работать со справочными параметрами и условными потоками

Как формировать сложный текст

Один из самых распространенных сценариев использования поля [Формула] — формирование или "связывание" данных.

Пример

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

Для решения задачи в формулу нужно добавить как параметры элемента [Читать данные], так и константные текстовые значения:

"Собрать комплектацию " + [#Читать продукты.Первый элемент результирующей коллекции.Название#] + " для клиента " + [#Читать данные контрагента.Первый элемент результирующей коллекции.Название#]

На заметку

Между статичными данными и кавычками "" следует добавлять пробелы, чтобы разделить результирующий текст.

Пример

В поле [Рекомендации по заполнению страницы] элемента бизнес-процесса необходимо перенести длинный текст.

Для решения задачи воспользуйтесь символом переноса текста \n в виде:

“1. Назначить встречу с руководителем.\n2. Обсудить с руководителем тактику ведения сделки.”

Таким образом можно переносить не только текстовые строки, но и другие параметры окна формулы. Символ переноса всегда находится внутри скобок “ ”.

На заметку

Для переноса строк также можно использовать заключенный в скобки HTML-тег “<br>”.

Как использовать различные типы данных

При работе с элементом [Формула] необходимо использовать данные одного типа. Нет нужды запоминать типизацию — на странице заполнения формулы тип данных каждого параметра обозначен значком:

btn_com_id.png — идентификатор элемента;

btn_com_integer.png — числовой;

btn_com_decimal.png — дробный;

btn_com_string.png — текстовый;

btn_com_lookup9.png — справочное значение;

btn_com_date_time.png — значение даты и времени.

Пример

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

В данном случае нельзя обычным способом добавить параметр даты комплектации. Для решения задачи нужно преобразовать значение даты в текстовое значение:

"Собрать комплектацию" + [#Читать продукты.Первый элемент результирующей коллекции.Название#] + " для клиента " + [#Читать данные контрагента.Первый элемент результирующей коллекции.Название#] + ", срок до " + ([#Читать заказ.Первый элемент результирующей коллекции.Плановая дата выполнения#]).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

Если презентация не проведена, то процесс перейдет по другому условному потоку.

Смотрите также

Как работать с окном определения значения параметра

Как установить константное значение параметра

Как установить значение параметра из другого элемента

Как передать значение параметра процесса

Был ли данный материал полезен?

Как можно улучшить эту статью?