Розробка модуля калькулятора послуг 1С-Бітрікс

Клієнти йдуть із сайту, не отримавши розрахунок вартості послуги? Кастомний калькулятор на 1С-Бітрікс вирішує це завдання: ми розробляємо модуль, який миттєво рахує ціну за вашими формулами та передає заявку в CRM. Наша команда реалізує проєкт під ключ — від аудиту бізнес-логіки до впровадження та подальшої підтримки.

Розробка модуля калькулятора послуг 1С-Бітрікс

Розробка модулівСередній~1-2 тижні
Часті запитання

Розробка модуля калькулятора послуг 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 — вибір товару з інфоблоку з автопідстановкою ціни

Чому важливий реактивний перерахунок?

На фронтенді — реактивний перерахунок без перезавантаження. При зміні будь-якого поля:

  1. Збираються поточні значення всіх полів
  2. Локальна копія формули обчислюється в JS (та сама логіка, що на PHP)
  3. Результат миттєво оновлюється в інтерфейсі
  4. Додатково: 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.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    837
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    928
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    865
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1223