Процессы

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

Процессы

В текущей версии поддерживаются следующие действия:

  • создание записи

  • изменение записи

  • отправка E-mail

  • вычисления в полях

Совершение действия при удалении записи не поддерживается.

Создание процесса

  1. В меню модуля выберите опцию Создать процесс.

  2. В верхней части Формы редактирования заполните следующие поля:

Создание процесса

Процесс

Укажите название процесса.

Ответственный(ая)

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

Контролируемый модуль

Список всех доступных модулей системы. Выберите необходимый модуль, при создании/изменении записи которого должен запускаться создаваемый Процесс.

Статус

Укажите статус Процесса. Выполняться будут только активные процессы

Запускать

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

Запускать для

Процесс может запускаться для ВСЕХ записей, только для СОЗДАВАЕМЫХ записей, либо только для ИЗМЕНЯЕМЫХ записей

Многократный запуск

Многократный запуск процесса актуален в том случае, когда одно из указанный действий Процесса «сводит на нет» одно из указанных условий запуска Процесса.

Описание

Введите краткое описание Процесса.

Условия выполнения процесса

  1. В средней части Формы редактирования заполните условия выполнения Процесса. Создание условий доступно только после указания контролируемого модуля.

Нажмите на кнопку Добавить условие и введите необходимые данные.Количество добавляемых условий не ограничено.

В следующем примере добавляется условие для модуля Встречи - процесс будет запущен в том случае, если тема встречи содержит слово совещание:

Условия выполнения процесса

Детально каждое заполняемое поле описано ниже:

Модуль

Укажите модуль, для которого должно выполняться создаваемое условие

Поле

Выберите из списка необходимое поле указанного модуля

Оператор сравнения

В зависимости от выбранного поля доступны различные операторы сравнения. Если поле НЕ содержит дату или цифровое значение, то доступны следующие операторы: Равно, Не равно, Содержит, Начинается с, Оканчивается на, Пустое. Если поле цифровое или содержит дату, то возможны следующие условия: Равно, Не равно, Больше, Меньше, Больше или равно, Меньше или равно, Пустое.

Тип поля не всегда может соответствовать его названию. Например, в модуле Контрагенты стандартное поле Число сотрудников указано не как целочисленное, а как текстовое. Типы доступных полей модуля вы можете просмотреть в Студии. Тип ранее созданного поля в Студии изменить нельзя, но администратор системы может создать новое поле с требуемым типом и добавить его в макет соответствующей Формы.

Тип

Тип условия, в зависимости от типа выбранного поля доступны следующие варианты:

  • Значение – наиболее частый вариант, используется для сравнения выбранного поля с указанным значением. Значение может быть представлено по-разному, в зависимости от типа выбранного поля. Например, если поле представлено комбобоксом, то значение будет представлено списком:

Значение

  • Поле – используется для сравнения значения двух полей. В следующем примере сравниваются даты создания и изменения записи:

Поле

  • Изменение - используется при изменении значения выбранного поля. Например, в следующем примере Процесс будет запущен, если был изменён тип Контрагента:

Изменение

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

Мультивыбор

  • Дата - используется для сравнения выбранного поля с указанной датой или интервалом. Интервал может быть представлен минутами, часами, днями, неделями или месяцами. Например, в следующем примере Процесс будет запущен, если запись о Контрагенте была создана в течение ближайших 6 дней:

Дата

Удаление условия процесса

Для удаления ранее созданного условия нажмите на соответствующий значок, расположенный слева от условия:

Удаление условия процесса

Действия

  1. В нижней части Формы редактирования Процесса настройте действия, которые будут выполнены, если есть соответствие ранее указанным условиям. Нажмите на кнопку Добавить действие и выберите необходимое значение. Доступны следующие действия: Создать запись, Изменить запись, Отправить E-mail и Выполнить вычисления в полях.

Действия

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

Создание записи

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

После выбора модуля вы можете:

  • Связать создаваемую запись с записью в контролируемом модуле, отметив соответствующую опцию. В этом случае в субпанелях Форм просмотра обеих записей будет отображаться информация о созданной связи.

Связать с записью в контролируемом модуле

  • Связать создаваемую запись с другой записью. Для этого нажмите кнопку Добавить связь, выберите необходимый модуль и существующую в нем запись. На рисунке ниже показан пример, где создаваемая задача с темой Моя задача будет связана с записью Judy Perna из модуля Контакты:

Связать с другой записью

  • Указать поля, которые необходимо заполнить при создании записи. Для этого нажмите кнопку Добавить поле и выберите необходимый элемент в списке.

Указать заполняемые поля

После этого справа появится ещё один список, позволяющий указать, каким именно образом будет заполняться поле создаваемой записи. Доступны следующие варианты:

Значение – поле создаваемой записи будет содержать указанное значение

Поле – поле создаваемой записи будет содержать то же значение, что и выбранное поле

Дата – доступно только если поле имеет тип Date - поле будет содержать указанное или вычисляемое по указанной формуле значение даты

Для поля Ответственный(ая) доступны дополнительные варианты:

Назначение в цикле – пользователи выбираются по порядку (из общего списка, из Роли и/или из Группы)

Назначение наименее занятого – выбирается пользователь, у которого меньше всего записей в текущем модуле (выбор из общего списка, из Роли и/или из Группы)

Случайное назначение – выбор случайного пользователя (из общего списка, из Роли и/или из Группы)

Детальная информация о Ролях и Группах описана в разделе Роли и группы пользователей.

В указанном ниже примере создаётся запись в модуле Задачи со следующими заполненными полями:

Тема задачи

Моя задача

Дата создания

Текущая дата + 10 минут

Дата изменения

Равна дате создания

Ответственный(ая)

Назначается в цикле из Группы group1 и из Роли role1

Пример создания записи

Изменение записи

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

Отправка E-mail

В данном случае выполнение Процесса приведёт к отправке на указанные адреса электронных писем, созданных на основе шаблонов. Для отправки писем индивидуально каждому пользователю – отметьте соответствующую опцию, в противном случае каждый получатель будет видеть адресные данные всех указанных адресатов.

Отправка E-mail

При указании адресатов возможны следующие варианты:

  • Указать вручную – E-mail вводится вручную

  • Отобранной записи – E-mail будет отправлен на основной электронный адрес записи, запустившей текущий Процесс. Данный вариант может быть задействован только в том случае, если в записи есть поле с электронным адресом (для Контактов, Контрагентов и т.д.)

  • Связанной записи – E-mail будет отправлен на основной электронный адрес записи, связанной с текущей. Для того из комбобокса выберите соответствующий модуль, связанный с текущим

  • Выбрать пользователя – E-mail будет отправлен на электронный адрес выбранного пользователя

  • Выбрать пользователей – E-mail будет отправлен на электронный адрес всех пользователей, пользователей Роли и/или пользователей Группы.

Детальная информация о Ролях и Группах описана в разделе Роли и группы пользователей.

Вычисления в полях

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

  • логические функции

  • текстовые функции

  • математические функции

  • функции обработки даты/времени

  • функции обработки условных операторов

  • счётчики

Более детально функции каждого типа описаны ниже (см. раздел Встроенные функции).

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

Создаваемые формулы могут содержать данные из следующих полей:

  • Данные из полей контролируемого модуля (основные параметры)

  • Данные из полей модулей, связанных с контролируемым модулем (связанные параметры)

Основные и связанные параметры

Добавление основных параметров

При работе с основными параметрами аргументами функций являются основные поля контролируемого модуля. В выпадающем списке перечислены все поля модуля, как основные, так и пользовательские, добавленные через Студию. Для добавления основного параметра выберите в списке необходимое поле и нажмите на кнопку Добавить основной параметр, после чего в таблице параметров появится соответствующая запись. Каждому добавляемому параметру присваивается уникальный идентификатор в фигурных скобках {Px}, где
P – обозначение основного параметра
x - порядковый номер параметра

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

Дополнительная информация о настройке ключей и видимых значений описана в разделе Создание комбобокса.

Для удаления параметра нажмите на кнопку справа от соответствующей записи.

При удалении параметра из таблицы идентификаторы других параметров могут быть изменены!

Добавление основного параметра

Идентификатор используется для ссылки на соответствующее поле при создании формулы. В примере выше все вхождения идентификатора {P0} в конечной формуле будут заменены полем Тип, а все вхождения идентификатора {P1} – полем Годовой доход.

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

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

Дополнительная информация о связях описана в разделе Создание и редактирование связей.

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

Добавление связанного параметра

Каждому связанному параметру присваивается уникальный идентификатор в фигурных скобках {Rx}, где R – обозначение связанного параметра x - порядковый номер параметра

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

Дополнительная информация о настройке ключей и видимых значений описана в разделе Создание комбобокса.

Добавление формулы вычисляемого поля

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

Для удаления формулы нажмите на кнопку справа от соответствующей записи.

Добавление формулы вычисляемого поля

Вычисление формулы происходит по установленным правилам (при сохранении записи, по заданию в планировщике, либо в обоих случаях).

Формула может содержать любой текст в кодировке UTF-8, но вычисления будут выполняться только в выражениях, заключённых в фигурные скобки.

Например, если в поле Описание необходимо сохранять тип добавленного контрагента, фамилию ответственного и наименование отдела, в котором он состоит, то конечная формула может выглядеть следующим образом:

{P0} был создан пользователем {R0} из отдела {R1}

Пример добавления формулы

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

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

Как уже было указано выше, все функции вычисляемых полей заключаются в фигурные скобки и выглядят следующим образом: {ИмяФункции(параметр1; параметр2;…)}.

Количество параметров может быть различным в зависимости от конкретной функции. При выполнении вычислений введённые в поля формулы заменяются вычисленными значениями.

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

{power({subtract({divide({add({multiply(10; 2)}; 12)}; 8)}; 1)}; 2)}

Указанная функция вычисляет следующее математическое выражение: ((((10 * 2) + 12) / 8) – 1)2

Условно все функции разделены на 6 групп, каждая их которых описана ниже.

Логические функции

Логические функции возвращают два значения: ИСТИНА или ЛОЖЬ, соответственно в виде 1 или 0 и могут быть использованы при работе с полями типа checkbox. Также эти функции могут быть использованы в качестве логического условия в функции ifThenElse (см. ниже).

equal

Сигнатура

{equal(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет равенство параметра1 параметру2

Возвращаемое значение

1 (если параметры равны) или 0 (если параметры не равны)

Пример

{equal(1; 2)} Возвращаемое значение: 0

notEqual

Сигнатура

{notEqual(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет неравенство параметра1 параметру2

Возвращаемое значение

0 (если параметры равны) или 1 (если параметры не равны)

Пример

{notEqual (1; 2)} Возвращаемое значение: 1

greaterThan

Сигнатура

{greaterThan(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет, что параметр1 больше параметра2

Возвращаемое значение

1, если параметр1 больше параметра2, в противном случае - 0

Пример

{greaterThan(3; 3)} Возвращаемое значение: 0

greaterThanOrEqual

Сигнатура

{greaterThanOrEqual(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет, что параметр1 больше или равен параметру2

Возвращаемое значение

1, если параметр1 больше или равен параметру2, в противном случае - 0

Пример

{greaterThanOrEqual(3; 3)} Возвращаемое значение: 1

lessThan

Сигнатура

{lessThan(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет, что параметр1 меньше параметра2

Возвращаемое значение

1, если параметр1 меньше параметра2, в противном случае - 0

Пример

{lessThan(3; 3)} Возвращаемое значение: 0

lessThanOrEqual

Сигнатура

{lessThanOrEqual(параметр1; параметр2)}

Параметры

параметр1: любое значение

параметр2: любое значение

Описание

Определяет, что параметр1 меньше или равен параметру2

Возвращаемое значение

1, если параметр1 меньше или равен параметру2, в противном случае - 0

Пример

{lessThanOrEqual(3; 3)} Возвращаемое значение: 1

empty

Сигнатура

{empty(параметр)}

Параметры

параметр: текстовое значение

Описание

Определяет, что параметр пуст

Возвращаемое значение

1, если параметр пуст, в противном случае - 0

Пример

{empty(Любой-ТеКсТ)} Возвращаемое значение: 0

notEmpty

Сигнатура

{notEmpty(параметр)}

Параметры

параметр: текстовое значение

Описание

Определяет, что параметр пуст

Возвращаемое значение

1, если параметр не пуст, в противном случае - 0

Пример

{notEmpty(Любой-ТеКсТ)} Возвращаемое значение: 1

not

Сигнатура

{not(параметр)}

Параметры

параметр: логическое значение

Описание

Логическое отрицание параметра

Возвращаемое значение

1, если параметр равен 0, 0 если параметр равен 1

Пример

{not(0)} Возвращаемое значение: 1

and

Сигнатура

{and(параметр1; параметр2)}

Параметры

параметр1: логическое значение

параметр2: логическое значение

Описание

Применяет логический оператор И к двум логическим значениям

Возвращаемое значение

1, если параметр1 И параметр2 равен 1 и 0, если любой из параметров равен нулю

Пример

{and(1; 0)} Возвращаемое значение: 0

or

Сигнатура

{or(параметр1; параметр2)}

Параметры

параметр1: логическое значение

параметр2: логическое значение

Описание

Применяет логический оператор ИЛИ к двум логическим значениям

Возвращаемое значение

1, если параметр1 ИЛИ параметр2 равен 1 и 0, если оба параметра равны нулю

Пример

{or(1; 0)} Возвращаемое значение: 1

Строковые функции

Функции используются для обработки текста. Все перечисленные функции полностью поддерживают кодировку UTF-8.

substring

Сигнатура

{substring(text; start; length)}

Параметры

text: текстовое значение

start: целочисленное значение

length [необязательный параметр]: целочисленное значение

Описание

Возвращает подстроку указанной строки, начиная с символа start. Если параметр length опущен, то возвращаются все символы от позиции start до конца строки, в противном случае возвращается подстрока длинной length символов. Обратите внимание: индексация символов указанной строки начинается с 0.

Возвращаемое значение

Подстрока указанной строки

Пример

{substring(Ойра-Ойра; 4)} Возвращаемое значение: -Ойра

length

Сигнатура

{length(параметр)}

Параметры

параметр: текстовое значение

Описание

Возвращает количество символов в указанной строке.

Возвращаемое значение

Количество символов в указанной строке.

Пример

{length(зав. магистр-академик Морис-Иоганн-Лаврентий Пупков-Задний)} Возвращаемое значение: 58

replace

Сигнатура

{replace(search; replace; text)}

Параметры

search: текстовое значение

replace: текстовое значение

subject: текстовое значение

Описание

Производит замену всех вхождений подстроки search на подстроку replace в строке text.

Возвращаемое значение

Текст с заменёнными значениями подстрок.

Пример

{replace(кадров; вечной молодости; Отдел кадров)} Возвращаемое значение: Отдел вечной молодости

position

Сигнатура

{position(subject; search)}

Параметры

subject: текстовое значение

search: текстовое значение

Описание

Возвращает позицию первого вхождения подстроки search строки subject.

Возвращаемое значение

Целочисленное значение первого вхождения подстроки, либо -1, если подстрока не обнаружена.

Пример

{position(Познание бесконечности требует бесконечного времени; времени)} Возвращаемое значение: 45

lowercase

Сигнатура

{lowercase(параметр)}

Параметры

параметр: текстовое значение

Описание

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

Возвращаемое значение

Текст в нижнем регистре

Пример

{lowercase(ДиваН-ТраНсляТоР)} Возвращаемое значение: диван-транслятор

Математические функции

uppercase

Сигнатура

{uppercase(параметр)}

Параметры

параметр: текстовое значение

Описание

Перевод текста в верхний регистр

Возвращаемое значение

Текст в верхнем регистре

Пример

{uppercase(ДиваН-ТраНсляТоР)} Возвращаемое значение: ДИВАН-ТРАНСЛЯТОР

add

Сигнатура

{add(параметр1; параметр2)}

Параметры

параметр1: цифровое значение

параметр2: цифровое значение

Описание

Сложение параметров параметр1 и параметр2

Возвращаемое значение

Сумма параметров параметр1 и параметр2

Пример

{add(3.12; 4.83)} Возвращаемое значение: 7.95

subtract

Сигнатура

{subtract(параметр1; параметр2)}

Параметры

параметр1: цифровое значение

параметр2: цифровое значение

Описание

Вычитание параметра2 из параметра1

Возвращаемое значение

Разница между параметром2 и параметром1

Пример

{subtract(8; 3)} Возвращаемое значение: 5

multiply

Сигнатура

{multiply(параметр1; параметр2)}

Параметры

параметр1: цифровое значение

параметр2: цифровое значение

Описание

Умножение параметра1 на параметр2

Возвращаемое значение

Результат умножения параметра1 на параметр2

Пример

{multiply(2; 4)} Возвращаемое значение: 8

divide

Сигнатура

{divide(параметр1; параметр2)}

Параметры

параметр1: цифровое значение

параметр2: цифровое значение

Описание

Деление параметра1 на параметр2

Возвращаемое значение

Результат деления параметра1 на параметр2

Пример

{divide(8; 2)} Возвращаемое значение: 4

power

Сигнатура

{power(параметр1; параметр2)}

Параметры

параметр1: цифровое значение

параметр2: цифровое значение

Описание

Возведение параметра1 в степень параметр2

Возвращаемое значение

Результат возведения параметра1 в степень параметр2

Пример

{power(2; 7)} Возвращаемое значение: 128

squareRoot

Сигнатура

{squareRoot(параметр)}

Параметры

параметр: цифровое значение

Описание

Вычисление квадратного корня из параметра

Возвращаемое значение

Квадратный корень параметра

Пример

{squareRoot(9)} Возвращаемое значение: 3

absolute

Сигнатура

{absolute(параметр)}

Параметры

параметр: цифровое значение

Описание

Вычисление абсолютного значения параметра

Возвращаемое значение

Абсолютное значение параметра

Пример

{absolute(-44)} Возвращаемое значение: 44

Функции даты и времени

Большая часть описанных здесь функций использует параметр форматирования для представления даты/времени в желаемом формате. Параметры, указываемые при форматировании значений, аналогичны таковым из PHP.

Символ форматирования Описание Пример

День

d

День месяца с ведущими нулями

01 - 31

D

Сокращённое представление для недели

Mon - Sun

j

День месяца без ведущих нулей

1 - 31

l

Полное текстовое представление дня недели

Sunday - Saturday

N

Цифровое представление дня недели (ISO-8601)

1 (для понедельника) - 7 (для воскресенья)

S

Суффиксы для порядковых числительных

st, nd, rd или th. Может быть использован совместно с «j»

w

Цифровое представление дня недели

0 (для воскресенья) - 6 (для субботы)

z

День года (начиная с 0)

0 - 365

Неделя

W

Номер недели в году, неделя начинается с понедельника (ISO-8601)

42 (42-я неделя года)

Месяц

F

Полное текстовое представление месяца

January - December

m

Номер месяца с ведущими нулями

01 - 12

M

Сокращённое представление месяца

Jan - Dec

n

Номер месяца без ведущих нулей

1 - 12

t

Количество дней в указанном месяце

28 - 31

Год

L

Является ли год високосным

1, если год високосный, в противном случае - 0

o

Полное цифровое представление года (ISO-8601), схож с «Y», за тем исключением, что если номер недели (W) принадлежит предыдущему или следующему году, то отображается именно этот год

2003

Y

Полное цифровое представление года

2003

y

Краткое цифровое представление года

17 (вместо 2017)

Время

a

Ante meridiem или Post meridiem в нижнем регистре

am или pm

A

Ante meridiem или Post meridiem в верхнем регистре

AM или PM

B

Интернет-время

000 - 999

g

Часы в 12-часовом формате без ведущих нулей

1 - 12

G

Часы в 24-часовом формате без ведущих нулей

0 - 23

h

Часы в 12-часовом формате с ведущими нулями

01 - 12

H

Часы в 24-часовом формате с ведущими нулями

00 - 23

i

Минуты с ведущими нулями

00 - 59

s

Секунды с ведущими нулями

00 - 59

Часовые пояса

e

Идентификатор часового пояса

UTC, GMT, Atlantic/Azores

I

Указывает, попадают ли заданные дата и время в диапазон летнего времени

1, если летнее время, иначе - 0

O

Разница в часах с нулевым меридианом (GMT)

+0200

P

Разница в часах с нулевым меридианом (GMT) с разделителем между часами и минутами

+02:00

T

Аббревиатура часового пояса

EST, MDT

Z

Смещение часового пояса - разница между универсальным (UTC) и местным временем в секундах; смещение положительное, если местное время отстаёт от UTC, и отрицательное, если оно опережает UTC

-43200 - 50400

Форматы даты/времени

c

Дата в стандарте ISO 8601

2004-02-12T15:19:21+00:00

r

Дата в формате RFC 2822

Thu, 21 Dec 2000 16:01:07 +0200

U

Количество секунд, прошедших с 1 января 1970 года (UNIX-время)

Даты могут быть представлены в следующих форматах (форматы дат эквиваленты форматам объекта DateTime в PHP):

Описание Формат Пример

Месяц и день (американский вариант)

mm "/" dd

"5/12", "10/27"

Месяц, день и год (американский вариант)

mm "/" dd "/" y

"12/22/78", "1/17/2006"

Год (4 цифры), месяц и день, разделённые слешем

YY "/" mm "/" dd

"2008/6/30", "1978/12/22"

Год (4 цифры) и месяц (GNU)

YY "-" mm

"2008-6", "2008-06"

Год (4 цифры), месяц и день, указанные через тире

y "-" mm "-" dd

"2008-6-30", "78-12-22"

День, месяц и год (4 цифры), разделённые точкой, знаком табуляции или тире

dd [.\t-] mm [.-] YY

"30-6-2008", "22.12.1978"

День, месяц и год (2 цифры), разделённые точкой или знаком табуляции

dd [.\t] mm "." yy

"30.6.08", "22\t12.78"

День, название месяца и год

dd ([ \t.-])* m ([ \t.-])* y

"30-June 2008", "22DEC78", "14 III 1879"

Название месяца и год (4 цифры)

m ([ \t.-])*

"June 2008", "DEC1978", "March 1879"

Год (4 цифры) и название месяца

YY ([ \t.-])* m

"2008 June", "1978-XII", "1879.MArCH"

Название месяца, день и год

m ([ .\t-])* dd [,.stndrh\t ]+ y

"July 1st, 2008", "May.9,78"

Название месяца и день

m ([ .\t-])* dd [,.stndrh\t ]*

"July 1st,", "Apr 17", "May.9"

День и название месяца

d ([ .\t-])* m

"1 July", "17 Apr", "9.May"

Аббревиатура месяца, день и год

M "-" DD "-" y

"May-09-78", "Apr-17-1790"

Год, аббревиатура месяца и день

y "-" M "-" DD

"78-Dec-22"

Год (4 цифры)

YY

"1978", "2008"

Название месяца

m

"March", "jun", "DEC"

Стандарт ISO8601

Год (4 цифры), месяц и день

YY MM DD

"15810726", "19780417"

Год (4 цифры), месяц и день, разделённые слешем

YY "/" MM "/" DD

"2008/06/30", "1978/12/22"

Год (2 цифры), месяц и день, указанные через тире

yy "-" MM "-" DD

"08-06-30", "78-12-22"

Год (4 цифры) с опциональным префиксом, месяц и день, указанные через тире

[+-]? YY "-" MM "-" DD

"-0002-07-26", "+1978-04- 17", "1814-05-17"

Если в описанных ниже функциях не указано значение даты/времени, то считается, что оно равно значению «2016.04.29. 15:08:03»

date

Сигнатура

{date(формат; отметка времени)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

Описание

Создание даты/времени в указанном формате

Возвращаемое значение

Дата/время в указанном формате

Пример

{date(ymd; 2016-02-11)} Возвращаемое значение: 160211

now

Сигнатура

{now(формат)}

Параметры

формат: символ форматирования

Описание

Создание текущей даты/времени в указанном формате

Возвращаемое значение

Текущая дата/время в указанном формате

Пример

{now(Y-m-d H:i:s)} Возвращаемое значение: 2016-04-29 15:08:03

yesterday

Сигнатура

{yesterday(формат)}

Параметры

формат: символ форматирования

Описание

Создание вчерашней даты/времени в указанном формате

Возвращаемое значение

Дата/время в указанном формате

Пример

{yesterday(Y-m-d H:i:s)} Возвращаемое значение: 2016-04-28 15:08:03

tomorrow

Сигнатура

{tomorrow(формат)}

Параметры

формат: символ форматирования

Описание

Создание завтрашней даты/времени в указанном формате

Возвращаемое значение

Дата/время в указанном формате

Пример

{tomorrow(Y-m-d H:i:s)} Возвращаемое значение: 2016-04-30 15:08:03

datediff

Сигнатура

{datediff(отметка времени1; отметка времени2; элемент)}

Параметры

отметка времени1: значение даты/времени

отметка времени2: значение даты/времени

элемент: years/months/days/hours/minutes/seconds; по умолчанию: days

Описание

Вычитание отметки времени2 из отметки времени1

Возвращаемое значение

Разница между двумя элементами

Пример

{datediff(2016-02-01; 2016-04-22; days)} Возвращаемое значение: 81

addYears

Сигнатура

{addYears(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества лет к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addYears(Ymd; 2016-04-22; 1)} Возвращаемое значение: 20170422

addMonths

Сигнатура

{addMonths(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества месяцев к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addMonths(Y-m-d; 2016-04-22; 1)} Возвращаемое значение: 2016-05-22

addDays

Сигнатура

{addDays(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества дней к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addDays(d-m-Y; 2016-04-22; 1)} Возвращаемое значение: 23-04-2016

addHours

Сигнатура

{addHours(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества часов к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addHours(Ymd H:i:s; 2016-04-22 23:30; 5)} Возвращаемое значение: 20160423 04:30:00

addMinutes

Сигнатура

{addMinutes(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества минут к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addMinutes(Ymd H:i:s; 2016-04-22 22:58; 5)} Возвращаемое значение: 20160422 23:03:00

addSeconds

Сигнатура

{addSeconds(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Добавление определённого количества секунд к указанной дате

Возвращаемое значение

Дата/время в указанном формате

Пример

{addSeconds(Ymd H:i:s; 2016-04-22 22:58; 5)} Возвращаемое значение: 20160422 22:58:05

subtractYears

Сигнатура

{subtractYears(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества лет из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractYears(Ymd; 2016-04-22; 5)} Возвращаемое значение: 20110422

subtractMonths

Сигнатура

{subtractMonths(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества месяцев из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractMonths(Ymd; 2016-04-22; 5)} Возвращаемое значение: 20151122

subtractDays

Сигнатура

{subtractDays(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества дней из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractDays(Ymd; 2016-04-22; 5)} Возвращаемое значение: 20160417

subtractHours

Сигнатура

{subtractHours(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества часов из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractHours(Ymd H:i:s; 2016-04-22 12:37; 5)} Возвращаемое значение: 20160422 07:37:00

subtractMinutes

Сигнатура

{subtractMinutes(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества минут из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractMinutes(Ymd H:i:s; 2016-04-22 12:37; 5)} Возвращаемое значение: 20160422 12:32:00

subtractSeconds

Сигнатура

{subtractSeconds(формат; отметка времени; количество)}

Параметры

формат: символ форматирования

отметка времени: значение даты/времени

количество: цифровое значение

Описание

Вычитание определённого количества секунд из указанной даты

Возвращаемое значение

Дата/время в указанном формате

Пример

{subtractSeconds(Ymd H:i:s; 2016-04-22 12:37; 5)} Возвращаемое значение: 20160422 12:36:55

Ветвление

Поскольку функции могут быть встроены друг в друга, можно описывать достаточно сложные алгоритмы со множеством ветвлений.

ifThenElse

Сигнатура

{ifThenElse(условие; еслиУсловиеИстинно; еслиУсловиеЛожно)}

Параметры

условие: логическое значение

еслиУсловиеИстинно: любое условие

еслиУсловиеЛожно: любое условие

Описание

Выполнение первой или второй ветви алгоритма в зависимости от выполнения условия

Возвращаемое значение

Выполнение ветви еслиУсловиеИстинно, если выполняется условие, иначе выполняется ветвь еслиУсловиеЛожно

Пример

{ifThenElse({equal(5; 7)}; 5 равно 7; 5 не равно 7)} Возвращаемое значение: 5 не равно 7

Счётчики

Счётчики можно разделить на две группы:

  1. Глобальные: Значение счётчика постоянно увеличивается при каждом вычислении формулы

  2. Ежедневные: Значение счётчика ежедневно сбрасывается. (Стартует с 1)

Для всех следующих примеров текущее значение счётчика равно 4. Таким образом, после срабатывания счётчика значение будет равно 5, но отображаться значение будет с указанным количеством разрядов.

GlobalCounter

Сигнатура

{GlobalCounter(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{GlobalCounter(myName; 4)} Возвращаемое значение: 0005

GlobalCounterPerUser

Сигнатура

{GlobalCounterPerUser(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием для пользователя, создавшего запись, и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{GlobalCounterPerUser(myName; 3)} Возвращаемое значение: 005

GlobalCounterPerModule

Сигнатура

{GlobalCounterPerModule(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием для модуля, к которому принадлежит запись и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{GlobalCounterPerModule(myName; 2)} Возвращаемое значение: 05

GlobalCounterPerUserPerModule

Сигнатура

{GlobalCounterPerUserPerModule(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием для пользователя, создавшего запись, а также для модуля, к которому принадлежит запись и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{GlobalCounterPerUserPerModule(myName; 1)} Возвращаемое значение: 5

DailyCounter

Сигнатура

{DailyCounter(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием (либо возвращает 1, если счётчик был перед этим сброшен) и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{DailyCounter(myName; 1)} Возвращаемое значение: 5

DailyCounterPerUser

Сигнатура

{DailyCounterPerUser(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием (либо возвращает 1, если счётчик был перед этим сброшен) для пользователя, создавшего запись, и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{DailyCounter(myName; 1)} Возвращаемое значение: 5

DailyCounterPerModule

Сигнатура

{DailyCounterPerModule(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием (либо возвращает 1, если счётчик был перед этим сброшен) для модуля, к которому принадлежит запись и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{DailyCounterPerModule(myName; 1)} Возвращаемое значение: 5

DailyCounterPerUserPerModule

Сигнатура

{DailyCounterPerUserPerModule(названиеСчётчика; количествоРазрядовВСчётчике)}

Параметры

название: любой текст

количествоРазрядовВСчётчике: цифровое значение

Описание

Увеличивает на единицу значение счётчика с указанным названием (либо возвращает 1, если счётчик был перед этим сброшен) для пользователя, создавшего запись, а также для модуля, к которому принадлежит запись и возвращает значение в указанном формате

Возвращаемое значение

Цифра с указанным количеством разрядов

Пример

{DailyCounterPerUserPerModule(myName; 1)} Возвращаемое значение: 5

Решение возможных проблем
  1. Вместо желаемого результата отображается часть формулы или вся формула.

Возможно, часть формулы прописана неверно, проверьте синтаксис как это указано в разделе Встроенные функции.

  1. На месте желаемого результата ничего не отображается.

    • Возможно, попытка вычисления привела к исключению в PHP. В Форме просмотра процесса (Контроль процессов) обратите внимание на статус процесса, в этом случае он закончится неудачей. За детальной информацией обратитесь к файлу suitecrm.log.

    • Неверный формат вызова функций даты/времени. Убедитесь, что формат вызова соответствует тому, что указан в разделе Функции даты и времени.

  1. Формула вычисляется, но результат неверен

    • В формуле указан неверный тип данных. Например, результат будет нулевым, если в числовом поле прописан текст, поскольку движок базы данных не может вставить текст в нетекстовое поле

    • Ошибка в формуле не синтаксическая, а семантическая. Например, формула извлечения подстроки (substring) считает символы, начиная с нуля (что может быть необычно для пользователей, не знакомых с программированием), и если вы укажете единицу в качестве стартового индекса, то извлечение начнётся со ВТОРОГО символа. Убедитесь, что формат вызова функции соответствует тому, что указан в разделе Встроенные функции.

Проверка синтаксиса формул

При написании формул соблюдайте следующие правила:

  • Все функции должны быть заключены в фигурные скобки: {функция}

  • Перечень параметров функции заключён в круглые скобки: (параметр1; параметр2…)

  • Параметры функции должны быть отделены друг от друга точкой с запятой

  • Проверяйте количество и порядок следования параметров в функциях, синтаксис функций можно проверить в разделе Встроенные функции.

  • Основные параметры в формуле должны выглядеть как {P0}, {P1} и т.д.; связанные параметры - как {R0}, {R1} и т.д., БЕЗ пробелов между символами.

Включение режима отладчика

Для включения режима отладчика в файл config_override.php необходимо добавить следующие строки:

$sugar_config['SweeterCalc']['DebugEnabled'] = 1;
$sugar_config['SweeterCalc']['DebugFileName'] = 'SweeterSyncDebug.log';

В качестве DebugFileName вы можете указать любое желаемое значение.

Все процессы вычислений будут записываться в указанный файл. Поскольку объем файла может быстро увеличиваться (особенно актуально для больших формул), рекомендуется использовать режим отладчика только в случае необходимости.

Удаление действия

Для удаления ранее созданного действия нажмите на соответствующий значок, расположенный в правом верхнем углу действия:

Удаление действия

Для удаления записи внутри действия нажмите на соответствующий значок, расположенный слева от записи:

Удаление записи внутри действия

Контроль процесса

В нижней части Формы просмотра каждого процесса расположена субпанель Контроль процесса, отображающая информацию о выполнении текущего процесса, содержащую в том числе: название записи, запустившей процесс, статус выполнения процесса, дату и время выполнения процесса.

Контроль процесса

Управление информацией о процессах

В модуле вы можете выполнять следующие действия:

  • Сортировка списка записей, для этого нажмите на значок в заголовке сортируемого столбца, для обратной сортировки нажмите на значок ещё раз.

  • Добавление записи в избранное – после чего пользователь получает возможность быстрого доступа к наиболее важной для него информации. За дополнительной информацией обратитесь к разделу Избранное.

  • Редактирование или удаление информации сразу о нескольких процессах, для этого используйте панель массового обновления.

  • Экспорт записей, для этого в меню над выбранными записями выберите пункт Экспортировать.

  • Поиск дубликатов, для этого в меню действий Формы просмотра выберите пункт Поиск дубликатов..

  • Просмотр детальной информации о процессе, для этого нажмите на названии процесса в общем списке.

  • Редактирование данных, для этого либо в Форме просмотра нажмите на кнопку Править, либо непосредственно в Форме списка нажмите на кнопку слева от редактируемой записи. Вы также можете выполнить быструю правку.

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

  • Удаление процесса, для этого нажмите на кнопку Удалить.

  • Отслеживание изменений введённой информации, для этого нажмите на кнопку Просмотр журнала изменений в форме просмотра. Если в журнале необходимо изменить перечень контролируемых полей - сделайте это в Студии, настроив параметр Аудит соответствующего поля.

Примеры процессов

Добавление клиентов в список адресатов

В данном примере показано пошаговое создание процесса, автоматически добавляющего Контрагентов, имеющих тип Клиенты, в список адресатов при создании или изменении информации о Контрагенте:

  1. В модуле процессы выбираем действие Создать процесс.

  2. Присваиваем процессу подходящее название, например: «Заполнение списка адресатов».

  3. В списке контролируемых модулей выбираем модуль Контрагенты.

  4. В списке Запускать выбираем значение Только при сохранении записи.

  5. В списке Запускать для оставляем стандартное значение Всех записей - в этом случае процесс будет запущен и при создании, и при изменении записи.

  6. Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.

Добавление условий

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

  2. В списке полей выбираем значение Тип

  3. В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Значение.

  4. В списке значений выбираем Клиент.

Созданное условие должно выглядеть следующим образом:

Примеры процессов1-Добавление условий

Добавление действий

  1. В разделе действий нажимаем кнопку Добавить действие.

  2. В списке действий выбираем Изменить запись.

  3. В поле Краткое описание действия вводим соответствующее название, например: «Дополнение списка адресатов».

  4. Нажимаем кнопку Добавить связь.

  5. В появившемся над кнопкой списке выбираем значение Списки адресатов: Адресаты.

  6. Появятся два дополнительных поля. В крайнем правом поле указываем необходимый список адресатов. Созданное действие будет выглядеть следующим образом:

Примеры процессов1-Добавление действий

Уведомление о поступивших обращениях

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

  1. В модуле процессы выбираем действие Создать процесс

  2. Присваиваем процессу подходящее название, например: «Напоминание об обращении».

  3. В списке контролируемых модулей выбираем модуль Обращения.

  4. В списке Запускать выбираем значение Только при сохранении записи.

  5. В списке Запускать для оставляем стандартное значение Всех записей - в этом случае процесс будет запущен и при создании, и при изменении записи.

  6. Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.

Добавление условий

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

  2. В списке полей выбираем значение Дата изменения

  3. В качестве оператора сравнения выбираем значение Меньше или равно, в поле Тип выбираем значение Дата.

  4. В списке значений выбираем Сейчас и в дополнительных полях указываем: «-», «2» и «дней».

  5. Ещё раз нажимаем кнопку Добавить условие.

  6. В списке полей нового условия выбираем значение Статус.

  7. В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Мультивыбор.

  8. В списке значений выбираем элементы, соответствующие открытому обращению, в данном случае это Новое и Назначенное.

Созданное условие должно выглядеть следующим образом.

Примеры процессов2-Добавление условий

Добавление действий

  1. В разделе действий нажимаем кнопку Добавить действие.

  2. В списке действий выбираем Отправить E-mail.

  3. В поле Краткое описание действия вводим соответствующее название, например: «Напоминание пользователям об обращении».

  4. Отмечаем необязательную опцию Отправлять индивидуально каждому указанному адресату - в этом случае каждый адресат будет видеть в списке получателей письма только свой электронный адрес.

  5. Нажмите на кнопку и для поля Кому выберите значение Связанной записи, после чего в крайнем правом поле выберите значение Пользователи: Ответственный(ая).

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

  7. В списке шаблонов электронных писем выберите подходящий шаблон или создайте новый.

Созданное действие будет выглядеть следующим образом:

Примеры процессов2-Добавление действий

Назначение Предварительного контакта пользователю, входящего в указанную группу

В данном примере показано пошаговое создание процесса, автоматически выполняющего следующие действия:

  • Назначение зарегистрированного через веб-форму Предварительного контакта наименее занятому пользователю, входящего в условную Группу «group1» (выбирается пользователь, у которого меньше всего записей в модуле Предварит. Контакты)

  • Назначение звонка пользователю с указанием времени звонка на сутки позже после создания Предварительного контакта

    1. В модуле процессы выбираем действие Создать процесс

    2. Присваиваем процессу подходящее название, например: «Назначение ответственного предварительному контакту + звонок».

    3. В списке контролируемых модулей выбираем модуль Предварит. Контакты.

    4. В списке Запускать выбираем значение Только при сохранении записи.

    5. В списке Запускать для выбираем значение Создаваемых записей.

    6. Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.

Добавление условий

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

  2. В списке полей выбираем значение Источник предв. контакта

  3. В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Значение.

  4. В списке значений выбираем Веб-сайт.

Созданное условие должно выглядеть следующим образом:

Примеры процессов3-Добавление условий

Добавление действий

  1. В разделе действий нажимаем кнопку Добавить действие.

  2. В списке действий выбираем Изменить запись.

  3. В поле Краткое описание действия вводим соответствующее название, например: «Назначение ответственного наименее занятому предварительному контакту».

  4. В списке Тип записи выбираем модуль Предварит. Контакты.

  5. Нажимаем кнопку Добавить поле.

  6. В появившемся над кнопкой списке выбираем значение Ответственный(ая).

  7. Появятся два дополнительных поля. В среднем поле выбираем Назначение наименее занятого.

  8. В крайнем правом поле выбираем ВСЕ пользователи Группы.

  9. В появившемся справа поле выбираем группу «group1».

  10. Ещё раз нажимаем кнопку Добавить действие.

  11. В списке действий выбираем Создать запись.

  12. В поле Краткое описание действия вводим соответствующее название, например: «Назначение звонка».

  13. В списке Тип записи выбираем модуль Звонки.

  14. Отмечаем опцию Связать с записью в контролируемом модуле.

  15. Нажимаем кнопку Добавить поле.

  16. В появившемся над кнопкой списке выбираем значение Дата звонка.

  17. Появятся два дополнительных поля. В среднем поле выбираем Дата.

  18. В крайнем правом поле выбираем Сегодня.

  19. В появившихся дополнительных полях указываем следующие значения: «+», «1», и «дней».

  20. Нажимаем кнопку Добавить поле.

  21. В появившемся над кнопкой списке выбираем значение Ответственный(ая).

  22. Появятся два дополнительных поля. В среднем поле выбираем Поле.

  23. В крайнем правом поле выбираем Ответственный(ая)» - при этом создаётся связь между назначенным ответственным Предварительного контакта и звонком.

Созданные действия будут выглядеть следующим образом:

Примеры процессов3-Добавление действий

Примеры вычислений

Расчёт ежемесячных выплат

Сценарий

Допустим, необходимо рассчитать стоимость ежемесячных выплат по сделке. Для этого необходимо общую сумму сделки разделить на срок выплат. Сроки выплат представлены тремя вариантами: 6 месяцев, 1 год и 2 года.

Предварительная подготовка

Поскольку в стандартном модуле Сделки поле Сроки выплат отсутствует, необходимо предварительно создать и настроить необходимый функционал в редакторе комбобоксов. Создадим комбобокс с тремя элементами, в качестве ключа указывая необходимое количество месяцев:

Ключ Отображаемое значение

6

6 месяцев

12

1 год

24

2 года

В Студии настроим Форму просмотра модуля Сделки, добавив в неё поля (см. стр ) Ежемесячный платёж типа «Currency» и Сроки выплат типа «Dropdown», созданное на основе ранее добавленного комбобокса.

В Форму редактирования добавим только комбобокс Сроки выплат (поле Ежемесячный платёж добавлять не будем, поскольку оно будет отображаться только при ПРОСМОТРЕ записи и его значение будет рассчитываться автоматически).

Детально работа с полями в Студии описана в разделе Создание и редактирование полей.

Настройка процесса

Настроим основные параметры процесса согласно таблице:

Процесс: Любое название

Контролируемый модуль: Сделки

Статус: Активен

Запускать: Только при сохранении записи

Запускать для: Всех записей

Многократный запуск: Да

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

Нажмём на кнопку Добавить действия и из списка выберем пункт Выполнить вычисления в полях.

В основные параметры добавим два поля: Сумма сделки (отобразится с идентификатором {P0}) и Сроки выплат (отобразится с идентификатором {P1}), указав элемент Ключ при добавлении второго поля.

Связанные параметры не трогаем, они в данном примере не используются (пример использования связанных параметров рассматривается в следующем примере).

Для формулы выберем поле Ежемесячный платёж и в качестве самой формулы укажем следующее выражение:

{divide({P0}; {P1})}

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

Расчёт ежемесячных выплат-Добавление действий

Сохраните Процесс и создайте тестовую сделку для проверки созданного примера:

Форма редактирования тестовой сделки при расчёте ежемесячных выплат

При сохранении Сделки будет автоматически вычислена сумма ежемесячного платежа:

Форма просмотра тестовой сделки при расчёте ежемесячных выплат

Расчёт скидки по Договору в зависимости от типа Контакта

Сценарий

Допустим ваша компания предоставляет скидки определённым льготным категориям клиентов (студенты, пенсионеры и т.д.). Если в сохраняемом договоре указан Контакт, то необходимо автоматически рассчитывать скидку в зависимости от типа указанного Контакта.

Предварительная подготовка

Поскольку в стандартном модуле Контакты поле Льготная категория отсутствует, необходимо предварительно создать и настроить необходимый функционал в редакторе комбобоксов. Создадим комбобокс с тремя элементами, в качестве ключа указывая номер категории:

Ключ Отображаемое значение

1

Не льготник

2

Студент

3

Пенсионер

В Форму просмотра и Форму редактирования модуля Контакты добавим поле Льготная категория типа «DropDown», созданное на основе ранее добавленного комбобокса.

Также в Студии настроим Форму просмотра модуля Договоры, добавив в неё поле Предоставляемая скидка (%) типа «Integer».

Детально работа с полями в Студии описана в разделе Создание и редактирование полей.

Настройка процесса

Настроим основные параметры процесса согласно таблице:

Процесс: Любое название

Контролируемый модуль: Договоры

Статус: Активен

Запускать: Только при сохранении записи

Запускать для: Всех записей

Многократный запуск: Да

Не будем добавлять в Процесс какие-либо условия, поскольку предполагается, что Процесс будет выполняться для всех Договоров.

Нажмём на кнопку Добавить действия и из списка выберем пункт Выполнить вычисления в полях.

В связанные параметрах:

  • В левом комбобоксе выберем значение Контакты : Контакт

  • В среднем комбобоксе выберем добавленное поле Льготная категория

  • В правом комбобоксе выберем значение Ключ и нажмём на кнопку Добавить связанный параметр - параметр отобразится с идентификатором {R0}.

  • Для формулы выберем поле Предоставляемая скидка (%) и в качестве самой формулы укажем следующее выражение:

{ifThenElse({equal({R0}; 3)}; 50; {ifThenElse({equal({R0}; 2)}; 25; 0)})}

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

Расчёт скидки по Договору-Добавление действий

Сохраните Процесс и создайте тестовый Контакт:

Форма редактирования тестового контакта  при расчёте скидки по договору

При сохранении Договора будет автоматически указана предоставляемая скидка:

Форма просмотра тестового контакта  при расчёте скидки по договору

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.