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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка модуля калькулятора послуг 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

Калькулятор послуг — інструмент конверсії. Користувач вводить параметри (площа, кількість, терміни, опції), отримує миттєву вартість і надсилає заявку. Правильно зроблений калькулятор збільшує конверсію: клієнт розуміє ціноутворення, не боїться несподіваних сум.

Готових рішень у маркетплейсі Бітрікс практично немає, або вони надто прості. Для серйозного бізнесу — страхової компанії, будівельного підрядника, друкарні — потрібен модуль із гнучкою формулою та інтеграцією з CRM.

Що повинен вміти модуль

  • Кілька незалежних калькуляторів на одному сайті (для різних послуг)
  • Багатокроковий ввід параметрів
  • Складні формули з умовами (if площа > 100, то знижка 10%)
  • Залежні поля (вибір одного поля змінює список опцій в іншому)
  • Прив'язка до цін із торгового каталогу Бітрікс (b_catalog_price)
  • Надсилання заявки з розрахунком до CRM як лід або угода
  • Перерахунок у реальному часі без перезавантаження сторінки

Структура даних

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

Рушій формул

Формула зберігається в JSON-структурі, яка інтерпретується на стороні сервера (PHP) і на стороні клієнта (JavaScript). Синхронність критична: підсумкова сума в інтерфейсі повинна збігатися із сумою в CRM.

Приклад формули для розрахунку ремонтних робіт:

{
  "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
    }
  ]
}

PHP-інтерпретатор FormulaEvaluator::evaluate($formula, $fieldValues) рекурсивно обходить дерево та обчислює підсумок.

JavaScript-частина

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

  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).

Терміни розробки

Етап Термін
Архітектура, таблиці, інсталятор 1 день
Конструктор полів і конфігуратор 2 дні
Рушій формул PHP + JS 3 дні
Залежні поля, реактивний перерахунок 2 дні
Інтеграція з цінами каталогу 1 день
Надсилання до CRM 1 день
Адміністративний інтерфейс 2 дні
Компонент для розміщення на сторінці 1 день

Разом: 13 робочих днів. Нестандартні формули із зовнішніми довідниками (тарифні сітки, регіональні коефіцієнти) — +2–3 дні.