Розробка функціоналу «збери набір» на 1С-Бітрікс

Клієнти часто просять реалізувати акцію «вибери N товарів та отримай знижку» — це і є збери набір 1С-Бітрікс. На перший погляд задача проста, але на практиці ми стикаємося з підводними каменями: як коректно розрахувати ціну при змішаному ціноутворенні, як врахувати залишки, який UX не дасть користув
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка функціоналу «збери набір» на 1С-Бітрікс
Середній
~1-2 тижні

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1460
  • 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
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1164

Клієнти часто просять реалізувати акцію «вибери N товарів та отримай знижку» — це і є збери набір 1С-Бітрікс. На перший погляд задача проста, але на практиці ми стикаємося з підводними каменями: як коректно розрахувати ціну при змішаному ціноутворенні, як врахувати залишки, який UX не дасть користувачу покинути кошик. За 10 років досвіду ми впровадили подібний функціонал більш ніж у 50 проектах — від інтернет-магазинів косметики до сервісів готової їжі. Типова помилка — спроба використовувати стандартні правила кошика Бітрікс: вони не дозволяють гнучко керувати індивідуальними цінами та групуванням. Ми розробили кастомний механізм на основі інфоблоків та подій кошика, який працює навіть при високих навантаженнях (до 1000 одночасних замовлень). Наші клієнти економлять у середньому 30% бюджету на розробці завдяки тиражуванню рішень. Зв'яжіться з нами, щоб обговорити ваш проект — ми оцінимо складність та запропонуємо оптимальне рішення.

Архітектура та UX збери набору

Зберігання набору в інфоблоках

Набір описується елементом інфоблоку або записом кастомної таблиці:

// Властивості інфоблоку "Набори" 'MIN_ITEMS' => 3, 'MAX_ITEMS' => 5, 'SET_PRICE' => 1990, 'DISCOUNT_PCT' => 15, 'PRODUCTS' => [12, 15, 18, 22], 'ACTIVE_FROM' => '01 березня', 'ACTIVE_TO' => '01 квітня', 

При великому пулі товарів (50+) список допустимих позицій задається не переліком ID, а фільтром за розділом або тегом:

'ALLOWED_SECTIONS' => [5, 7, 12], 'ALLOWED_TAGS' => ['promo-may', 'gift-set'], 
Деталі зберігання Кожен набір має унікальний код, за яким товари групуються в кошику. Термін дії акції перевіряється через агенти, які автоматично вимикають набір після закінчення дати.

Інтерфейс вибору з прогрес-баром

Лічильник прогресу — показує «Вибрано 2 із 3». Без нього користувач губиться. Реалізація:

const maxItems = 3; let selected = []; function toggleProduct(productId, btn) { if (selected.includes(productId)) { selected = selected.filter(id => id !== productId); btn.classList.remove('selected'); } else if (selected.length < maxItems) { selected.push(productId); btn.classList.add('selected'); } updateProgress(); } function updateProgress() { document.querySelector('.progress-text').textContent = `Вибрано ${selected.length} із ${maxItems}`; document.querySelector('.add-to-cart-btn').disabled = selected.length < minItems; } 

Блокування зайвих виборів — коли вибрано максимальну кількість, решта товарів стають неактивними, але з можливістю зняти вибір із уже доданих. Візуально: картка сіра, кнопка неактивна. Прев'ю набору — справа (на десктопі) або знизу (на мобільному) фіксована панель зі списком вибраних товарів, фінальною ціною та кнопкою «В кошик».

Чому важливо правильно реалізувати ціноутворення?

Два режими ціноутворення:

Фіксована ціна набору. Користувач вибрав будь-які 3 товари — платить 999 гривень, незалежно від цін окремих позицій. У кошику додається спеціальна позиція «Набір» з ціною 999 грн, без деталізації по товарах.

Знижка на вибрані позиції. Сума цін вибраних товарів множиться на коефіцієнт (наприклад, ×0,85 при знижці 15%). У кошику кожен товар додається за зниженою ціною.

Для другого варіанту в Бітрікс можна використовувати правила кошика (b_sale_discount), але простіше встановити ціну програмно при додаванні в кошик через поле PRICE позиції та CUSTOM_PRICE => 'Y'. Згідно з документацією Бітрікс, такий підхід дає повний контроль над ціноутворенням.

Характеристика Фіксована ціна Знижка на позиції
Приклад 999 грн за набір 15% на кожну позицію
Групування в кошику Одна позиція Кожна позиція зі знижкою
Складність реалізації Низька Середня
Рекомендується Для промо-акцій Для постійних знижок

Інтеграція з кошиком та замовленням

public function addSetToCartAction(int $setId, array $productIds): array { $setData = $this->loadSetData($setId); if (!$this->validateProducts($productIds, $setData)) { return ['success' => false, 'error' => 'Неприпустимі товари']; } if (count($productIds) < $setData['MIN_ITEMS'] || count($productIds) > $setData['MAX_ITEMS']) { return ['success' => false, 'error' => 'Невірна кількість позицій']; } $prices = $this->calcPrices($productIds, $setData); $setCode = 'bundle_' . $setId . '_' . uniqid(); $basket = \Bitrix\Sale\Basket::loadItemsForFUser(\CSaleBasket::GetBasketUserID(), SITE_ID); foreach ($productIds as $i => $pid) { $item = $basket->createItem('catalog', $pid); $item->setFields([ 'QUANTITY' => 1, 'CUSTOM_PRICE' => 'Y', 'PRICE' => $prices[$i], 'BASE_PRICE' => $prices[$i], ]); $propCol = $item->getPropertyCollection(); $propCol->setProperty(['CODE' => 'SET_CODE', 'VALUE' => $setCode]); } $basket->save(); return ['success' => true, 'basket_count' => count($basket)]; } 

У кошику товари з одного набору відображаються як група. Шаблон bitrix:sale.basket.basket кастомізується: товари групуються по SET_CODE, відображаються зі знижкою та з можливістю редагувати набір (посилання назад на сторінку конструктора). У замовленні зберігається SET_CODE як реквізит позиції — для коректної обробки повернень та аналітики.

Як впровадити функціонал за 5 етапів?

  1. Аналіз вимог — визначення типу ціноутворення, пулу товарів, термінів акції.
  2. Проектування — створення інфоблоків, налаштування властивостей, розробка схеми даних.
  3. Реалізація — кодування інтерфейсу, логіки цін, інтеграція з кошиком.
  4. Тестування — перевірка всіх сценаріїв: вибір, зняття, залишки, одночасні акції.
  5. Деплой та документування — викатка на продакшн, навчання операторів.

Перевірка залишків та кешування

Якщо товар із набору закінчився на складі, його не можна вибирати. Перевірка залишків — через CCatalogProduct::GetByID() або через \Bitrix\Catalog\ProductTable:

$product = \Bitrix\Catalog\ProductTable::getRow([ 'filter' => ['ID' => $productId], 'select' => ['QUANTITY', 'QUANTITY_TRACE', 'CAN_BUY_ZERO'], ]); $available = ($product['CAN_BUY_ZERO'] === 'Y') || ($product['QUANTITY'] > 0); 

Залишки кешуються на 5–10 хвилин — надто часті запити до бази при великому пулі товарів навантажують систему. Оптимізація: використовуйте теговане кешування та оновлюйте кеш при оновленні залишків через агент.

Аналітика конверсії

Набір — це конверсійний інструмент, його ефективність потрібно вимірювати. Що відстежувати:

  • Скільки користувачів почали вибір (перегляд сторінки набору)
  • Скільки завершили вибір та додали в кошик
  • Скільки дійшли до оплати
  • Середній склад набору (які товари вибираються частіше)

Події передаються в Яндекс.Метрику або Google Analytics через dataLayer.push() при кожному кроці.

Терміни та вартість розробки

Варіант Що входить Термін Ціна від (грн) Економія при тиражуванні
Простий набір (фікс. ціна) UI вибору + кошик + сторінка набору 1–2 тижні 10 000 до 30%
Зі знижкою на позиції + обмеження Розрахунок знижок, залишки, аналітика 2–4 тижні 20 000 до 40%
Декілька активних наборів Управління в адмінці, терміни акцій 3–5 тижнів 30 000 до 50%

Вартість розробки розраховується індивідуально, але наведені ціни є орієнтиром.

Функціонал «збери набір» працює найкраще як обмежена акція. Термін дії створює urgency, а можливість вибору — відчуття персоналізації. Це поєднання конвертує в 2 рази краще, ніж статичний готовий набір за такою ж ціною. Наші сертифіковані спеціалісти з 1С-Бітрікс гарантують якість та дотримання термінів. Після завершення проекту ви отримуєте:

  • Документацію по налаштуванню та адмініструванню наборів;
  • Доступи до репозиторію коду;
  • Навчання операторів та контент-менеджерів;
  • Технічну підтримку протягом місяця після запуску.