Настройка 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
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка 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']
);

Список складов с ненулевым остатком отображается на карте через Яндекс.Карты 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
  • Компонент выбора магазина с картой и отображением остатков
  • Резервирование остатка на конкретном складе при оформлении заказа
  • Кастомный статус заказа «Готов к выдаче» и уведомления при его установке
  • Административный интерфейс для сотрудника магазина (смена статуса заказа)