Разработка конфигуратора товаров на 1С-Битрикс
Конфигуратор товаров нужен там, где нет фиксированных SKU — компьютеры, окна, мебель, промышленное оборудование. Покупатель выбирает параметры шаг за шагом, цена и доступность пересчитываются в реальном времени, а в корзину попадает конкретная сборка. Встроенные торговые предложения (b_catalog_product_offer) справляются с несколькими измерениями, но при 5+ взаимозависимых параметрах — ломаются.
Как устроен конфигуратор
Конфигуратор — это клиент-серверное решение поверх каталога Битрикс. Фронтенд отображает шаги и обновляет интерфейс; бэкенд проверяет совместимость, считает цену, возвращает JSON.
Хранение данных. Варианта два:
- Использовать инфоблок с торговыми предложениями и многомерными свойствами. Работает при числе комбинаций до ~10 000 —
b_iblock_element_propertyрастёт квадратично. - Создать собственные таблицы совместимости. Подходит для сложных матриц: каждое правило пишется в отдельную запись, индексы по полям-параметрам дают быстрый поиск.
На практике: основные данные товара — в инфоблоке, правила совместимости — в отдельной таблице. Класс ядра CIBlockElement используется для чтения базовых свойств, REST-обработчик — для проверки конфигурации.
Шаги конфигуратора и зависимости
Каждый шаг — это набор опций. Выбор на шаге N ограничивает доступные опции на шаге N+1. Реализуется через таблицу совместимости:
CREATE TABLE custom_configurator_rules (
id SERIAL PRIMARY KEY,
product_id INT NOT NULL,
param_key VARCHAR(100) NOT NULL,
param_value VARCHAR(255) NOT NULL,
depends_key VARCHAR(100) NOT NULL,
depends_val VARCHAR(255) NOT NULL,
available TINYINT DEFAULT 1
);
CREATE INDEX idx_rules_product ON custom_configurator_rules (product_id, param_key, param_value);
Когда пользователь выбирает значение параметра, AJAX-запрос уходит на /bitrix/services/main/ajax.php с действием обработчика конфигуратора. Обработчик читает таблицу правил, возвращает доступные опции для следующего шага и текущую цену.
Расчёт цены
Цена конфигурации — сумма базовой цены товара плюс наценки за выбранные опции. Хранится в b_catalog_price (базовые цены) и отдельной таблице наценок:
CREATE TABLE custom_configurator_price_mod (
id SERIAL PRIMARY KEY,
product_id INT NOT NULL,
param_key VARCHAR(100) NOT NULL,
param_value VARCHAR(255) NOT NULL,
price_mod DECIMAL(12,2) NOT NULL, -- абсолютная наценка
price_pct DECIMAL(5,2) DEFAULT 0 -- или процент
);
Обработчик собирает все выбранные опции, суммирует наценки, применяет скидки через \Bitrix\Catalog\Discount\DiscountManager — и возвращает итог клиенту.
Добавление в корзину
Когда конфигурация завершена, в корзину добавляется обычное торговое предложение (или товар без предложений), но к нему прикрепляется JSON выбранной конфигурации как пользовательское свойство корзины:
\Bitrix\Sale\Basket::create(SITE_ID);
$basketItem = $basket->createItem('catalog', $productId);
$basketItem->setFields([
'QUANTITY' => 1,
'PROPS' => [
['NAME' => 'Конфигурация', 'CODE' => 'CONFIGURATION', 'VALUE' => json_encode($config)],
],
]);
Конфигурация отображается в карточке заказа в административной части и попадает в письмо подтверждения через шаблон order_new.
Интеграция с остатками
Доступность конфигурации проверяется через \Bitrix\Catalog\ProductTable и \Bitrix\Catalog\StoreProductTable. Если один из компонентов — на складе, другой — под заказ, конфигуратор показывает реальный срок. Логика: берём минимальный остаток среди всех компонентов конфигурации.
Административная панель управления
К конфигуратору разрабатывается интерфейс в /bitrix/admin/ для управления правилами совместимости и наценками. Используем CAdminList, CAdminForm — стандартные классы административного интерфейса Битрикс. Это позволяет контент-менеджерам самостоятельно добавлять новые опции без правки кода.
Сроки
| Этап | Содержание | Срок |
|---|---|---|
| Проектирование | Анализ параметров, схема БД, прототип UI | 3–4 дня |
| Бэкенд | Таблицы, обработчики, расчёт цены, остатки | 4–6 дней |
| Фронтенд | UI конфигуратора, AJAX, обновление цены | 3–5 дней |
| Корзина и заказы | Передача конфигурации, отображение в заказе | 2–3 дня |
| Административный интерфейс | CRUD правил совместимости и наценок | 2–3 дня |
| Тестирование | Все комбинации, граничные случаи | 2–3 дня |
Итого: 2.5–4 недели в зависимости от числа параметров и сложности матрицы совместимости.
Что влияет на сложность
- Число измерений конфигуратора (3 параметра vs 10).
- Наличие графического предпросмотра (3D-модель, изображение результата).
- Интеграция с 1С для актуальных остатков.
- Мобильная адаптация многошагового UI.
- Необходимость сохранять незавершённые конфигурации для авторизованных пользователей — через
b_user_optionsили отдельную таблицу черновиков.







