Конфигуратор товаров: как избавиться от тысяч 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) — отдельный проект.
Получите консультацию по конфигуратору — поможем подобрать оптимальное решение для вашего каталога.







