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

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

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

Конфигуратор товаров — интерактивный инструмент, где пользователь собирает продукт из вариантов (цвет, размер, комплектация, опции), а цена, изображение и наличие обновляются в реальном времени. Битрикс предоставляет данные о торговых предложениях, Vue — реактивный интерфейс.

Торговые предложения (SKU) в Битрикс

Конфигуратор работает с торговыми предложениями — подтипом b_iblock_element, привязанным к родительскому товару через b_iblock_element_property (свойство типа «привязка к элементу» или через CIBlockElement::GetList с PROPERTY_CML2_LINK).

Структура данных для конфигуратора:

// Получаем все SKU с их свойствами
$offers = \CCatalogSKU::GetOffersList(
    [$productId],
    $offerIblockId,
    ['ACTIVE' => 'Y'],
    ['ID', 'PROPERTY_COLOR', 'PROPERTY_SIZE', 'CATALOG_PRICE_1', 'CATALOG_QUANTITY']
);

Передаём в Vue как window.__PRODUCT_CONFIG__:

{
    offers: [
        { id: 101, props: { color: 'red', size: 'M' }, price: 1500, quantity: 5 },
        { id: 102, props: { color: 'red', size: 'L' }, price: 1500, quantity: 0 },
        // ...
    ],
    propertyDefs: {
        color: { name: 'Цвет', values: { red: { name: 'Красный', hex: '#FF0000' } } },
        size:  { name: 'Размер', values: { M: { name: 'M' }, L: { name: 'L' } } },
    }
}

Логика выбора SKU

Центральная часть конфигуратора — функция нахождения SKU по выбранным параметрам:

const selectedProps = reactive({ color: null, size: null });

const matchedOffer = computed(() => {
    return offers.find(offer =>
        Object.entries(selectedProps).every(([key, val]) =>
            val === null || offer.props[key] === val
        )
    ) ?? null;
});

// Доступные значения с учётом уже выбранных параметров
function getAvailableValues(propKey) {
    return offers
        .filter(offer =>
            Object.entries(selectedProps)
                .filter(([k]) => k !== propKey)
                .every(([k, v]) => v === null || offer.props[k] === v)
        )
        .map(offer => offer.props[propKey]);
}

Недоступные комбинации (нет в наличии) — серятся, но не скрываются: пользователь видит, что вариант существует.

Динамическое обновление изображений

При выборе цвета или материала — смена главного изображения товара. Изображения привязаны к SKU в b_iblock_element_property (свойство типа «файл»):

const currentImages = computed(() => {
    if (matchedOffer.value) {
        return matchedOffer.value.images; // Из данных предложения
    }
    return defaultImages; // Изображения базового товара
});

Переход между изображениями — через <transition> Vue или простой CSS-анимацией.

Конфигуратор с зависимыми параметрами

Более сложный случай: выбор модели → доступные конфигурации → доступные опции. Каждый уровень фильтрует следующий. Реализуется через computed с каскадной фильтрацией offers.

Для сложных конфигураторов (сборка ПК, мебель на заказ) — иерархическое дерево выбора с шагами (wizard), где каждый шаг подгружает допустимые варианты следующего через AJAX.

Случай из практики

Производитель окон: конфигуратор с 6 параметрами (тип профиля, стеклопакет, цвет, открывание, размер, дополнительные опции). Число SKU — несколько тысяч. Все данные загружались при открытии страницы (JSON 800 Кб). Решение: ленивая загрузка — при каждом шаге wizard запрашиваем с сервера допустимые значения следующего параметра с актуальными ценами. Размер первоначального запроса — 15 Кб. Скорость загрузки конфигуратора выросла существенно.

Сроки выполнения

Вариант Срок
Базовый конфигуратор (цвет, размер) от 4 до 7 рабочих дней
С зависимыми параметрами и динамическими изображениями от 8 до 12 рабочих дней
Сложный wizard с расчётом стоимости в реальном времени от 15 до 25 рабочих дней