Математические операции в заявке

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() поле "Общий приоритет" подсчитало все нужные переменные и заполнилось автоматически. По аналогии вы можете использовать эту функцию и для решения множества других задач.