Налаштування Click & Collect у 1С-Бітрікс: резервування та самовивіз

Типова проблема: покупець оформлює самовивіз, приїжджає в магазин, а товару на полиці немає. Причина — не налаштована жорстка прив'язка до складів і не перевіряється реальна наявність перед резервуванням. Ми такі ситуації виключаємо через правильну конфігурацію Click & Collect. Наш досвід — понад 50
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування Click & Collect у 1С-Бітрікс: резервування та самовивіз
Простий
~1 день

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

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

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

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

Типова проблема: покупець оформлює самовивіз, приїжджає в магазин, а товару на полиці немає. Причина — не налаштована жорстка прив'язка до складів і не перевіряється реальна наявність перед резервуванням. Ми такі ситуації виключаємо через правильну конфігурацію Click & Collect. Наш досвід — понад 50 проєктів на Бітрікс, сертифіковані інженери з гарантією результату.

Click & Collect (онлайн-замовлення з самовивозом) — один із найзатребуваніших сценаріїв у ритейлі, особливо після пандемії. Але без коректної роботи з залишками та резервуванням він приносить більше проблем, ніж користі. Покупець обирає точку, де товару немає, або дві людини одночасно замовляють останню одиницю — і хтось іде ні з чим розчарований. Правильна реалізація на 1С-Бітрікс вирішує ці завдання на рівні архітектури: жорстка прив'язка точок до складів, перевірка залишків у кошику перед резервуванням, резервування при оформленні замовлення. Нижче — як це працює на практиці з прикладами коду.

Чому важливо прив'язувати точки самовивозу до складів?

Кожна точка самовивозу має бути жорстко прив'язана до конкретного складу через XML_ID. Тільки так система розуміє, які залишки показувати. Без цієї прив'язки самовивіз перетворюється на лотерею. Ми використовуємо стандартні таблиці Бітрікс: b_catalog_store та b_catalog_store_product. Приклад запиту для перевірки залишків:

SELECT s.ID, s.TITLE, s.ADDRESS, sp.AMOUNT FROM b_catalog_store s JOIN b_catalog_store_product sp ON sp.STORE_ID = s.ID WHERE sp.PRODUCT_ID = ? AND s.ACTIVE = 'Y' AND sp.AMOUNT > 0 ORDER BY s.SORT ASC; 

Документація 1С-Бітрікс: управління складами

Як додати службу доставки «Самовивіз»

В адміністративній панелі: Магазин → Доставка → Додати службу доставки → Тип: Самовивіз. Вкажіть найменування, активуйте її, налаштуйте вартість (зазвичай нуль). Програмне створення через API дає більшу гнучкість — можна умовні правила та інтеграцію з 1С:

\Bitrix\Main\Loader::includeModule('sale'); $deliveryService = \Bitrix\Sale\Delivery\Services\Manager::getList([ 'filter' => ['CODE' => 'self_pickup'], ])->fetch(); if (!$deliveryService) { \Bitrix\Sale\Delivery\Services\Manager::add([ 'NAME' => 'Самовивіз з магазину', 'CODE' => 'self_pickup', 'ACTIVE' => 'Y', 'CLASS_NAME' => '\Bitrix\Sale\Delivery\Services\Base', 'CURRENCY' => 'RUB', 'PRICE' => 0, ]); } 

Як обрати точку самовивозу в кошику?

У шаблоні компонента sale.order.ajax виводимо список точок з перевіркою залишків. Приклад:

// Отримуємо активні склади з наявністю товарів з кошика $basketItems = $order->getBasket(); $productIds = []; foreach ($basketItems as $item) { $productIds[] = $item->getProductId(); } $storesResult = \Bitrix\Catalog\StoreTable::getList([ 'filter' => ['ACTIVE' => 'Y'], 'select' => ['ID', 'TITLE', 'ADDRESS', 'GPS_N', 'GPS_S'], 'order' => ['SORT' => 'ASC'], ]); $availableStores = []; while ($store = $storesResult->fetch()) { $allAvailable = true; foreach ($productIds as $productId) { $stockResult = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['PRODUCT_ID' => $productId, 'STORE_ID' => $store['ID']], 'select' => ['AMOUNT'], ])->fetch(); if (!$stockResult || $stockResult['AMOUNT'] < $basketItems->getQuantityByProductId($productId)) { $allAvailable = false; break; } } if ($allAvailable) { $availableStores[] = $store; } } 

Як налаштувати резервування: покрокова інструкція

Резервування — критичний етап, від якого залежить надійність Click & Collect. При неправильній реалізації втрачаються товари та виникають конфлікти з покупцями.

  1. Створіть користувацьку властивість замовлення PICKUP_STORE_ID через Магазин → Налаштування → Властивості замовлення. Тип — список або рядок з посиланням на таблицю складів.
  2. Додайте обробник події OnSaleOrderBeforeSaved. У ньому отримайте ID вибраного складу з властивості замовлення та перевірте залишки ще раз перед бронюванням.
  3. Викличте резервування для кожного товару кошика через \Bitrix\Catalog\StoreProductTable::reserveProduct. Переконайтеся, що функція повертає успіх перед збереженням замовлення.

Приклад обробника:

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderBeforeSaved', function (\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $pickupStoreId = $order->getPropertyCollection() ->getItemByOrderPropertyCode('PICKUP_STORE_ID') ?->getValue(); if (!$pickupStoreId) return; foreach ($order->getBasket() as $basketItem) { \Bitrix\Catalog\StoreProductTable::reserveProduct( $basketItem->getProductId(), (int)$pickupStoreId, $basketItem->getQuantity(), $order->getId() ); } } ); 
Деталі роботи обробника Обробник спрацьовує до збереження замовлення — резервування відбувається атомарно. Якщо резервувати не вдалося (наприклад, товару немає на складі), замовлення не зберігається, а користувач бачить помилку. Це захищає від подвійних продажів.

Сповіщення та статуси замовлень самовивозу

Після вибору точки та резервування товару потрібно організувати сповіщення покупцеві. Коли замовлення перейде в статус «Готовий до видачі» (зазвичай після обробки в 1С), система надсилає email та SMS на номер з профілю: адреса магазину, години роботи, що взяти з собою. Для постійних клієнтів рекомендується особистий кабінет з відстеженням статусу в реальному часі. Реалізація через події OnSaleOrderStatusChange та шаблони листів. Наш досвід показує, що правильні сповіщення знижують кількість неявок на 20–30%.

Що входить в роботу?

Етап Тривалість Результат
Аналітика 0.5 дня Схема складів, список точок
Налаштування служби доставки 1 день Готова служба самовивозу
Розробка вибору точки 1–2 дня Виведення точок з залишками в кошику
Резервування 1 день Обробник OnSaleOrderBeforeSaved
Сповіщення та статуси 1 день Email та SMS при готовності до видачі
Інтеграція з 1С (опціонально) 2–3 дні Обмін залишками по CommerceML
Тестування та документація 1 день Інструкція для менеджерів

Під ключ: від 7 робочих днів. Гарантія 6 місяців на доопрацювання. Сертифікат 1С-Бітрікс.

Порівняння: вбудований механізм vs кастомне рішення

Параметр Вбудований самовивіз Кастомне рішення з HL-блоками
Гнучкість Фіксована логіка Повна свобода
Швидкість впровадження 1–2 дні 3–5 днів
Синхронізація з 1С Через склади Будь-яка ERP

Кастомне рішення краще вбудованого за гнучкістю в 2–3 рази, але вимагає більше часу та ресурсів на реалізацію.

Для розрахунку вартості та термінів вашого проєкту — зв'яжіться з нами. Замовте консультацію з налаштування Click & Collect.

Додаткова інформація: документація по службам доставки.