Блоки · Масиви та 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")`