Блоки · Масиви та 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, formatDateUk, formatDateTime, weekdayName…
  • **Списки** — listCreate, listAdd, listGet, listJoin, inList…
  • **Regex** — match, findAll, replaceRegex
  • **Логіка** — if, and, or, eq, gt, isEmpty…
  • **JSON** — jsonGet, jsonParse, toNum, uuid…

Форматування дат

Функція formatDate форматує ISO-дату або результат `now()` / `addDays()` за шаблоном. Токени замінюються у порядку від довших до коротших:

  • `YYYY` — повний рік (2026)
  • `YY` — рік двозначно (26)
  • `MMMM` — місяць називом у родовому відмінку (липня)
  • `MMM` — скорочена назва місяця (лип)
  • `MM` — місяць з нулем (07)
  • `M` — місяць без нуля (7)
  • `dddd` — день тижня повністю (п'ятниця)
  • `ddd` — день тижня скорочено (пт)
  • `DD` — день з нулем (09)
  • `D` — день без нуля (9)
  • `HH` — години з нулем (14)
  • `H` — години без нуля (14)
  • `mm` — хвилини з нулем (05)
  • `ss` — секунди з нулем (08)

Приклади форматування

  • Класичний формат: `formatDate(now(), "DD.MM.YYYY")` → 10.07.2026
  • Дата і час: `formatDateTime(now())` → 10.07.2026 08:00 (UTC)
  • Український текст: `formatDateUk(now())` → п'ятниця, 10 липня 2026
  • День тижня: `weekdayName(now())` → п'ятниця; `weekdayName(now(), true)` → пт
  • Дедлайн: `formatDate(addDays(now(), 3), "DD.MM.YYYY")`

Приклади

  • Ціна з ПДВ: `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")`
Калькулятор — Wiki Epsenta