Ранее мы рассматривали два коробочных подхода в работе с остатками в связке битрикса и 1С. Рекомендуем с ней ознакомиться, чтобы лучше понять, о какой проблематике пойдет речь в данной статье. А сейчас мы поговорим про такой инструмент как брокер остатков.
Проблема
Представим себе оптово-розничную компанию, которая отгружает товар любыми партиями и работает при этом как с частными лицами, так и с корпоративными клиентами. И для этой компании крайне важно, чтобы остатки товара на сайте были актуальными в любой момент времени. При этом к складу, с которым работает сайт, осуществляется конкурентный доступ, т.е., остатки могут списываться из-за отгрузок, связанных с другими каналами продаж.
Простыми словами задача, которую требуется при таких условиях решить, — это исключение возможности создания заказа, не обеспеченного реально располагаемыми остатками на складе.
Дано:
- Оптовый B2B-интернет-магазин на базе 1С-Битрикс: Управление сайтом
- Типовая конфигурация на базе 1С: Управление предприятием (например, 1С: Управление торговлей или 1С: УНФ) с установленным модулем обмена от 1С-Битрикс.
- Номенклатура ~50 000-100 000 наименований.
Как правило, для оптимизации скорости доставки данных на сайт остатки и цены выгружают в режиме выгрузки только изменений и стараются делать такой обмен как можно чаще. Но даже если выгружать остатки каждые 10 минут, этого все равно может быть недостаточно для того, чтобы своевременно отразить доступные остатки на сайте.
Усугубляет ситуацию еще и то, что на стороне 1С точками продаж создаются заказы и делаются отгрузки, не связанные с сайтом. Т.е., в промежутке между выгрузками остатков на сайт на стороне 1С могут произойти изменения, о которых сайт узнает далеко не сразу.
Усложним задачу, добавив еще один сайт, который работает с той же самой товарной базой, но продает ее в розницу по другим ценам и другим процессам. Остатки теперь выгружаются на 2 сайта, при этом видят они одинаковые остатки и предлагают покупателям одно и то же количество товара. Таким образом, если все остатки одного и того же товара будут выбраны на обоих сайтах, то известно это станет только тогда, когда заказ сформируется и окажется в 1С. А далее продавцу придется решать возникшую проблему.
Решение
Возможным решением в подобной ситуации будет внедрение так называемого брокера остатков или заказов. Ключевое требование при использовании данного инструмента — все точки приема заказов от покупателей (включая сайты, менеджеров по продажам и т.д.) должны взаимодействовать с ним, а не с 1С.
Также крайне желательно активировать обмен документами по заказам между сайтом и 1С в режиме реального времени. Это позволит моментально передавать
- в 1С информацию о заказах с сайта;
- из 1С на сайт информацию о статусе заказа;
- из 1С на сайт информацию об отгрузках по заказу.
Брокер остатков можно представить как черный ящик, к которому обращаются все участники со следующими запросами:
- Отложи определенный товар в количестве N штук (резервирование — резерв запрашиваемого товара увеличивается на N штук и на столько же штук уменьшаются доступные остатки)
- Сними резерв (отмена резерва — резерв обнуляется, а зарезервированное количество товара добавляется к свободным остаткам)
- Обнули резерв (по сути — отгрузка, при которой резерв обнуляется, а остатки остаются без изменений).
- Обнови информацию о доступных остатках.
Теперь разберем, кто из участников процесса какие запросы и когда отправляет брокеру.
Отложи товар
Данный запрос отправляет сайт в момент, когда покупатель закончил формировать корзину и перешел к оформлению заказа.
Сними резерв
Данный запрос отправляет сайт
- в момент, когда истекает срок, отведенный на оформление заказа, а заказ оформлен не был;
- в момент, когда заказ отменен.
Обнули резерв
Данный запрос отправляет сайт в момент, когда происходит фактическая отгрузка товара со склада.
Обнови информацию о доступных остатках
Данный запрос отправляет 1С по установленному расписанию.
Как выглядит процесс с успешной отгрузкой
- Покупатель сформировал корзину и перешел к оформлению заказа. В этот момент товары (а вернее, их количество) резервируются брокером, а для других покупателей они становятся временно недоступными.
- Покупатель оформил заказ.
- Заказ передан в 1С.
- 1С автоматически резервирует товар на своем складе.
- Заказ отгружен в 1С.
- Информация об отгрузке передается на сайт.
- Сайт передает информацию об отгрузке брокеру.
- Брокер обнуляет резерв.
Как выглядит процесс с отменой заказа
- Покупатель сформировал корзину и перешел к оформлению заказа. Товар резервируется.
- Покупатель оформил заказ.
- Заказ передан в 1С.
- 1С автоматически резервирует товар на своем складе.
- Заказ отменен в 1С.
- Резерв в 1С снимается.
- 1С сообщает об отмене заказа сайту.
- Сайт сообщает об отмене заказа брокеру.
- Брокер снимает резерв.
- Сайт передает информацию об отгрузке брокеру.
- Брокер обнуляет резерв.
О точках продаж
Когда мы формулировали проблему, то упомянули о точках продаж, которые работают напрямую с 1С и создают там заказы. В схеме с брокером такой процесс становится нерекомендуемым, если только они не работают исключительно с теми товарами, которые не выгружаются на сайт. Единственным верным решением будет перевод работы точек продаж непосредственно на сайт. И здесь возможно три подхода: либо менеджер работает с интерфейсом панели управления сайтом и формирует заказы прямо из нее, либо авторизуется за конкретного клиента и через его личный кабинет оформляет заказ, либо для менеджеров создается отдельный личный кабинет с доступом к каталогу, который так же будет работать с брокером остатков.
Передача остатков из 1С брокеру
Отметим, что хотя выгрузка остатков из 1С в базу брокера происходит по расписанию, это не является проблемой, потому что работа брокера устроена так, что между выгрузками из 1С доступные к заказу остатки в брокере не могут превышать остатки в 1С. Но достигается это при соблюдении следующих условий:
- На стороне 1С обрабатываются только заказы, прошедшие через брокер остатков.
- 1С выгружает в брокер остатки за вычетом резервов, сделанных на стороне 1С.
Если по какой-то причине на стороне 1С произошло уменьшение остатка товара, о котором сайт и брокер ничего не знают, это может привести к ситуации, когда будет заказано товара больше, чем есть в наличии. Однако данная ситуация может возникнуть только в промежутке между выгрузками остатков. После очередной выгрузки остатков в брокер произойдет синхронизация и ситуация перестанет быть неуправляемой.
Заключение
Описанное решение имеет определенные преимущества по сравнению с коробочным обменом остатками между 1С и битриксом:
- Резервирование товара происходит не после момента оформления заказа, а уже в процессе. Это позволяет избежать случаев, когда покупатель, отправляя заказ, узнает, что товара на самом деле нет в наличии. В худшем случае он об этом узнает, находясь в корзине, и у него будет возможность сразу же скорректировать ее состав.
- Решение позволяет организовать работу нескольких сайтов или точек продаж с одним складом.
Условные минусы:
- Рекомендация избегать ситуаций, когда остатки на стороне 1С уменьшаются по любой причине, кроме заказа с сайта. Если это происходит, рекомендуется реализовать процесс принудительной выгрузки остатков.
- Рекомендация перенести процесс продаж из 1С в любую другую систему, которая взаимодействует с брокером остатков.