1. Описание
С помощью команды $calc() можно выполнять математические операции в любых местах HelpDeskEddy, где поддерживаются теги:
- числовые поля заявок
- числовые поля контактов
- в ответах и комментариях заявки
- диспетчер
- вебхуки и временные поля
- и т.д.
Команда позволяет автоматизировать расчёты и обновления числовых значений в системе.
2. Формат команды
$calc(<выражение>)
<выражение>— любое математическое выражение с числами, тегами или функциями.- Доступные операции:
+,-,*,/,%,^, унарный минус-x. - Скобки поддерживаются:
( ). - Доступные функции:
round(a, [p])— округление доpзнаков.floor(a)— округление вниз.ceil(a)— округление вверх.abs(a)— модуль числа.min(a, b, …)— минимальное значение.max(a, b, …)— максимальное значение.
3. Ограничения
- Максимальный размер выражения: 256 символов.
- После обработки тегов: до 1000 символов.
4. Примеры использования
4.1 Простое увеличение/уменьшение
$calc(current_value + 1) // Увеличить на 1
$calc(current_value - 1) // Уменьшить на 1
$calc(current_value + 10) // Увеличить на 10
$calc(current_value - 10) // Уменьшить на 10
4.2 С округлением
$calc(round(current_value / 3, 2)) // Деление на 3, округление до 2 знаков
$calc(round(current_value * 1.15, 0)) // Увеличить на 15%, округление до целого
4.3 С выбором минимума/максимума
$calc(max(current_value, 100)) // Если меньше 100 — увеличивает до 100
$calc(min(current_value, 50)) // Если больше 50 — уменьшает до 50
4.4 Комбинированные выражения
$calc((current_value + 5) * 2) // Прибавить 5 и удвоить
$calc((current_value + 10) / max(1, other_field)) // Деление на другое поле
$calc(round((current_value - 2) * 1.5, 1)) // Вычитание и умножение с округлением
4.5 Проверка ошибок и граничных случаев
$calc(2/0) // Деление на ноль → пустой результат
$calc(1+) // Некорректное выражение → результат 1
$calc(round(1,2,3)) // Третий аргумент игнорируется → результат 1
$calc(- -1) // Унарный минус → результат 1
$calc((((((1+2)))))) // Лишние скобки → результат 3
5. Пример на практике
Предположим, что в компании есть индивидуальное поле "Общий приоритет", по которому рассчитывается срочность обработку заявок для операторов. Чем выше число — тем выше её приоритет. Наша задача сделать так, чтобы приоритет заявки рассчитывался автоматически на основе нескольких факторов:
- поле контакта "VIP" (от 0 до 1) — если особо важный клиент, то значение 1, если нет — 0. Поле заполняется либо вручную сотрудниками, либо автоматически передаётся из внешнего сервиса (в том числе в случае изменения).
- поле контакта "Тариф" (от 1 до 3) — коэффициент стоимость тарифа клиента. Чем выше — тем больше значение:
- поле заявки "Срочность" (от 1 до 3) — это значение вносят операторы на своё усмотрение, в зависимости от срочности вопроса клиента.
- поле заявки "Общий приоритет" — в этом поле при помощи функции $calc() будет автоматически суммироваться итоговое значение трёх полей: VIP, Тариф и Срочность:
Теперь для автоподсчёта нам остаётся создать правило Диспетчера. В обязательных условиях проверяем "Изменения в заявке", а в дополнительных "Изменение поля 'Срочность' c любого на любое". Ведь остальные поля контактов уже заполнены и отображаются в карточке клиента.
В действиях находим поле "Общий приоритет" и прописываем функцию $calc({creator_custom_field_x1}+{creator_custom_field_x2}+{custom_field_x3) с нужными полями, список полей можно найти нажав на иконку с тегом:
Не забудьте включить правило и сохранить его.
Теперь перейдём в заявку и посмотрим работу правила на практике:
При помощи функции $calc() поле "Общий приоритет" подсчитало все нужные переменные и заполнилось автоматически. По аналогии вы можете использовать эту функцию и для решения множества других задач.