При каталозі з більш ніж 10 000 комбінацій опцій стандартні торгові пропозиції SKU перестають справлятися. Сайт гальмує, додати нову опцію стає проблемою, а ціни рахуються з помилками. Типовий кейс — збірка ПК або конфігуратор кухонь, де параметри перетинаються за сумісністю. У таких ситуаціях кастомний конфігуратор на 1С-Бітрікс — єдине адекватне рішення. Ми реалізували понад 30 подібних проєктів і знаємо всі підводні камені. Офіційна документація 1С-Бітрікс рекомендує використовувати торгові пропозиції лише для простих комбінацій. Вартість розробки визначається після аналізу. Оцініть ваш проєкт — отримайте консультацію для попереднього аналізу.
Коли стандартних торгових пропозицій недостатньо?
Стандартні торгові пропозиції працюють до 4–5 параметрів. При 6+ взаємозалежних опціях або складних правилах сумісності таблиця b_catalog_product_offer стає неефективною. Конфігуратор із власною матрицею правил вирішує це завдання. У наших проєктах матриці досягають 500 000 комбінацій — ми знаємо, як це підтримувати. Економія на експлуатації за рахунок оптимізації кешування становить до 30%, що при середньому обороті 5 млн грн дає економію до 1,5 млн грн на рік.
Зберігання даних: інфоблок чи власна таблиця?
Вибір способу зберігання критичний для продуктивності. Порівняємо обидва варіанти:
| Спосіб зберігання | Кількість комбінацій | Продуктивність | Гнучкість правил |
|---|---|---|---|
| Інфоблок + торгові пропозиції | до ~10 000 | Середня | Низька |
| Власна таблиця сумісності | від 10 000 до 1 000 000+ | Висока | Висока |
На практиці комбінуємо: основні дані — в інфоблоці, правила сумісності — в окремій таблиці. Це дає і швидкість, і керованість. На матриці зі 100 000 комбінацій власна таблиця з індексами працює в 10 разів швидше вкладених властивостей інфоблоків. Це дозволяє знизити витрати на серверне обладнання на 200 000–400 000 грн на рік.
Приклад розрахунку продуктивності
При матриці з 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 тижнів залежно від кількості параметрів і складності матриці сумісності. Точну оцінку даємо після аналізу вашого каталогу. Багатокроковий процес конфігурації з перевіркою сумісності реалізується на кожному етапі.
Що входить у deliverable
- Проєктна документація: схема БД, опис API, сценарії використання.
- Налаштовані доступи для контент-менеджерів (ролі в Бітрікс).
- Інструкція з управління правилами та націнками.
- Підтримка після релізу: 2 тижні безкоштовних консультацій.
- Гарантія на код: 6 місяців з моменту підписання акта.
Типові помилки та як їх уникнути
- Відсутність кешування. Без кеша AJAX-запити на кожен крок навантажують базу — сайт гальмує навіть при 50 одночасних користувачах.
- Зберігання правил у властивостях інфоблока. При 50 000 комбінацій запити до
b_iblock_element_propertyстають неприпустимо повільними. - Ігнорування залишків. Якщо не перевіряти наявність кожного компонента, конфігуратор продаватиме збірку, яку не можна зібрати.
- Плоский JSON у кошику без верифікації. При зміні ціни зловмисник може підмінити параметри, тому на сервері перераховуємо вартість заново.
Конфігуратор ідеально підходить для інтернет-магазинів із кастомізованою продукцією. Отримайте попередню оцінку вашого проєкту — зв’яжіться з нами. Замовте консультацію — ми оцінимо ваш проєкт і запропонуємо оптимальний план робіт.







