Конфигуратор товаров: как избавиться от тысяч SKU в 1С-Битрикс
Мы часто сталкиваемся с ситуацией: клиент продаёт мебель на заказ, и каждый диван может быть собран из десятков вариантов ткани, ножек и наполнения. Стандартные торговые предложения Битрикс (SKU) — см. SKU на Wikipedia — заставляют создавать все комбинации вручную. 5 материалов × 8 цветов × 3 размера = 120 SKU. А если добавить зависимость: кожаный диван нельзя комбинировать с велюровыми подушками — SKU взрываются до тысяч. Конфигуратор решает эту проблему принципиально иначе, экономя до 80% времени на администрировании каталога.
Зачем нужен модуль конфигуратора, если есть торговые предложения?
SKU хороши для простых комбинаций из 2–3 характеристик. Когда количество опций превышает 4 или появляются зависимости, лучше использовать кастомный конфигуратор. Он хранит опции независимо и рассчитывает итоговую цену и состав динамически, как описано в документации Битрикс по инфоблокам. Наш модуль vendor.configurator реализует полноценную модель данных с поддержкой зависимостей и формульных модификаторов цены.
Чем конфигуратор отличается от SKU
В SKU заранее перечислены все возможные комбинации. Если у ноутбука 3 варианта процессора, 4 варианта RAM и 3 варианта SSD — нужно 36 SKU, и все их надо создавать и поддерживать. В конфигураторе опции задаются независимо, а итоговая цена и состав рассчитываются динамически. Это принципиально другая модель данных, позволяющая экономить до 80% времени на сопровождении каталога.
Как работают зависимости опций?
Самое сложное в конфигураторе — зависимости. При выборе «Мощный блок питания» автоматически становятся доступны более производительные видеокарты. Вот пример реализации на PHP с использованием ORM Битрикс:
class DependencyResolver { public function resolve(int $productId, array $selectedOptions): DependencyResult { $dependencies = DependencyTable::getList([ 'filter' => ['OPTION_ID' => $selectedOptions], ])->fetchAll(); $visible = []; $hidden = []; $required = []; $disabled = []; foreach ($dependencies as $dep) { match ($dep['ACTION']) { 'show' => $visible[] = $dep['DEPENDENT_OPTION_ID'], 'hide' => $hidden[] = $dep['DEPENDENT_OPTION_ID'], 'require' => $required[] = $dep['DEPENDENT_OPTION_ID'], 'disable' => $disabled[] = $dep['DEPENDENT_OPTION_ID'], }; } return new DependencyResult($visible, $hidden, $required, $disabled); } } Результат передаётся на фронтенд через AJAX при каждом изменении выбора. Благодаря тегированному кэшированию цена пересчитывается мгновенно, без полной перезагрузки страницы.
Почему конфигуратор экономит время?
Модуль vendor.configurator включает ORM-таблицы: b_vendor_cfg_product, b_vendor_cfg_group, b_vendor_cfg_option, b_vendor_cfg_dependency, b_vendor_cfg_configuration, b_vendor_cfg_order_item. Администратору достаточно задать группы и опции один раз, а не создавать тысячи SKU. Зависимости настраиваются визуально в конструкторе.
Как происходит динамический расчёт цены?
Базовая цена + модификаторы опций. Поддерживаются фиксированные надбавки, проценты и произвольные формулы:
class PriceCalculator { public function calculate(int $productId, array $selectedOptionIds): float { $product = ProductTable::getById($productId)->fetch(); $price = (float)$product['BASE_PRICE']; $options = OptionTable::getList([ 'filter' => ['ID' => $selectedOptionIds], ])->fetchAll(); foreach ($options as $option) { $price = match ($option['PRICE_MOD_TYPE']) { 'fixed' => $price + (float)$option['PRICE_MOD_VALUE'], 'percent' => $price * (1 + (float)$option['PRICE_MOD_VALUE'] / 100), 'formula' => $this->evalFormula($option['PRICE_MOD_VALUE'], $price), default => $price, }; } return round($price, 2); } } Формульный модификатор позволяет задавать нелинейные зависимости: например, цена кастомного размера рассчитывается по площади (ширина × высота × базовая ставка за кв.м). Это особенно актуально для оконных конструкций или мебели на заказ.
Фронтенд конфигуратора
Интерфейс конфигуратора — React/Vue компонент, подключаемый к странице товара. Логика:
- Загружает структуру групп и опций через REST-эндпоинт.
- При изменении выбора — AJAX на
DependencyResolver, обновляет видимость опций. - Одновременно AJAX на
PriceCalculator, обновляет итоговую цену. - Визуальные опции (цвет, материал) — сетка превью с кликом.
Состояние конфигурации синхронизируется с URL-хешем — конфигурацию можно скопировать и отправить ссылку. Клиенты могут сохранять несколько конфигураций и сравнивать их.
Добавление в корзину
Сохранённая конфигурация добавляется в корзину как один товар. Состав конфигурации хранится в b_vendor_cfg_configuration.options, связь с позицией корзины — через b_vendor_cfg_order_item. При просмотре заказа пользователь и менеджер видят детализацию: какие именно опции были выбраны. Это упрощает обработку заказов и исключает ошибки комплектации.
Административный интерфейс
- Конструктор конфигуратора: drag-and-drop групп и опций.
- Настройка зависимостей через визуальный редактор (список правил).
- Предпросмотр конфигуратора прямо в админке.
- Список сохранённых конфигураций пользователей.
- Статистика: популярные конфигурации, средний чек по конфигуратору (увеличение до 40%).
Наши сертифицированные специалисты с опытом работы от 10 лет внедряют такие модули «под ключ». Мы гарантируем стабильную работу на высоких нагрузках — до 10 000 одновременных сессий конфигурации. Закажите разработку модуля конфигуратора и получите гибкий инструмент для вашего бизнеса.
Что входит в работу
В рамках проекта мы предоставляем:
- Техническое задание и документацию по API.
- Миграции базы данных для существующих товаров.
- Развёртывание на боевом сервере.
- Код с комментариями и покрытием unit-тестами.
- Обучение администраторов работе с конструктором.
- Гарантийную поддержку 3 месяца.
Свяжитесь с нами для оценки вашего проекта — просто напишите описание товаров и их характеристик. Оценим за 1 день.
Сравнение SKU и конфигуратора
| Критерий | Торговые предложения (SKU) | Кастомный конфигуратор |
|---|---|---|
| Количество комбинаций | N×M (создаются вручную) | Произвольное (динамический расчёт) |
| Зависимости опций | Не поддерживаются | Поддерживаются (show/hide/require/disable) |
| Модификаторы цены | Только фиксированная надбавка | Фиксированные, проценты, формулы |
| Время администрирования | Высокое (тысячи SKU) | Низкое (десятки опций) |
| Гибкость для клиента | Низкая | Высокая (кастомизация) |
Сроки разработки
| Этап | Срок |
|---|---|
| ORM-таблицы, модель продукта и опций | 1 день |
| Resolver зависимостей, API | 2 дня |
| Калькулятор цены, формульные модификаторы | 2 дня |
| Фронтенд-компонент (React/Vue) | 3 дня |
| Добавление в корзину, детализация в заказе | 2 дня |
| Административный конструктор | 2 дня |
| Тестирование | 1 день |
Итого: 13 рабочих дней. 3D-визуализация конфигурации (WebGL) — отдельный проект. Получите консультацию по конфигуратору — поможем подобрать оптимальное решение для вашего каталога.







