Розробка модуля калькулятора послуг 1С-Бітрікс
Клієнт вводить площу, обирає оздоблення — і йде. Без ціни. Без заявки. Знайомо? Калькулятор послуг на Бітріксі вирішує цю проблему: користувач отримує миттєву вартість і відправляє заявку. Ми розробляємо кастомні модулі, які вбудовуються у ваш сайт і працюють з CRM. Жодних готових рішень — тільки під вашу бізнес-логіку та формули.
Готових калькуляторів у маркетплейсі Бітрікс практично немає, або вони надто примітивні. Для серйозного бізнесу — страхової компанії, будівельного підрядника, друкарні — потрібен модуль з гнучкою формулою та інтеграцією з CRM. Наш досвід показує, що правильно зроблений калькулятор збільшує конверсію в 2–3 рази: клієнт розуміє ціноутворення та довіряє компанії.
Коли потрібен кастомний калькулятор?
Якщо ваш бізнес використовує нестандартні тарифи, регіональні коефіцієнти або залежить від даних з 1С, готовий плагін не підійде. Кастомний модуль дає повний контроль над формулами та інтеграціями. Порівняйте: готові рішення обробляють лише лінійні залежності, а кастомний справляється з розгалуженнями та зовнішніми довідниками. Конверсія лідів з таким калькулятором вища в 2 рази — перевірено на проєктах.
Як влаштований рушій формул?
Формула зберігається в JSON-структурі, яка інтерпретується на сервері (PHP) і на клієнті (JavaScript). Синхронність критична: підсумкова сума в інтерфейсі має збігатися з сумою в CRM. PHP-інтерпретатор FormulaEvaluator::evaluate($formula, $fieldValues) рекурсивно обходить дерево та обчислює підсумок. На фронтенді — такий самий інтерпретатор на JS.
{ "type": "add", "operands": [ { "type": "multiply", "operands": [ {"type": "field", "name": "area"}, {"type": "field", "name": "work_type_price"} ] }, { "type": "if", "condition": {"type": "gt", "left": {"type": "field", "name": "area"}, "right": 100}, "then": {"type": "multiply", "operands": [{"type": "ref", "name": "subtotal"}, -0.1]}, "else": 0 } ] } Порівняння: готові рішення vs кастомний модуль
| Параметр | Готові рішення | Кастомний модуль |
|---|---|---|
| Гнучкість формул | Тільки лінійні | Будь-які з умовами та посиланнями |
| Інтеграція з CRM | Обмежена | Повна, зі створенням лідів і угод |
| Прив'язка до цін каталогу | Ні | Так, через b_catalog_price |
| Залежні поля | Ні | Так, з динамічною фільтрацією |
| Адміністративний інтерфейс | Стандартний | Під ваш бренд і логіку |
Архітектура модуля: таблиці та типи полів
Модуль vendor.calculator включає чотири основні таблиці:
-
b_vendor_calc_calculator— калькулятори: id, name, slug, config (JSON полів і кроків), formula (JSON дерево обчислень), crm_target (lead/deal), is_active -
b_vendor_calc_field— поля калькулятора: id, calculator_id, type, name, label, options (JSON), depends_on, validation_rules, sort -
b_vendor_calc_result— збережені розрахунки: id, calculator_id, session_id, user_id, params (JSON), result (JSON суми), created_at -
b_vendor_calc_lead— зв'язок розрахунку з лідом/угодою CRM: result_id, crm_type, crm_id
Типи полів:
-
number— числове поле з min/max/step -
slider— повзунок з діапазоном -
select— випадний список з прив'язкою коефіцієнтів -
checkbox— прапорець з додатковою вартістю -
radio— вибір одного варіанта -
area— двовимірне введення (ширина × висота) -
catalog_product— вибір товару з інфоблоку з автопідстановкою ціни
Чому важливий реактивний перерахунок?
На фронтенді — реактивний перерахунок без перезавантаження. При зміні будь-якого поля:
- Збираються поточні значення всіх полів
- Локальна копія формули обчислюється в JS (та сама логіка, що на PHP)
- Результат миттєво оновлюється в інтерфейсі
- Додатково: AJAX-запит на сервер для точного розрахунку з урахуванням актуальних цін з БД
// Перерахунок при зміні поля document.querySelectorAll('.calc-field').forEach(field => { field.addEventListener('change', () => { const values = collectFieldValues(); const localResult = evaluateFormula(calculatorConfig.formula, values); updateResultDisplay(localResult); debounce(() => fetchServerResult(values), 500)(); }); }); Залежні поля
Залежність описується в конфігурації поля:
{ "name": "material_type", "type": "select", "depends_on": { "field": "work_type", "map": { "painting": ["latex", "acrylic", "oil"], "wallpaper": ["paper", "vinyl", "non-woven"], "tile": ["ceramic", "porcelain", "mosaic"] } } } При виборі work_type = 'painting' список матеріалів фільтрується до ["latex", "acrylic", "oil"]. Логіка працює і на клієнті, і перевіряється на сервері при відправці форми.
Відправка в CRM
Після завершення розрахунку користувач заповнює контактні дані та відправляє заявку. Модуль створює лід або угоду:
$leadFields = [ 'TITLE' => 'Розрахунок з калькулятора: ' . $calculator['NAME'], 'NAME' => $formData['name'], 'PHONE' => [['VALUE' => $formData['phone'], 'VALUE_TYPE' => 'WORK']], 'EMAIL' => [['VALUE' => $formData['email'], 'VALUE_TYPE' => 'WORK']], 'COMMENTS' => $this->buildCalculatorComment($result), 'UF_CALC_SUM' => $result['total'], 'SOURCE_ID' => 'CALCULATOR', ]; $leadId = \Bitrix\Crm\LeadTable::add($leadFields)->getId(); Параметри розрахунку записуються в коментар ліда та в користувацьке поле UF_CALC_PARAMS (JSON).
Що входить в роботу
- Архітектура бази даних та інсталятор модуля
- Конструктор полів і конфігуратор з адмін-інтерфейсом
- Рушій формул PHP + JavaScript
- Реактивний перерахунок і залежні поля
- Інтеграція з цінами торгового каталогу
- Відправка заявок в CRM (ліди/угоди)
- Компонент для розміщення на сторінці
- Документація та навчання вашого співробітника
- Гарантія працездатності протягом 30 днів після здачі
Терміни розробки
| Етап | Термін |
|---|---|
| Архітектура, таблиці, інсталятор | 1 день |
| Конструктор полів і конфігуратор | 2 дні |
| Рушій формул PHP + JS | 3 дні |
| Залежні поля, реактивний перерахунок | 2 дні |
| Інтеграція з цінами каталогу | 1 день |
| Відправка в CRM | 1 день |
| Адміністративний інтерфейс | 2 дні |
| Компонент для розміщення на сторінці | 1 день |
Разом: 13 робочих днів. Нестандартні формули із зовнішніми довідниками (тарифні сітки, регіональні коефіцієнти) — +2–3 дні.
Зв'яжіться з нами для оцінки вашого проєкту. Досвід розробки під Бітрікс — понад 10 років, гарантуємо якість і прозорість. Отримайте консультацію — обговоримо вашу задачу та підготуємо комерційну пропозицію. Детальніше про CRM-системи та REST API Бітрікс24.







