Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья5 мин чтенияПросмотры0

Как синхронизировать остатки по нескольким складам между 1С и интернет-магазином

Как согласовать склады, резервы и доступность товара при интеграции магазина с 1С, чтобы сайт не обещал покупателю то, чего нельзя отгрузить.

Комментарии 0

Стеллажи нескольких складов с коробками и терминалами учёта без надписей
В этой статье

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

Для магазина с несколькими складами нужно отдельно определить физический остаток, доступное количество, резерв, ожидаемое поступление и правила выбора склада. Только после этого можно решать, какие данные показывать в карточке и что отправлять обратно в 1С.

Сначала договоритесь, что означает «в наличии»

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

Показатель

Для чего нужен

Что пойдёт не так при подмене

Физический остаток

Инвентарный учёт

Сайт покажет зарезервированные и недоступные единицы

Доступно к продаже

Обещание покупателю

Без правил канала число будет завышено

Резерв

Защита уже принятых заказов

Два покупателя получат одну единицу

Ожидаемое поступление

Предзаказ и срок

Будущая поставка станет выглядеть как товар на полке

Страховой запас

Защита от расхождений

Последние единицы будут обещаны при неточном учёте

Определение записывают как бизнес-правило. Например: интернет-магазин получает сумму доступных остатков только с двух складов своего региона, уменьшенную на страховой запас; резерв создаётся после подтверждения заказа и действует ограниченное время. Это уже проверяемое требование, в отличие от фразы «передавать остатки онлайн».

Сопоставьте склады, а не их названия

Название склада меняется, повторяется и может содержать сокращения. Надёжная интеграция связывает сущности по устойчивым идентификаторам. Для каждого склада 1С задают роль на сайте: продающий, только для самовывоза, распределительный, закрытый для интернет-заказов или информационный.

  • Внешний идентификатор склада не должен зависеть от видимого названия.

  • У сайта должно быть явное правило для неизвестного склада: остановить запись и сообщить об ошибке безопаснее, чем молча сложить количество в общий остаток.

  • Закрытие или объединение склада проводят как миграцию сопоставлений, а не простое удаление строки.

  • Регион, способ доставки и юридическое лицо могут ограничивать выбор склада независимо друг от друга.

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

Отделите обмен остатков от резервирования

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

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

Событие

Ожидаемое действие

Контроль

Создан заказ

Попытка зарезервировать состав

Один внешний ID заказа

Оплата подтверждена

Продлить или закрепить резерв

Сумма и состав не изменились молча

Оплата не завершена

Снять временный резерв по правилу

Повтор не уводит остаток в минус

Состав изменён

Пересчитать разницу

История прежнего резерва сохранена

Заказ отменён

Освободить доступное количество

Операция идемпотентна

Не превращайте «онлайн» в обещание нулевой задержки

Даже событийный обмен имеет задержку: сообщение проходит очередь, обработчик может повторить запрос, а 1С — быть недоступной на обслуживании. В интерфейсе и требованиях нужно зафиксировать допустимый возраст данных. Для дефицитных товаров полезнее показывать осторожный статус и подтверждать наличие при оформлении, чем выводить красивое точное число, которому нельзя доверять.

Интеграция должна измерять время последнего успешного обмена по каждому складу и количество необработанных событий. Отдельно нужны уведомления о зависшей очереди, неизвестных идентификаторах и отрицательных остатках. Сам факт запуска задания по расписанию не означает, что данные дошли до каталога.

Как принять обмен по складам

  1. Создайте одинаковый товар на двух складах и проверьте правила региона, доставки и самовывоза.

  2. Зарезервируйте последнюю доступную единицу двумя параллельными заказами: второй заказ не должен получить подтверждение без оговорённого сценария.

  3. Повторите одно и то же событие резервирования. Количество и число резервов не должны измениться второй раз.

  4. Остановите тестовый обработчик, накопите несколько изменений и восстановите обмен. Проверьте порядок и отсутствие потерь.

  5. Переименуйте склад без смены внешнего идентификатора, затем добавьте неизвестный идентификатор. Первое изменение должно пройти, второе — стать заметной ошибкой.

  6. Отмените неоплаченный заказ и убедитесь, что резерв снят один раз, а доступность пересчитана.

  7. Сверьте карточку товара, корзину, оформление и кабинет менеджера: они не должны использовать разные определения остатка.

Результат можно считать надёжным, когда команда объясняет происхождение показанного остатка и воспроизводит спорные ситуации. Если число нельзя разложить по складам, резервам и правилам канала, увеличение частоты обмена лишь быстрее распространяет неопределённость.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.