БесплатноБазовая интеграция с 1С в подарок при заказе интернет-магазина под ключ

Интеграция с системой складского учёта (WMS): резервы и остатки

Интеграция магазина на 1С-Битрикс с WMS: синхронизация остатков, резервы, склады, REST и вебхуки

Покупатель оформил заказ на последний товар, оплатил, а на складе его уже нет — ушёл другому клиенту минуту назад. Итог: отмена, возврат денег, испорченное впечатление и потерянный клиент. Такая пересортица — прямое следствие того, что сайт и склад живут в разных реальностях: на витрине товар есть, а физически его уже нет. Интеграция с системой складского учёта (WMS) как раз синхронизирует эти реальности, чтобы на сайте отражался настоящий доступный остаток.

В этом how-to разберём, как связать магазин на 1С-Битрикс с WMS: чем доступный остаток отличается от бухгалтерского, как устроены резервы, какие схемы интеграции бывают и как сделать обмен устойчивым к сбоям через REST, вебхуки и события D7. Настройку такого обмена мы ведём в рамках автоматизации продаж и склада на 1С.

Коротко

  • На сайте должен отражаться доступный к продаже остаток (с учётом резервов), а не бухгалтерский.
  • Резервирование при оформлении заказа плюс частая синхронизация защищают от продажи одного товара дважды.
  • Интеграция бывает прямой (сайт ↔ WMS) или через учётную 1С как посредника; выбор зависит от требований к реальному времени.
  • Надёжность держится на очередях с повтором, идемпотентности операций и мониторинге сбоев обмена.

Зачем магазину интеграция с WMS

Пока склад небольшой и заказов немного, остатки можно обновлять вручную или редкой выгрузкой. Но с ростом оборота и числа складов ручная синхронизация перестаёт справляться: остатки на сайте отстают от реальности, растёт пересортица, а менеджеры вручную отменяют заказы на отсутствующий товар. WMS управляет физическим складом детально — по ячейкам, зонам, партиям — и знает реальную доступность товара.

Интеграция сайта с WMS решает две задачи. Первая — показывать покупателю честный остаток, чтобы он не заказывал то, чего нет. Вторая — резервировать товар под заказ, чтобы его не продали дважды. Обе задачи напрямую влияют на выручку и репутацию: отменённый из-за пересортицы заказ обходится дороже, чем недополученная маржа с осторожного «нет в наличии».

Доступный остаток против бухгалтерского

Ключевое различие, которое нужно понять до интеграции, — между разными видами остатка:

Вид остаткаЧто показываетГодится для витрины?
БухгалтерскийСколько числится в учётеНет, не учитывает резервы
ФизическийСколько реально на складеЧастично, без учёта заказов
Доступный к продажеФизический минус резервыДа, именно его показывают

На витрине должен отражаться именно доступный к продаже остаток: физическое наличие за вычетом того, что уже зарезервировано под другие заказы. Показывать бухгалтерский или чистый физический остаток — прямой путь к пересортице, потому что они не учитывают, что часть товара уже «обещана» другим покупателям.

Обмен данными сайта с внешним сервисом Сайткаталог, заказыВнешний сервисREST APIОбменочередь / APIДанные идут в обе стороны по расписанию или по событию
Схема: сайт и Внешний сервис обмениваются данными в обе стороны — по расписанию или по событию. Товары и остатки приходят на сайт, заказы уходят обратно.

Схемы интеграции: прямая и через 1С

Есть две базовые архитектуры связи сайта со складом, и выбор между ними определяет всю дальнейшую работу:

Для большинства магазинов схема через 1С оптимальна: она использует привычный обмен CommerceML и меньше усложняет систему. Прямая интеграция оправдана при высоких требованиях к скорости остатков — например, на ходовом товаре с высокой конкуренцией за последнюю единицу. Технические основы построения таких интеграций мы разбираем в статье про REST, вебхуки и безопасность на 1С-Битрикс.

Синхронизация остатков

Частота обновления остатков — компромисс между нагрузкой и риском перепродажи. Слишком редко — остатки отстают и растёт пересортица; слишком часто без нужды — лишняя нагрузка на систему. Оптимальна гибридная схема:

  1. Базовая периодическая синхронизация. Полная или инкрементальная выгрузка остатков по расписанию для всего ассортимента.
  2. Событийное обновление. Мгновенное обновление ходовых и критичных позиций по вебхуку при изменении на складе.
  3. Инкрементальность. Передавать не весь каталог каждый раз, а только изменившиеся остатки — быстрее и легче.
  4. Кэш и тегирование. Обновление остатка точечно сбрасывает кэш карточки и выдачи, а не весь кэш каталога.

Главный ориентир: задержка обновления остатка должна быть меньше, чем типичный интервал между двумя заказами одной позиции. Тогда шанс продать один товар дважды минимален. Устойчивость частой синхронизации под нагрузкой зависит от инфраструктуры, о которой мы пишем в материале про хостинг и BitrixVM.

Резервы и защита от перепродажи

Синхронизация остатков сама по себе не спасает от классической гонки: два покупателя одновременно оформляют последний товар. Решение — резервирование. При оформлении заказа товар резервируется и сразу вычитается из доступного остатка на витрине.

Хорошая схема резервов работает так: как только покупатель оформил заказ, доступный остаток уменьшается, и следующий клиент уже видит актуальную цифру. Для товара с высокой конкуренцией за остаток добавляют проверку доступности в момент оформления: если за время в корзине остаток исчез, покупателю честно сообщают об этом до оплаты, а не после. Это защищает и от пересортицы, и от негатива отменённого заказа.

Резерв должен быть согласован: если сайт резервирует товар, а 1С и WMS об этом не знают, доступный остаток разъедется. Резервирование при оформлении заказа должно синхронно отражаться во всех системах — иначе резерв на сайте не спасёт от отгрузки того же товара со склада по другому каналу.

Остатки по нескольким складам

Для распределённой торговли и B2B наличие «вообще» бесполезно — важно наличие там, откуда отгрузят конкретному клиенту. Один артикул может быть на московском складе и отсутствовать на региональном, поэтому в карточке и выдаче показывают остаток в разрезе складов или по складу, привязанному к региону покупателя.

WMS и 1С передают остатки по складам, а сайт отображает релевантный конкретному клиенту. Для B2B это критично: закупщик должен видеть, есть ли товар на складе отгрузки, а не радоваться наличию на другом конце страны. Эта логика тесно связана с региональностью и ценами по группам — как их выстроить эффективно на уровне данных, мы разбираем в статье про D7 и ORM в 1С-Битрикс.

REST API и вебхуки

Технически обмен остатками и резервами в реальном времени строится на REST и вебхуках. Логика такая:

Безопасность интеграционных эндпоинтов — отдельная важная тема: открытый незащищённый вебхук остатков может стать вектором атаки. Подробно вопросы защиты REST и вебхуков мы разбираем в отдельном материале про REST, вебхуки и безопасность.

События D7 и реакция на заказ

На стороне 1С-Битрикс реакцию на действия покупателя удобно строить через события D7. Когда покупатель оформляет заказ, срабатывает событие, на которое навешивается обработчик: он инициирует резерв, дёргает API склада, обновляет доступный остаток.

События позволяют аккуратно встроить логику интеграции, не переписывая ядро: обработчик реагирует на создание и изменение заказа, на смену статуса, на оплату. Это чистый и поддерживаемый способ связать бизнес-логику магазина со складом. Важно, чтобы обработчики были быстрыми и не блокировали оформление заказа: тяжёлые операции выносят в очередь и выполняют асинхронно. Как правильно писать такую логику на современном ядре, мы разбираем в статье про D7 и ORM в 1С-Битрикс.

Устойчивость к сбоям и очереди

Интеграция — это две системы, и любая из них может быть временно недоступна. Если обмен не устойчив к сбоям, обновления теряются, и остатки разъезжаются. Надёжная интеграция строится на очередях:

Без мониторинга сбой интеграции проявляется поздно и болезненно — через вал отмен. Дисциплину выкладки и надёжного развёртывания таких интеграций мы описываем в материале про CI/CD и деплой на 1С-Битрикс.

Идемпотентность и целостность данных

При повторах сообщений возникает риск двойного применения: повторно пришедший резерв не должен списать товар дважды. Поэтому операции делают идемпотентными — повторное выполнение с тем же идентификатором не меняет результат. Каждое сообщение несёт уникальный ключ, и система проверяет, не обработано ли оно уже.

Также важна целостность: резерв и уменьшение доступного остатка должны происходить согласованно, чтобы не осталось «полурезерва». Операции, меняющие остаток, выполняют так, чтобы при сбое посередине данные не оказались в противоречивом состоянии. Идемпотентность плюс контроль целостности — то, что отличает надёжную интеграцию от «работает, пока не сбойнёт». Эти принципы одинаково важны и для остатков, и для любых складских операций.

Пошаговое внедрение

Связать сайт со складом можно по понятной последовательности:

  1. Выберите схему. Прямая интеграция с WMS или обмен через учётную 1С — по требованиям к реальному времени.
  2. Определите доступный остаток. Договоритесь, как считается доступный к продаже остаток (физический минус резервы).
  3. Настройте синхронизацию. Периодическая инкрементальная выгрузка плюс событийное обновление для ходовых позиций.
  4. Внедрите резервы. Резервирование при оформлении заказа, согласованное между сайтом, 1С и WMS.
  5. Добавьте склады. Остатки по складам и привязку к региону клиента в карточке и выдаче.
  6. Заложите надёжность. Очереди с повтором, идемпотентность, политику на недоступность, мониторинг.
  7. Проверьте на нагрузке. Смоделируйте одновременные заказы на последний товар и убедитесь, что пересортицы нет.

Частые ошибки

Чек-лист интеграции

  1. Схема выбрана. Прямая или через 1С, под требования к реальному времени.
  2. Доступный остаток определён. Витрина показывает физический минус резервы.
  3. Синхронизация настроена. Периодическая плюс событийная для ходовых позиций.
  4. Резервы согласованы. Резервирование при заказе отражается во всех системах.
  5. Склады учтены. Остатки по складам и привязка к региону клиента.
  6. Надёжность заложена. Очереди, повторы, идемпотентность, политика на сбой.
  7. Мониторинг работает. Сбои обмена видны сразу, есть оповещения.

Вывод

Интеграция магазина на 1С-Битрикс с WMS — это про честный остаток и отсутствие пересортицы. Ключевые принципы просты: показывать доступный к продаже остаток (физический минус резервы), резервировать товар при оформлении заказа и синхронизировать данные достаточно часто, чтобы не продать одну единицу дважды.

Технически это строится на REST, вебхуках и событиях D7, а надёжность обеспечивают очереди с повтором, идемпотентность операций и мониторинг сбоев. Выбор между прямой интеграцией и обменом через 1С зависит от требований к реальному времени. Сделайте обмен устойчивым и согласованным — и склад с сайтом будут жить в одной реальности, а отменённые из-за пересортицы заказы останутся в прошлом.

Частые вопросы

Чем WMS отличается от учёта остатков в 1С?

WMS (Warehouse Management System) управляет физическим складом на уровне ячеек, зон, партий и операций комплектации, тогда как учётная 1С ведёт остатки на уровне номенклатуры и складов бухгалтерски. WMS знает, где именно лежит товар и сколько его реально доступно с учётом идущих отгрузок, а 1С — сколько его числится. Для магазина важно, чтобы на сайте отражался доступный к продаже остаток, а не бухгалтерский, и здесь связка WMS, 1С и сайта должна работать согласованно.

Как часто нужно синхронизировать остатки с сайтом?

Зависит от оборачиваемости и риска перепродажи. Для быстрого товара с высоким спросом остатки синхронизируют часто или в реальном времени через события и вебхуки, чтобы не продать то, чего уже нет. Для медленного ассортимента достаточно периодической выгрузки. Оптимальна гибридная схема: базовая периодическая синхронизация плюс мгновенное обновление по событию для ходовых позиций. Главное — чтобы задержка обновления была меньше, чем интервал между заказами одной позиции.

Что такое резерв и зачем он нужен при интеграции?

Резерв — это количество товара, зарезервированное под конкретный заказ и потому недоступное для продажи другим покупателям. Без резервов на активном складе легко продать одну единицу дважды: два клиента одновременно оформляют заказ на последний товар. Резервирование при оформлении заказа исключает такую пересортицу. В связке с WMS резерв должен согласовываться между сайтом, 1С и складом, чтобы доступный остаток на витрине всегда учитывал уже зарезервированное.

Через что технически интегрировать WMS с 1С-Битрикс?

Основные варианты: REST API 1С-Битрикс, вебхуки для событий и обмен через промежуточную 1С по протоколу CommerceML. Для остатков и резервов в реальном времени чаще используют REST и вебхуки: WMS сообщает об изменении остатка, сайт обновляет данные. События D7 на стороне Битрикс позволяют реагировать на оформление заказа и инициировать резерв. Выбор зависит от того, обменивается ли сайт со складом напрямую или через учётную 1С как посредника.

Как избежать перепродажи последнего товара?

Комбинацией резервирования и достаточно частой синхронизации. При оформлении заказа товар резервируется, и доступный остаток на витрине сразу уменьшается. Плюс критичные позиции обновляются по событию, а не только по расписанию. Для товара с высокой конкуренцией за остаток вводят проверку доступности в момент оформления: если за время в корзине остаток исчез, покупателю честно сообщают об этом до оплаты, а не после. Это защищает и от пересортицы, и от негатива.

Нужно ли показывать остатки по нескольким складам?

Для распределённой торговли и B2B — да. Один артикул может быть на одном складе и отсутствовать на другом, а клиенту важно наличие именно там, откуда ему отгрузят. Поэтому в карточке товара и в выдаче показывают остаток в разрезе складов или хотя бы наличие по складу, привязанному к региону клиента. WMS и 1С передают остатки по складам, а сайт отображает их с учётом того, какой склад релевантен конкретному покупателю.

Что делать при сбое интеграции, чтобы не продавать вслепую?

Заложить устойчивость к сбоям: очередь сообщений с повтором доставки, чтобы обновления не терялись, идемпотентность операций, чтобы повтор не задвоил резерв, и разумную политику на случай недоступности склада. Если данные об остатках устарели из-за сбоя, безопаснее временно пометить критичные позиции как «уточняется» или ограничить оформление, чем продавать вслепую. Мониторинг и оповещения о сбоях обмена обязательны, иначе проблема всплывёт только в виде отменённых заказов.

Можно ли обойтись обменом через 1С вместо прямой интеграции с WMS?

Часто да, и это распространённая схема: WMS обменивается с учётной 1С, а 1С — с сайтом по CommerceML. Тогда сайт не знает о WMS напрямую, а получает консолидированные остатки и статусы из 1С. Это проще в поддержке и достаточно для многих проектов. Прямая интеграция сайта с WMS нужна, когда требуется реальное время и детализация, которую 1С как посредник не передаёт или передаёт с задержкой. Выбор зависит от требований к скорости и точности остатков.

Поделиться:

Нужна честная синхронизация остатков сайта и склада?

Свяжем 1С-Битрикс, 1С и WMS: остатки, резервы, склады и устойчивый обмен без пересортицы. Рассчитаем работу по вашему проекту.

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: связываем сайт, 1С и складские системы, настраиваем остатки, резервы и устойчивый обмен.

← Все статьи блога