Налаштування BOPIS (Buy Online Pick up In Store) 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування BOPIS (Buy Online Pick up In Store) 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • 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

Налаштування BOPIS (Buy Online, Pick Up In Store) 1С-Бітрікс

BOPIS — сценарій, при якому покупець оформлює замовлення онлайн, але забирає його у фізичному магазині. Звучить просто, але за цим стоїть зв'язка кількох модулів: управління складами, геолокація магазинів, резервування залишків, сповіщення про готовність замовлення.

Компоненти Бітрікс для BOPIS

У Бітрікс BOPIS будується на трьох стандартних модулях:

sale — управління замовленнями. Способи доставки створюються через CSaleDelivery::Add(). Для самовивозу створюється окремий спосіб з нульовою вартістю та типом PICKUP.

catalog — управління складами. Склади (магазини самовивозу) зберігаються в b_catalog_store. Залишки по складах — в b_catalog_store_product. Ключові поля: STORE_ID, PRODUCT_ID, AMOUNT.

sale.location — локації. Прив'язка магазинів до міст через b_sale_location і b_sale_location_service.

Модель даних для мережі магазинів

Кожен фізичний магазин налаштовується як склад у b_catalog_store:

  • TITLE — назва магазину
  • ADDRESS — адреса для відображення покупцю
  • GPS_N, GPS_S — координати для карти
  • PHONE — контактний телефон
  • SCHEDULE — графік роботи (довільний текст або JSON-структура)
  • IMAGE_ID — посилання на фото магазину з b_file

Час роботи зручніше зберігати як JSON в окремому UF-полі UF_SCHEDULE_JSON:

{"mon": "10:00-21:00", "tue": "10:00-21:00", "sun": "11:00-20:00"}

Вибір магазину на етапі оформлення замовлення

На сторінці оформлення замовлення покупець бачить карту або список магазинів з актуальними залишками обраного товару. Запит доступності:

$storeData = CCatalogStoreProduct::GetList(
    ['STORE_ID' => 'ASC'],
    ['PRODUCT_ID' => $productId, '>AMOUNT' => 0],
    false,
    false,
    ['STORE_ID', 'AMOUNT']
);

Список складів з ненульовим залишком відображається на карті через Yandex Maps API або Leaflet. Координати беруться з b_catalog_store.GPS_N і b_catalog_store.GPS_S.

Резервування товару при виборі магазину

При виборі конкретного магазину та оформленні замовлення залишок у b_catalog_store_product зменшується на кількість замовлення. У Бітрікс це відбувається автоматично при списанні через модуль каталогу, якщо увімкнено налаштування резервування:

Налаштування → Інтернет-магазин → Налаштування → Резервування та відвантаження → «Резервувати при оформленні»

Але для BOPIS резервування має бути прив'язане до конкретного складу (магазину). Це потребує доопрацювання: у стандартний обробник події OnSaleOrderSaved додається логіка резервування залишку саме на складі, обраному покупцем. Склад передається через властивість замовлення STORE_ID.

Сповіщення про готовність до видачі

Зміна статусу замовлення на «Готовий до видачі» (кастомний статус, наприклад READY_PICKUP) надсилає SMS та/або email покупцю. Обробник:

AddEventHandler('sale', 'OnSaleStatusOrder', function($orderId, $statusId) {
    if ($statusId === 'READY_PICKUP') {
        // Відправка SMS через шлюз
        // Відправка email через CEvent::Send()
    }
});

Що входить у налаштування

  • Створення складів-магазинів у b_catalog_store з координатами та розкладом
  • Налаштування способу доставки «Самовивіз» у модулі sale
  • Компонент вибору магазину з картою і відображенням залишків
  • Резервування залишку на конкретному складі при оформленні замовлення
  • Кастомний статус замовлення «Готовий до видачі» та сповіщення при його встановленні
  • Адміністративний інтерфейс для співробітника магазину (зміна статусу замовлення)