Формулы

Формулы — это встроенный язык вычислений GetMyBot. Им можно посчитать сумму скидки, собрать строку, проверить условие, преобразовать список или дату — прямо в тексте сообщения, в действии «Вычисление» и в условиях таблицы решений. Синтаксис близок к формулам электронных таблиц и поддерживает русские названия функций.

Где работают формулы

  • В тексте — конструкция {{= выражение}} вычисляет выражение и подставляет результат. Например, {{= ОКРУГЛ(param.total * 0.9) }}.
  • Действие «Вычисление» (compute) — считает выражение и сохраняет результат в ctx (поле «Сохранить в ctx») и/или в параметр подписчика (поле «Сохранить в параметр»).
  • Таблица решений — в действии «Вычисление» вместо одного выражения можно задать список правил «когда → тогда»: возвращается значение первого правила, чьё условие истинно, иначе значение по умолчанию.

Синтаксис

  • Операторы: арифметика + - * / %, сравнения == != < > <= >=, логика && || !, скобки ( ).
  • Литералы: числа (42, 3.14), строки в кавычках ("привет"), логические (true, false).
  • Ссылки на данные: внутри выражения можно обращаться к параметрам и значениям контекста по имени — param.total, ctx.items, recipient.email.
  • Вызов функции: ИМЯ(аргумент1, аргумент2). Имена не зависят от регистра и понимают русские алиасы.

Функции

Имена даны в каноничном (английском) виде; в скобках — русский алиас, если он есть. Регистр не важен.

Математика

SUM (СУММ), AVERAGE (СРЗНАЧ), MAX (МАКС), MIN (МИН), MOD (ОСТАТ), POW (СТЕПЕНЬ), SQRT (КОРЕНЬ), PI (ПИ), ROUND (ОКРУГЛ), CEIL (ОКРВВЕРХ), FLOOR (ОКРВНИЗ), TRUNC (ОТБР), ABS, RANDBETWEEN (СЛУЧМЕЖДУ).

Текст

LEN (ДЛСТР), LEFT (ЛЕВСИМВ), RIGHT (ПРАВСИМВ), MID (ПСТР), LOWER (СТРОЧН), UPPER (ПРОПИСН), UPPERFIRST (ПРОПИСНПЕРВ), REPEAT (ПОВТОР), CONCAT (СЦЕПИТЬ), SUBSTITUTE (ПОДСТАВИТЬ), FIND (НАЙТИ), SEARCH (ПОИСК), FIELD (ПОЛЕ), TRIM, LTRIM, RTRIM, PADLEFT, PADRIGHT, SPLIT, JOIN, STARTSWITH, ENDSWITH, CONTAINS, NL.

Логика

IF (ЕСЛИ), AND (И), OR (ИЛИ), NOT (НЕ), EMPTY, ISNUMBER (ЕЧИСЛО), COALESCE.

Списки

SORT, RSORT, UNIQUE, FILTER, FOREACH, REDUCE, INDEX, SLICE, COUNTA (СЧЁТЗ), COUNTUNIQUE, ARRAYADD, ARRAYREMOVE, ARRAYREPLACE, ARRAYFIND.

Дата и время

TODAY (СЕГОДНЯ), NOW (ТДАТА), DATEADD, DATESUB, DATEDIF (РАЗНДАТ), DATEFORMAT, DATEVALUE, WEEKDAY (ДЕНЬНЕД).

JSON

TOJSON, FROMJSON, JSONPATH, JP, JSONOBJECT, JSONARRAY, KEYS, VALUES.

Криптография и кодирование

HASH (ХЭШ), TOBASE64, FROMBASE64, FROMJWT, FROMJWK.

Параметры

PARAMID, PARAMREPLACE, PARAMREMOVE.

Примеры

  • Скидка 10% от суммы: {{= ОКРУГЛ(param.total * 0.9) }}.
  • Условие: {{= ЕСЛИ(param.total > 1000, "опт", "розница") }}.
  • Сборка строки: {{= СЦЕПИТЬ("Заказ №", ctx.order_id) }}.
  • Размер списка: {{= СЧЁТЗ(ctx.items) }}.

Тест формулы

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

Что дальше