При каталоге с более чем 10 000 комбинаций опций стандартные торговые предложения SKU перестают справляться. Сайт тормозит, добавить новую опцию становится проблемой, а цены считаются с ошибками. Типичный кейс — сборка ПК или конфигуратор кухонь, где параметры пересекаются по совместимости. В таких ситуациях кастомный конфигуратор на 1С-Битрикс — единственное адекватное решение. Мы реализовали более 30 подобных проектов и знаем все подводные камни. Официальная документация 1С-Битрикс рекомендует использовать торговые предложения только для простых комбинаций. Стоимость разработки варьируется от $1.5k–5k в зависимости от сложности. Оцените ваш проект — получите консультацию для предварительного анализа.
Когда стандартных торговых предложений недостаточно?
Стандартные торговые предложения работают до 4–5 параметров. При 6+ взаимозависимых опциях или сложных правилах совместимости таблица b_catalog_product_offer становится неэффективной. Конфигуратор с собственной матрицей правил решает эту задачу. В наших проектах матрицы достигают 500 000 комбинаций — мы знаем, как это поддерживать. Экономия на эксплуатации за счёт оптимизации кэширования составляет до 30%, что при среднем обороте $45k–65k даёт экономию до $14k–20k в год.
Хранение данных: инфоблок или собственная таблица?
Выбор способа хранения критичен для производительности. Сравним оба варианта:
| Способ хранения | Число комбинаций | Производительность | Гибкость правил |
|---|---|---|---|
| Инфоблок + торговые предложения | до ~10 000 | Средняя | Низкая |
| Собственная таблица совместимости | от 10 000 до 1 000 000+ | Высокая | Высокая |
На практике комбинируем: основные данные — в инфоблоке, правила совместимости — в отдельной таблице. Это даёт и скорость, и управляемость. На матрице из 100 000 комбинаций собственная таблица с индексами работает в 10 раз быстрее вложенных свойств инфоблоков. Это позволяет снизить затраты на серверное оборудование на $2k–4k в год.
Пример расчёта производительности
При матрице из 500 000 комбинаций собственные таблицы обрабатывают запрос за 2–3 мс, а вложенные свойства — за 50–70 мс. Разница в 20–25 раз.Техническая реализация
Таблица совместимости в действии
Каждый шаг конфигуратора — набор опций. Выбор на шаге N динамически ограничивает опции на шаге N+1. Используем простую SQL-структуру:
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 с действием custom:configurator. Обработчик читает таблицу правил и возвращает доступные опции для следующего шага и текущую цену.
Расчёт цены на лету
Цена конфигурации = базовая цена товара + наценки за выбранные опции. Наценки хранятся в отдельной таблице:
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. Интеграция с 1С через CommerceML для синхронизации остатков и цен доступна по запросу.
Управление правилами через админку
Для контент-менеджеров разрабатываем интерфейс в /bitrix/admin/ на стандартных классах CAdminList и CAdminForm. Это позволяет добавлять новые опции, правила совместимости и наценки без написания кода. Все изменения логируются, доступен откат.
Процесс добавления новой опции:
- В административной панели выберите товар и раздел «Параметры конфигуратора».
- Нажмите «Добавить шаг» и укажите название (например, «Цвет корпуса»).
- Перечислите значения опции и наценки для каждого.
- В разделе «Правила совместимости» свяжите новую опцию с существующими шагами.
- Сохраните — изменения вступают в силу сразу без перезагрузки кэша благодаря агентам.
Процесс и сроки разработки
Этапы и сроки
| Этап | Что делаем | Срок |
|---|---|---|
| Проектирование | Анализ параметров, схема БД, прототип UI | 3–4 дня |
| Бэкенд | Таблицы, обработчики, расчёт цены, остатки | 4–6 дней |
| Фронтенд | UI конфигуратора, AJAX, обновление цены | 3–5 дней |
| Корзина и заказы | Передача конфигурации, отображение в заказе | 2–3 дня |
| Административный интерфейс | CRUD правил и наценок | 2–3 дня |
| Тестирование | Все комбинации, граничные случаи | 2–3 дня |
Итого: от 2.5 до 4 недель в зависимости от числа параметров и сложности матрицы совместимости. Точную оценку даём после анализа вашего каталога. Многошаговый процесс конфигурации с проверкой совместимости реализуется на каждом этапе.
Что входит в deliverables
- Проектная документация: схема БД, описание API, сценарии использования.
- Настроенные доступы для контент-менеджеров (роли в Битрикс).
- Инструкция по управлению правилами и наценками.
- Поддержка после релиза: 2 недели бесплатных консультаций.
- Гарантия на код: 6 месяцев с момента подписания акта.
Типичные ошибки и как их избежать
- Отсутствие кэширования. Без кэша AJAX-запросы на каждый шаг грузят базу — сайт тормозит даже при 50 одновременных пользователях.
- Хранение правил в свойствах инфоблока. При 50 000 комбинаций запросы к
b_iblock_element_propertyстановятся невыносимо медленными. - Игнорирование остатков. Если не проверять наличие каждого компонента, конфигуратор будет продавать сборку, которую нельзя собрать.
- Плоский JSON в корзине без верификации. При изменении цены злоумышленник может подменить параметры, поэтому на сервере пересчитываем стоимость заново.
Конфигуратор идеально подходит для интернет-магазинов с кастомизируемой продукцией. Получите предварительную оценку вашего проекта — свяжитесь с нами. Закажите консультацию — мы оценим ваш проект и предложим оптимальный план работ.







