Разработка конструктора наборов товаров 1С-Битрикс

Почему нужен кастомный конструктор наборов? Покупатель хочет собрать подарочную корзину из 5 позиций на выбор. Или скомплектовать компьютер из совместимых комплектующих. Или выбрать шины + диски + TPMS как один заказ. Ни один из стандартных компонентов Битрикс — ни `bitrix:catalog.element`, ни то
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка конструктора наборов товаров 1С-Битрикс
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    880
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

Почему нужен кастомный конструктор наборов?

Покупатель хочет собрать подарочную корзину из 5 позиций на выбор. Или скомплектовать компьютер из совместимых комплектующих. Или выбрать шины + диски + TPMS как один заказ. Ни один из стандартных компонентов Битрикс — ни bitrix:catalog.element, ни торговые предложения — не решает эту задачу. Нужен кастомный конструктор наборов. Типичный кейс — интернет-магазин подарков: клиент собирает корзину из 5 товаров из 20, средний чек растёт на 30% и конверсия возрастает на 15%. Или конструктор ПК с проверкой совместимости модулей RAM, процессоров и видеокарт. Мы разрабатываем такие кастомные решения под ключ уже 10+ лет. Гарантируем стабильную работу и масштабируемость. Получите консультацию инженера — мы оценим ваш проект.

Отличие конструктора от торговых предложений

Торговые предложения (SKU) в Битрикс — это вариации одного товара: размер, цвет. Конструктор наборов — это комбинация разных товаров из разных категорий, собранная в один заказ с общей ценой. Иногда с фиксированным количеством позиций на каждую «ячейку», иногда с произвольным выбором. Примеры: подарочный набор (выбери 3 товара из списка 20), конструктор ПК (выбери процессор + материнскую плату + RAM с проверкой совместимости), комбо-набор (бургер + напиток + гарнир).

Структура данных конструктора

Набор — это отдельная сущность. Вариант реализации — инфоблок «Наборы» с привязкой к товарам каталога. Инфоблок наборов (IBLOCK_SETS) содержит поля: SET_NAME, SET_DESCRIPTION, SLOTS (JSON с описанием ячеек), DISCOUNT_TYPE и DISCOUNT_VALUE. Структура слота в JSON:

{ "slot_id": 1, "name": "Основное блюдо", "required": true, "min_qty": 1, "max_qty": 1, "product_filter": { "IBLOCK_ID": 5, "SECTION_ID": [12, 13] } } 

Для сложных проектов (конструктор ПК) лучше хранить слоты в отдельной кастомной таблице. Создаются две таблицы: b_set_slots (ID, SET_ID, SLOT_NAME, REQUIRED, MIN_QTY, MAX_QTY, SORT) и b_set_slot_products (SLOT_ID, PRODUCT_ID).

CREATE TABLE b_set_slots ( ID SERIAL PRIMARY KEY, SET_ID INT NOT NULL REFERENCES b_iblock_element(ID), SLOT_NAME VARCHAR(255), REQUIRED BOOLEAN DEFAULT TRUE, MIN_QTY INT DEFAULT 1, MAX_QTY INT DEFAULT 1, SORT INT DEFAULT 100 ); CREATE TABLE b_set_slot_products ( SLOT_ID INT NOT NULL REFERENCES b_set_slots(ID), PRODUCT_ID INT NOT NULL REFERENCES b_iblock_element(ID), PRIMARY KEY (SLOT_ID, PRODUCT_ID) ); 

Как рассчитать и добавить набор в корзину?

Пользовательский интерфейс конструктора — последовательные шаги или единая страница с вертикальными группами. На каждом шаге — список товаров для данного слота. Расчёт итоговой цены происходит на клиенте (быстро, без сервера) и подтверждается на сервере при добавлении в корзину. Пример расчёта на JavaScript:

function calcSetTotal(selectedProducts) { let total = selectedProducts.reduce((sum, p) => sum + p.price * p.qty, 0); if (setDiscount.type === 'percent') { total = total * (1 - setDiscount.value / 100); } else { total = total - setDiscount.value; } return Math.max(0, total); } 

Добавление в корзину требует кастомной логики, так как стандартный API не умеет связывать позиции. Вот пошаговая инструкция:

  1. Получите объект корзины текущего пользователя через Basket::loadItemsForFUser().
  2. Сгенерируйте уникальный код набора (set_ + uniqid).
  3. Для каждого выбранного товара создайте элемент корзины и установите свойство SET_CODE.
  4. Сохраните корзину.

Пример на PHP:

use Bitrix\Sale\Basket; use Bitrix\Sale\BasketItem; $basket = Basket::loadItemsForFUser(CSaleBasket::GetBasketUserID(), SITE_ID); $setBasketCode = 'set_' . uniqid(); foreach ($selectedProducts as $product) { $item = $basket->createItem('catalog', $product['PRODUCT_ID']); $item->setFields([ 'QUANTITY' => $product['QTY'], 'PRODUCT_PRICE_ID' => $product['PRICE_ID'], 'CUSTOM_PRICE' => 'Y', 'PRICE' => $product['PRICE'], 'PROPS' => [['NAME' => 'SET_CODE', 'VALUE' => $setBasketCode]], ]); } $basket->save(); 

Как работает проверка совместимости?

Для конструкторов технических изделий (ПК, автозапчасти, мебель) нужна матрица совместимости. Создаётся таблица b_compatibility_rules с полями ID, PRODUCT_A_ID, PRODUCT_B_ID, COMPATIBLE, REASON. При выборе товара AJAX-запрос к PHP-контроллеру проверяет, есть ли правило несовместимости с уже выбранными позициями, и блокирует их в UI. Пример таблицы и контроллера:

CREATE TABLE b_compatibility_rules ( ID SERIAL PRIMARY KEY, PRODUCT_A_ID INT NOT NULL, PRODUCT_B_ID INT NOT NULL, COMPATIBLE BOOLEAN DEFAULT TRUE, REASON TEXT ); 
public function checkCompatibilityAction(int $productId, array $selectedIds): array { $incompatible = []; foreach ($selectedIds as $id) { $rule = CompatibilityTable::getRow([ 'filter' => [ ['PRODUCT_A_ID' => $productId, 'PRODUCT_B_ID' => $id], ['COMPATIBLE' => false], ] ]); if ($rule) { $incompatible[] = ['product_id' => $id, 'reason' => $rule['REASON']]; } } return $incompatible; } 

Сохранённые конфигурации

Пользователь может сохранить собранный набор и вернуться к нему. Для этого создаётся таблица b_user_set_configs (USER_ID, SET_ID, CONFIG_NAME, PRODUCTS JSONB, DATE_CREATE). Пользователь видит свои конфигурации в личном кабинете и может добавить любую в корзину одним кликом.

Что входит в работу?

  • Аудит текущего каталога и бизнес-требований.
  • Проектирование структуры данных (инфоблоки, MySQL-таблицы, ORM).
  • Разработка UI выбора товаров (адаптивный, с фильтрами и проверками).
  • Кастомизация корзины для группировки позиций набора.
  • Интеграция скидок набора (процентные или фиксированные).
  • Тестирование на 50+ сценариях.
  • Документация и обучение менеджеров.
  • Поддержка 1 месяц после запуска.

Все решения основаны на официальной документации 1С-Битрикс: ORM 1С-Битрикс.

Сроки разработки

Тип конструктора Что входит Срок
Подарочный набор (простой выбор) UI + корзина + скидка набора 2–3 недели
Комбо с группами (фаст-фуд стиль) + группы слотов, обязательные позиции 3–5 недель
Конструктор с совместимостью + матрица совместимости, проверки 5–8 недель
+ Сохранённые конфигурации + ЛК, история, шаринг конфигурации +2–3 недели

Сравнение подходов: стандартный vs кастомный

Критерий Торговые предложения (SKU) Кастомный конструктор
Комбинация разных товаров Нет (вариации одного) Да (произвольные категории)
Проверка совместимости Нет Да (матрица правил)
Скидка на набор Только на уровне товара Да (процент/фикс)
Сохранение конфигурации Нет Да (в БД)
Сложность реализации Низкая Средняя-высокая

Конструктор наборов увеличивает средний чек на 20-40%: пользователь, который собирает комплект, тратит больше. Инструмент работает тем лучше, чем проще интерфейс выбора. Окупаемость вложений — 3-4 месяца. Закажите разработку конструктора для вашего магазина — мы подготовим индивидуальный план.