Блоки · Масиви та JSON
Калькулятор
Калькулятор — багатокрокові вирази над змінними контакта: математика, рядки, дати, списки, regex і логіка.
Призначення
Блок Калькулятор виконує один або кілька кроків виразів і записує результати у змінні контакта. Кожен наступний крок бачить змінні, записані попередніми кроками в цьому ж блоці.
Підходить для розрахунку ціни зі знижкою, форматування дати, перевірки балів квізу, роботи з JSON-списками та умовних значень без окремого блоку «Умова».
Синтаксис
- Змінні: `{name}` або `name` (якщо немає конфлікту з функцією)
- Математика: `2+2`, `10*1.2`, `10 % 3`, `2^8` (степінь)
- Порівняння: `{score} > 50`, `{status} == "done"`
- Функції: `upper({name})`, `addDays(now(), 7)`, `if(gt({score}, 50), "Так", "Ні")`
- Списки зберігаються як JSON-масив у текстовій змінній: `listCreate`, `listAdd`, `listGet`
Категорії функцій
- **Математика** — add, sub, mul, div, round, min, max, pow, mod, random…
- **Рядки** — concat, split, join, trim, replace, contains…
- **Дати** — now, addDays, diffDays, formatDate, parseDate…
- **Списки** — listCreate, listAdd, listGet, listJoin, inList…
- **Regex** — match, findAll, replaceRegex
- **Логіка** — if, and, or, eq, gt, isEmpty…
- **JSON** — jsonGet, jsonParse, toNum, uuid…
Приклади
- Ціна з ПДВ: `round(mul({price}, 1.2), 2)` → змінна `price_vat`
- Дедлайн: `formatDate(addDays(now(), 3), "DD.MM.YYYY")`
- Статус квізу: `if(gte({quiz_score}, 70), "Зараховано", "Пересклад")`
- Поле з API: `jsonGet({http_body}, "data.order_id")`