Самовывоз в 1С-Битрикс — это не отдельная «кнопка», а связка из складов, службы доставки и компонента выбора пункта в оформлении заказа. Разберём, как собрать эту связку так, чтобы покупатель видел на карте только те точки, где товар реально есть.
Как устроен самовывоз в Битрикс
В отличие от курьерской доставки, где обработчик считает стоимость по весу или зоне, самовывоз опирается на сущность склад (таблица b_catalog_store модуля catalog). Каждый пункт выдачи — это отдельный склад с координатами, адресом и графиком работы. Служба доставки типа «Самовывоз» лишь связывает эти склады с оформлением заказа и, при необходимости, показывает их на карте.
Логическая цепочка выглядит так:
- Склады — физические точки выдачи (Магазин → Настройки → Склады);
- Служба доставки — обработчик, который «собирает» доступные пункты (Магазин → Настройки → Службы доставки);
- Компонент оформления —
bitrix:sale.order.ajaxс блоком выбора пункта самовывоза; - Остатки — привязка количества товара к складам, чтобы отсекать пустые точки.
Настройка складов как пунктов выдачи
Откройте Магазин → Настройки → Склады и создайте склад для каждой точки. Ключевые поля:
- Название и адрес — то, что увидит покупатель в списке;
- Активность — неактивный склад не попадёт в выборку;
- Является пунктом выдачи заказов — флаг, который отделяет точки самовывоза от чисто учётных складов;
- Координаты (широта/долгота) — без них точка не встанет на карту;
- График работы, телефон, схема проезда — опциональные, но полезные поля.
Координаты можно проставить вручную или подтянуть по адресу через геокодер Яндекса. Если у вас десятки точек, заносить их руками неудобно — практичнее импортировать список через \Bitrix\Catalog\StoreTable::add() в разовом скрипте либо получать пункты из внешней системы по расписанию агентом.
Создание службы доставки «Самовывоз»
В разделе Магазин → Настройки → Службы доставки нажмите «Добавить службу доставки» и выберите обработчик «Самовывоз» (в актуальных редакциях он идёт «из коробки» модуля sale). На вкладке настроек:
- Задайте название и логотип — они видны покупателю в корзине;
- Привяжите склады, которые должны быть доступны для этой службы (можно выбрать все пункты выдачи или подмножество);
- Укажите стоимость — для самовывоза почти всегда
0, но поле поддерживает и фиксированную сумму; - Настройте период доставки — срок готовности заказа к выдаче.
Если готовой службы «Самовывоз» в списке обработчиков нет, её роль выполняет служба с профилями по складам или ручной обработчик, где каждый профиль соответствует точке. Второй вариант гибче для нестандартных сценариев (разная стоимость и сроки по городам), но требует поддержки при добавлении новых пунктов.
| Подход | Когда подходит |
|---|---|
| Один обработчик «Самовывоз» + склады | Много точек, одинаковые условия, выбор на карте |
| Профили по складам | Разная стоимость/сроки по группам пунктов |
Ограничения: где и кому показывать самовывоз
Чтобы самовывоз не предлагался там, где точек нет, используйте ограничения службы доставки (вкладка «Ограничения» в карточке службы). Наиболее полезные:
- По местоположению — привязка к городам, где есть пункты выдачи; удобно комбинировать с группами местоположений;
- По весу и габаритам — если крупногабарит нельзя выдать в маленькой точке;
- По сумме заказа — например, самовывоз доступен при любой сумме, а курьер — от порога.
Ограничения — это отдельная сущность (\Bitrix\Sale\Delivery\Restrictions), они проверяются при расчёте доставки в корзине. Если служба «пропадает» из списка, первым делом смотрите именно ограничения: чаще всего покупатель просто выпал из привязанной группы местоположений.
Выбор пункта на карте в оформлении заказа
За выбор точки на витрине отвечает компонент оформления bitrix:sale.order.ajax. В его настройках включается блок пунктов самовывоза, а карта рисуется средствами Яндекс.Карт — для этого нужен API-ключ Яндекс.Карт, прописанный в настройках модуля sale или в самом компоненте.
Что стоит проверить на витрине:
- точки с корректными координатами появляются на карте, а не только списком;
- при клике на пункт подставляется адрес и в заказ пишется идентификатор склада;
- поиск и фильтр по городу работают, если пунктов много.
.default. Карта «исчезает» не из-за настроек службы, а из-за отсутствия соответствующего блока в шаблоне компонента.Учёт остатков по пунктам выдачи
Самая ценная возможность самовывоза — показывать только те точки, где товар реально есть в наличии. Для этого включите поскладской учёт (Магазин → Настройки → Настройки модуля → Использовать складской учёт) и заполняйте остатки по складам. Количество хранится в таблице b_catalog_store_product, работать с ним удобно через D7-API \Bitrix\Catalog\StoreProductTable.
Как правило, остатки по складам приезжают из учётной системы: обмен с 1С передаёт не только общий остаток, но и разбивку по складам. После этого логика выбора пункта может отсекать точки без товара, а карточка товара — показывать «в наличии в N пунктах».
Стоимость, НДС и статусы заказа
Стоимость самовывоза обычно нулевая, но её всё равно стоит настроить осознанно. Если магазин работает с НДС, у службы доставки задаётся своя ставка налога — для бесплатного самовывоза это, как правило, не важно, но при платном самовывозе ставка должна совпадать с учётной политикой.
Отдельно продумайте статусы заказа: для самовывоза логична цепочка «оформлен → готов к выдаче → выдан». Уведомления (почтовые события SALE_STATUS_CHANGED_*) стоит настроить так, чтобы покупатель получал сообщение именно в момент готовности заказа, а не при отгрузке курьеру. Это снижает поток вопросов «когда можно забрать».
Итог
Рабочий самовывоз в 1С-Битрикс складывается из четырёх слоёв: склады с координатами и флагом пункта выдачи, служба доставки «Самовывоз» с привязкой складов, ограничения по местоположениям и компонент оформления с картой. Отдельно стоит поскладской учёт остатков — без него самовывоз формально работает, но приносит негатив.
Мы в B2Bsite настраиваем самовывоз под реальную логистику магазина: подключаем выбор пункта на карте, связываем остатки по складам с выгрузкой из 1С и проверяем, что покупателю предлагаются только точки с товаром. Если пунктов много или они меняются, наладим их автоматическое обновление и сопровождение.
Частые вопросы
Где в Битрикс создаются пункты самовывоза?
Пункт выдачи — это склад в разделе Магазин → Настройки → Склады. Для каждой точки создаётся отдельный склад с адресом, координатами и флагом «Является пунктом выдачи заказов».
Почему точка не отображается на карте?
Чаще всего у склада не заполнены координаты или снят флаг пункта выдачи. Также проверьте активность склада и наличие API-ключа Яндекс.Карт в настройках компонента оформления.
Можно ли показывать только пункты, где товар есть в наличии?
Да, для этого нужен поскладской учёт остатков. Количество по складам хранится в таблице b_catalog_store_product и обычно приезжает из 1С, после чего точки без товара можно отсекать.
Как сделать самовывоз бесплатным?
В настройках службы доставки «Самовывоз» укажите стоимость 0. При работе с НДС ставку для бесплатной доставки задавать не обязательно, но при платном самовывозе она должна соответствовать учётной политике.
Как ограничить самовывоз только городами с пунктами?
Используйте ограничение службы доставки «По местоположению» и привяжите её к нужным городам или группе местоположений. Тогда в других регионах самовывоз не будет предлагаться.
Нужен ли отдельный обработчик или хватит профилей по складам?
Если условия по всем точкам одинаковые, удобнее один обработчик «Самовывоз» с привязкой складов. Профили по складам берут, когда стоимость или сроки различаются по группам пунктов.
Как покупатель узнает, что заказ готов к выдаче?
Настройте статусы заказа и почтовые события SALE_STATUS_CHANGED. Уведомление о готовности лучше отправлять в момент, когда заказ действительно можно забрать, а не при оформлении.
Что делать, если точек самовывоза очень много?
Заносить их вручную неудобно — практичнее импортировать склады скриптом через StoreTable::add или получать список из внешней системы по расписанию, а на витрине включить поиск и фильтр по городу.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.