Разработка модуля калькулятора услуг 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.







