$sugar_config['SweeterCalc']['DebugEnabled'] = 1;
$sugar_config['SweeterCalc']['DebugFileName'] = 'SweeterSyncDebug.log';
Данный модуль позволяет автоматически совершать различные действия при добавлении/изменении данных в системе, а также по расписанию планировщика, настроенному в панели Администрирования.
В текущей версии поддерживаются следующие действия:
создание записи
изменение записи
отправка E-mail
вычисления в полях
Совершение действия при удалении записи не поддерживается.
В меню модуля выберите опцию Создать процесс.
В верхней части Формы редактирования заполните следующие поля:
Укажите название процесса.
Введите имя ответственного. По умолчанию ответственным являетесь вы. Для назначения другого пользователя нажмите кнопку и из появившегося списка выберите желаемого пользователя.
Список всех доступных модулей системы. Выберите необходимый модуль, при создании/изменении записи которого должен запускаться создаваемый Процесс.
Укажите статус Процесса. Выполняться будут только активные процессы
Укажите условие запуска – Всегда, Только при сохранении записи, либо Только в рабочее время. В последнем случае должен быть настроен график работы организации.
Процесс может запускаться для ВСЕХ записей, только для СОЗДАВАЕМЫХ записей, либо только для ИЗМЕНЯЕМЫХ записей
Многократный запуск процесса актуален в том случае, когда одно из указанный действий Процесса «сводит на нет» одно из указанных условий запуска Процесса.
Введите краткое описание Процесса.
В средней части Формы редактирования заполните условия выполнения Процесса. Создание условий доступно только после указания контролируемого модуля.
Нажмите на кнопку Добавить условие и введите необходимые данные.Количество добавляемых условий не ограничено.
В следующем примере добавляется условие для модуля Встречи - процесс будет запущен в том случае, если тема встречи содержит слово совещание:
Детально каждое заполняемое поле описано ниже:
Укажите модуль, для которого должно выполняться создаваемое условие
Выберите из списка необходимое поле указанного модуля
В зависимости от выбранного поля доступны различные операторы сравнения. Если поле НЕ содержит дату или цифровое значение, то доступны следующие операторы: Равно, Не равно, Содержит, Начинается с, Оканчивается на, Пустое. Если поле цифровое или содержит дату, то возможны следующие условия: Равно, Не равно, Больше, Меньше, Больше или равно, Меньше или равно, Пустое.
Тип поля не всегда может соответствовать его названию. Например, в модуле Контрагенты стандартное поле Число сотрудников указано не как целочисленное, а как текстовое. Типы доступных полей модуля вы можете просмотреть в Студии. Тип ранее созданного поля в Студии изменить нельзя, но администратор системы может создать новое поле с требуемым типом и добавить его в макет соответствующей Формы.
Тип условия, в зависимости от типа выбранного поля доступны следующие варианты:
Значение – наиболее частый вариант, используется для сравнения выбранного поля с указанным значением. Значение может быть представлено по-разному, в зависимости от типа выбранного поля. Например, если поле представлено комбобоксом, то значение будет представлено списком:
Поле – используется для сравнения значения двух полей. В следующем примере сравниваются даты создания и изменения записи:
Изменение - используется при изменении значения выбранного поля. Например, в следующем примере Процесс будет запущен, если был изменён тип Контрагента:
Мультивыбор - используется для сравнения выбранного поля с несколькими значениями. Например, в следующем примере Процесс будет запущен, если отрасль Контрагента соответствует одному из выбранных значений:
Дата - используется для сравнения выбранного поля с указанной датой или интервалом. Интервал может быть представлен минутами, часами, днями, неделями или месяцами. Например, в следующем примере Процесс будет запущен, если запись о Контрагенте была создана в течение ближайших 6 дней:
Для удаления ранее созданного условия нажмите на соответствующий значок, расположенный слева от условия:
В нижней части Формы редактирования Процесса настройте действия, которые будут выполнены, если есть соответствие ранее указанным условиям. Нажмите на кнопку Добавить действие и выберите необходимое значение. Доступны следующие действия: Создать запись, Изменить запись, Отправить E-mail и Выполнить вычисления в полях.
Для каждого действия желательно указать его краткое описание (или название). Количество добавляемых в Процесс действий не ограничено.
Прежде всего необходимо выбрать тип записи - модуль, в котором будет создаваться необходимая запись.
После выбора модуля вы можете:
Связать создаваемую запись с записью в контролируемом модуле, отметив соответствующую опцию. В этом случае в субпанелях Форм просмотра обеих записей будет отображаться информация о созданной связи.
Связать создаваемую запись с другой записью. Для этого нажмите кнопку Добавить связь, выберите необходимый модуль и существующую в нем запись. На рисунке ниже показан пример, где создаваемая задача с темой Моя задача будет связана с записью Judy Perna из модуля Контакты:
Указать поля, которые необходимо заполнить при создании записи. Для этого нажмите кнопку Добавить поле и выберите необходимый элемент в списке.
После этого справа появится ещё один список, позволяющий указать, каким именно образом будет заполняться поле создаваемой записи. Доступны следующие варианты:
Значение – поле создаваемой записи будет содержать указанное значение
Поле – поле создаваемой записи будет содержать то же значение, что и выбранное поле
Дата – доступно только если поле имеет тип Date - поле будет содержать указанное или вычисляемое по указанной формуле значение даты
Для поля Ответственный(ая) доступны дополнительные варианты:
Назначение в цикле – пользователи выбираются по порядку (из общего списка, из Роли и/или из Группы)
Назначение наименее занятого – выбирается пользователь, у которого меньше всего записей в текущем модуле (выбор из общего списка, из Роли и/или из Группы)
Случайное назначение – выбор случайного пользователя (из общего списка, из Роли и/или из Группы)
Детальная информация о Ролях и Группах описана в разделе Роли и группы пользователей.
В указанном ниже примере создаётся запись в модуле Задачи со следующими заполненными полями:
Моя задача
Текущая дата + 10 минут
Равна дате создания
Назначается в цикле из Группы group1 и из Роли role1
В данном случае используется тот же функционал, что и при создании записи, но вместо создания новой записи происходит изменение уже существующей: могут быть изменены значения полей записи, добавлены связи с другими записями.
В данном случае выполнение Процесса приведёт к отправке на указанные адреса электронных писем, созданных на основе шаблонов. Для отправки писем индивидуально каждому пользователю – отметьте соответствующую опцию, в противном случае каждый получатель будет видеть адресные данные всех указанных адресатов.
При указании адресатов возможны следующие варианты:
Указать вручную – 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)
Для всех следующих примеров текущее значение счётчика равно 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 |
Вместо желаемого результата отображается часть формулы или вся формула.
Возможно, часть формулы прописана неверно, проверьте синтаксис как это указано в разделе Встроенные функции.
На месте желаемого результата ничего не отображается.
Возможно, попытка вычисления привела к исключению в PHP. В Форме просмотра процесса (Контроль процессов) обратите внимание на статус процесса, в этом случае он закончится неудачей. За детальной информацией обратитесь к файлу suitecrm.log.
Неверный формат вызова функций даты/времени. Убедитесь, что формат вызова соответствует тому, что указан в разделе Функции даты и времени.
Формула вычисляется, но результат неверен
В формуле указан неверный тип данных. Например, результат будет нулевым, если в числовом поле прописан текст, поскольку движок базы данных не может вставить текст в нетекстовое поле
Ошибка в формуле не синтаксическая, а семантическая. Например, формула извлечения подстроки (substring) считает символы, начиная с нуля (что может быть необычно для пользователей, не знакомых с программированием), и если вы укажете единицу в качестве стартового индекса, то извлечение начнётся со ВТОРОГО символа. Убедитесь, что формат вызова функции соответствует тому, что указан в разделе Встроенные функции.
При написании формул соблюдайте следующие правила:
Все функции должны быть заключены в фигурные скобки: {функция}
Перечень параметров функции заключён в круглые скобки: (параметр1; параметр2…)
Параметры функции должны быть отделены друг от друга точкой с запятой
Проверяйте количество и порядок следования параметров в функциях, синтаксис функций можно проверить в разделе Встроенные функции.
Основные параметры в формуле должны выглядеть как {P0}, {P1} и т.д.; связанные параметры - как {R0}, {R1} и т.д., БЕЗ пробелов между символами.
Для включения режима отладчика в файл config_override.php необходимо добавить следующие строки:
$sugar_config['SweeterCalc']['DebugEnabled'] = 1;
$sugar_config['SweeterCalc']['DebugFileName'] = 'SweeterSyncDebug.log';
В качестве DebugFileName вы можете указать любое желаемое значение.
Все процессы вычислений будут записываться в указанный файл. Поскольку объем файла может быстро увеличиваться (особенно актуально для больших формул), рекомендуется использовать режим отладчика только в случае необходимости.
Для удаления ранее созданного действия нажмите на соответствующий значок, расположенный в правом верхнем углу действия:
Для удаления записи внутри действия нажмите на соответствующий значок, расположенный слева от записи:
В нижней части Формы просмотра каждого процесса расположена субпанель Контроль процесса, отображающая информацию о выполнении текущего процесса, содержащую в том числе: название записи, запустившей процесс, статус выполнения процесса, дату и время выполнения процесса.
Сортировка списка записей, для этого нажмите на значок в заголовке сортируемого столбца, для обратной сортировки нажмите на значок ещё раз.
Добавление записи в избранное – после чего пользователь получает возможность быстрого доступа к наиболее важной для него информации. За дополнительной информацией обратитесь к разделу Избранное.
Редактирование или удаление информации сразу о нескольких процессах, для этого используйте панель массового обновления.
Экспорт записей, для этого в меню над выбранными записями выберите пункт Экспортировать.
Поиск дубликатов, для этого в меню действий Формы просмотра выберите пункт Поиск дубликатов..
Просмотр детальной информации о процессе, для этого нажмите на названии процесса в общем списке.
Редактирование данных, для этого либо в Форме просмотра нажмите на кнопку Править, либо непосредственно в Форме списка нажмите на кнопку слева от редактируемой записи. Вы также можете выполнить быструю правку.
Дублирование информации о процессе, для этого в меню действий выберите пункт Дублировать. Дублирование является удобным способом быстрого создания схожих записей, вы можете изменить продублированную информацию с целью создания нового процесса.
Удаление процесса, для этого нажмите на кнопку Удалить.
Отслеживание изменений введённой информации, для этого нажмите на кнопку Просмотр журнала изменений в форме просмотра. Если в журнале необходимо изменить перечень контролируемых полей - сделайте это в Студии, настроив параметр Аудит соответствующего поля.
В данном примере показано пошаговое создание процесса, автоматически добавляющего Контрагентов, имеющих тип Клиенты, в список адресатов при создании или изменении информации о Контрагенте:
В модуле процессы выбираем действие Создать процесс.
Присваиваем процессу подходящее название, например: «Заполнение списка адресатов».
В списке контролируемых модулей выбираем модуль Контрагенты.
В списке Запускать выбираем значение Только при сохранении записи.
В списке Запускать для оставляем стандартное значение Всех записей - в этом случае процесс будет запущен и при создании, и при изменении записи.
Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.
В разделе условий выполнения процесса нажимаем кнопку Добавить условие.
В списке полей выбираем значение Тип
В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Значение.
В списке значений выбираем Клиент.
Созданное условие должно выглядеть следующим образом:
В разделе действий нажимаем кнопку Добавить действие.
В списке действий выбираем Изменить запись.
В поле Краткое описание действия вводим соответствующее название, например: «Дополнение списка адресатов».
Нажимаем кнопку Добавить связь.
В появившемся над кнопкой списке выбираем значение Списки адресатов: Адресаты.
Появятся два дополнительных поля. В крайнем правом поле указываем необходимый список адресатов. Созданное действие будет выглядеть следующим образом:
В данном примере показано пошаговое создание процесса, автоматически отправляющего уведомления двум пользователям (ответственному за обращение и дополнительно указанному пользователю) в том случае, если открытое обращение не обновлялось в течение двух дней:
В модуле процессы выбираем действие Создать процесс
Присваиваем процессу подходящее название, например: «Напоминание об обращении».
В списке контролируемых модулей выбираем модуль Обращения.
В списке Запускать выбираем значение Только при сохранении записи.
В списке Запускать для оставляем стандартное значение Всех записей - в этом случае процесс будет запущен и при создании, и при изменении записи.
Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.
В разделе условий выполнения процесса нажимаем кнопку Добавить условие.
В списке полей выбираем значение Дата изменения
В качестве оператора сравнения выбираем значение Меньше или равно, в поле Тип выбираем значение Дата.
В списке значений выбираем Сейчас и в дополнительных полях указываем: «-», «2» и «дней».
Ещё раз нажимаем кнопку Добавить условие.
В списке полей нового условия выбираем значение Статус.
В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Мультивыбор.
В списке значений выбираем элементы, соответствующие открытому обращению, в данном случае это Новое и Назначенное.
Созданное условие должно выглядеть следующим образом.
В разделе действий нажимаем кнопку Добавить действие.
В списке действий выбираем Отправить E-mail.
В поле Краткое описание действия вводим соответствующее название, например: «Напоминание пользователям об обращении».
Отмечаем необязательную опцию Отправлять индивидуально каждому указанному адресату - в этом случае каждый адресат будет видеть в списке получателей письма только свой электронный адрес.
Нажмите на кнопку и для поля Кому выберите значение Связанной записи, после чего в крайнем правом поле выберите значение Пользователи: Ответственный(ая).
Нажмите на кнопку ещё раз и для нового поля Кому выберите значение Выбрать пользователя, после чего в крайнем правом поле выберите необходимого дополнительного пользователя.
В списке шаблонов электронных писем выберите подходящий шаблон или создайте новый.
Созданное действие будет выглядеть следующим образом:
В данном примере показано пошаговое создание процесса, автоматически выполняющего следующие действия:
Назначение зарегистрированного через веб-форму Предварительного контакта наименее занятому пользователю, входящего в условную Группу «group1» (выбирается пользователь, у которого меньше всего записей в модуле Предварит. Контакты)
Назначение звонка пользователю с указанием времени звонка на сутки позже после создания Предварительного контакта
В модуле процессы выбираем действие Создать процесс
Присваиваем процессу подходящее название, например: «Назначение ответственного предварительному контакту + звонок».
В списке контролируемых модулей выбираем модуль Предварит. Контакты.
В списке Запускать выбираем значение Только при сохранении записи.
В списке Запускать для выбираем значение Создаваемых записей.
Убеждаемся, что опция Многократный запуск НЕ отмечена и статус указан как Активен. При необходимости вводим описание процесса и указываем ответственного.
В разделе условий выполнения процесса нажимаем кнопку Добавить условие.
В списке полей выбираем значение Источник предв. контакта
В качестве оператора сравнения оставляем значение Равно, в поле Тип выбираем Значение.
В списке значений выбираем Веб-сайт.
Созданное условие должно выглядеть следующим образом:
В разделе действий нажимаем кнопку Добавить действие.
В списке действий выбираем Изменить запись.
В поле Краткое описание действия вводим соответствующее название, например: «Назначение ответственного наименее занятому предварительному контакту».
В списке Тип записи выбираем модуль Предварит. Контакты.
Нажимаем кнопку Добавить поле.
В появившемся над кнопкой списке выбираем значение Ответственный(ая).
Появятся два дополнительных поля. В среднем поле выбираем Назначение наименее занятого.
В крайнем правом поле выбираем ВСЕ пользователи Группы.
В появившемся справа поле выбираем группу «group1».
Ещё раз нажимаем кнопку Добавить действие.
В списке действий выбираем Создать запись.
В поле Краткое описание действия вводим соответствующее название, например: «Назначение звонка».
В списке Тип записи выбираем модуль Звонки.
Отмечаем опцию Связать с записью в контролируемом модуле.
Нажимаем кнопку Добавить поле.
В появившемся над кнопкой списке выбираем значение Дата звонка.
Появятся два дополнительных поля. В среднем поле выбираем Дата.
В крайнем правом поле выбираем Сегодня.
В появившихся дополнительных полях указываем следующие значения: «+», «1», и «дней».
Нажимаем кнопку Добавить поле.
В появившемся над кнопкой списке выбираем значение Ответственный(ая).
Появятся два дополнительных поля. В среднем поле выбираем Поле.
В крайнем правом поле выбираем Ответственный(ая)» - при этом создаётся связь между назначенным ответственным Предварительного контакта и звонком.
Созданные действия будут выглядеть следующим образом:
Сценарий
Допустим, необходимо рассчитать стоимость ежемесячных выплат по сделке. Для этого необходимо общую сумму сделки разделить на срок выплат. Сроки выплат представлены тремя вариантами: 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.