Разработка модуля конфигуратора товаров 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка модуля конфигуратора товаров 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка модуля конфигуратора товаров 1С-Битрикс

Конфигуратор нужен, когда товар не имеет фиксированного набора характеристик, а собирается из вариантов: мебель с выбором материала, цвета и размера; компьютер, где процессор влияет на доступные видеокарты; промышленное оборудование с зависимыми опциями. Стандартные торговые предложения Битрикс (SKU) покрывают простые случаи — комбинации из N×M вариантов. Конфигуратор — это другая парадигма: дерево зависимостей, динамическая цена, визуализация.

Чем конфигуратор отличается от SKU

В SKU заранее перечислены все возможные комбинации. Если у ноутбука 3 варианта процессора, 4 варианта RAM и 3 варианта SSD — нужно 36 SKU, и все их надо создать и поддерживать. В конфигураторе опции задаются независимо, а итоговая цена и состав рассчитываются динамически. Это принципиально другая модель данных.

Модель данных

Модуль vendor.configurator:

  • b_vendor_cfg_product — конфигурируемые товары: id, iblock_element_id (базовый товар в инфоблоке), name, base_price, is_active
  • b_vendor_cfg_group — группы опций: id, product_id, name, sort, type (single/multiple/required), display_type (radio/checkbox/select/visual)
  • b_vendor_cfg_option — опции: id, group_id, name, price_mod_type (fixed/percent/formula), price_mod_value, image_id, weight_mod, is_default, is_active
  • b_vendor_cfg_dependency — зависимости: id, option_id (если выбрана), dependent_option_id, action (show/hide/require/disable)
  • b_vendor_cfg_configuration — сохранённые конфигурации: id, product_id, user_id, session_id, options (JSON), total_price, created_at
  • b_vendor_cfg_order_item — связь конфигурации с позицией заказа: configuration_id, basket_item_id

Зависимости опций

Самое сложное в конфигураторе — зависимости. При выборе «Мощный блок питания» автоматически становятся доступны более производительные видеокарты:

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 при каждом изменении выбора.

Динамический расчёт цены

Базовая цена + модификаторы опций:

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 компонент, подключаемый к странице товара. Логика:

  1. Загружает структуру групп и опций через REST-эндпоинт
  2. При изменении выбора — AJAX на DependencyResolver, обновляет видимость опций
  3. Одновременно AJAX на PriceCalculator, обновляет итоговую цену
  4. Визуальные опции (цвет, материал) — сетка превью с кликом

Состояние конфигурации синхронизируется с URL-хешем — конфигурацию можно скопировать и отправить ссылку.

Добавление в корзину

Сохранённая конфигурация добавляется в корзину как один товар. Состав конфигурации хранится в b_vendor_cfg_configuration.options, связь с позицией корзины — через b_vendor_cfg_order_item.

При просмотре заказа пользователь и менеджер видят детализацию: какие именно опции были выбраны.

Административный интерфейс

  • Конструктор конфигуратора: drag-and-drop групп и опций
  • Настройка зависимостей через визуальный редактор (список правил)
  • Предпросмотр конфигуратора прямо в админке
  • Список сохранённых конфигураций пользователей
  • Статистика: популярные конфигурации, средний чек по конфигуратору

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

Этап Срок
ORM-таблицы, модель продукта и опций 1 день
Resolver зависимостей, API 2 дня
Калькулятор цены, формульные модификаторы 2 дня
Фронтенд-компонент (React/Vue) 3 дня
Добавление в корзину, детализация в заказе 2 дня
Административный конструктор 2 дня
Тестирование 1 день

Итого: 13 рабочих дней. 3D-визуализация конфигурации (WebGL) — отдельный проект.