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

Формулы

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

Содержание

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

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

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

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

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

""

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

+

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

==

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

!=

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

<, –›

Сравнивает величину двух значений (меньше чем, больше чем).

>=, <=

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

&&

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

||

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

true, false

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

\n, <br>

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

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

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

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

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

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

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

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

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

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

Пример

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

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

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

На заметку

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

Пример

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

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

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

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

На заметку

Для переноса строк также можно использовать заключенный в скобки 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

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

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

Параметры процесса

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

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