Розробка конфігуратора товарів для 1С-Бітрікс
Конфігуратор товарів потрібен там, де немає фіксованих SKU — комп'ютери, вікна, меблі, промислове обладнання. Покупець вибирає параметри крок за кроком, ціна і доступність перераховуються в реальному часі, а в корзину потрапляє конкретна збірка. Вбудовані торгові пропозиції (b_catalog_product_offer) справляються з кількома вимірами, але при 5+ взаємозалежних параметрах — ламаються.
Як влаштований конфігуратор
Конфігуратор — це клієнт-серверне рішення поверх каталогу Бітрікс. Фронтенд відображає кроки і оновлює інтерфейс; бекенд перевіряє сумісність, вважає ціну, повертає JSON.
Зберігання даних. Два варіанти:
- Використовувати інфоблок з торговими пропозиціями та багатовимірними властивостями. Працює при числі комбінацій до ~10 000 —
b_iblock_element_propertyросте квадратично. - Створити власні таблиці сумісності. Підходить для складних матриць: кожне правило пишеться в окрему запис, індекси за полями-параметрами дають швидкий пошук.
На практиці: основні дані товара — в інфоблоці, правила сумісності — в окремій таблиці. Клас ядра CIBlockElement використовується для читання базових властивостей, REST-обробник — для перевірки конфігурації.
Кроки конфігуратора і залежності
Кожен крок — це набір опцій. Вибір на кроці N обмежує доступні опції на кроці N+1. Реалізується через таблицю сумісності:
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 з дією обробника конфігуратора. Обробник читає таблицю правил, повертає доступні опції для наступного кроку і поточну ціну.
Розрахунок ціни
Ціна конфігурації — сума базової ціни товара плюс наценки за вибрані опції. Зберігається в b_catalog_price (базові ціни) і окремій таблиці наценок:
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.
Інтеграція з залишками
Доступність конфігурації перевіряється через \Bitrix\Catalog\ProductTable і \Bitrix\Catalog\StoreProductTable. Якщо один з компонентів — на складі, інший — під замовлення, конфігуратор показує реальний строк. Логіка: беремо мінімальний залишок серед всіх компонентів конфігурації.
Адміністративна панель управління
До конфігуратора розробляється інтерфейс в /bitrix/admin/ для управління правилами сумісності та наценками. Використовуємо CAdminList, CAdminForm — стандартні класи адміністративного інтерфейсу Бітрікс. Це дозволяє контент-менеджерам самостійно додавати нові опції без правки коду.
Терміни
| Етап | Склад | Тривалість |
|---|---|---|
| Проектування | Аналіз параметрів, схема БД, прототип UI | 3–4 дні |
| Бекенд | Таблиці, обробники, розрахунок ціни, залишки | 4–6 днів |
| Фронтенд | UI конфігуратора, AJAX, оновлення ціни | 3–5 днів |
| Корзина та замовлення | Передача конфігурації, відображення в замовленні | 2–3 дні |
| Адміністративний інтерфейс | CRUD правил сумісності та наценок | 2–3 дні |
| Тестування | Всі комбінації, граничні випадки | 2–3 дні |
Усього: 2.5–4 тижні залежно від числа параметрів і складності матриці сумісності.
Що впливає на складність
- Число вимірів конфігуратора (3 параметра vs 10).
- Наявність графічного переглядача (3D-модель, зображення результату).
- Інтеграція з 1С для актуальних залишків.
- Мобільна адаптація багатокрокового UI.
- Необхідність зберігати незавершені конфігурації для авторизованих користувачів — через
b_user_optionsабо окрему таблицю чернеток.







