Автосписание остатков — это уменьшение доступного количества товара по мере движения заказа. В 1С-Битрикс списание не сводится к одной галочке: оно завязано на резервирование, статусы заказа и отгрузки, и настраивать его нужно осознанно, иначе остатки на витрине разъезжаются с реальным складом.
Что понимают под автосписанием
В модуле sale (Интернет-магазин) количество товара живёт в двух величинах: QUANTITY — физический остаток, и QUANTITY_RESERVED — зарезервированное под заказы. Доступное к продаже = остаток минус резерв. «Автосписание» на практике означает автоматическое изменение этих величин при событиях заказа, без ручного вмешательства менеджера.
Важно различать два разных действия:
- Резервирование — товар ещё на складе, но заблокирован под конкретный заказ (растёт
QUANTITY_RESERVED); - Списание (отгрузка) — товар физически покидает склад, уменьшается сам
QUANTITY.
Оба процесса можно автоматизировать, но привязываются они к разным точкам жизненного цикла заказа, и путать их не стоит.
Где находятся настройки
Базовые правила задаются в Магазин → Настройки → Настройки модулей → Интернет-магазин (страница /bitrix/admin/settings.php?mid=sale), вкладка «Резервирование и списание» (в разных редакциях называется «Заказы» / «Резервирование»). Здесь настраивается поведение по умолчанию для всего магазина.
Ключевые опции:
- Резервировать товар при оформлении заказа — резерв ставится сразу, как только заказ создан;
- Резервировать при переходе в статус — резерв появляется только при выбранном статусе (например, «Принят»);
- Списывать товар при отгрузке / при статусе — уменьшение физического остатка при отгрузке или достижении статуса.
Привязка списания к статусам заказа
Самый гибкий механизм — списывать и резервировать по статусам. У заказа в Битрикс есть статус самого заказа (STATUS_ID) и, начиная с D7-версий модуля, отдельные отгрузки (shipment) со своими признаками «разрешена доставка» и «отгружено».
Типовая схема выглядит так:
| Событие | Что происходит с остатком |
|---|---|
| Заказ оформлен | Ставится резерв (QUANTITY_RESERVED растёт) |
| Заказ оплачен / принят | Резерв сохраняется, товар держится за клиентом |
| Отгрузка отмечена «Отгружено» | Списывается физический остаток (QUANTITY уменьшается), резерв снимается |
| Заказ отменён | Резерв освобождается, остаток возвращается |
Признак «Разрешить отгрузку» и флаг «Отгружено» на вкладке отгрузки в карточке заказа (/bitrix/admin/sale_order_view.php) — это и есть та точка, где реально уменьшается склад.
Резерв и списание: как не задвоить
Частая ошибка — воспринимать резерв и списание как одно и то же. Если товар уже отгружен, он должен уйти из физического остатка, а резерв под него — сняться. Битрикс делает это согласованно: при отгрузке количество из QUANTITY_RESERVED не «добавляется» к списанию, а конвертируется — резерв освобождается, а физический остаток падает на то же число.
Проблемы начинаются, когда настройки резерва и списания противоречат друг другу. Например, резерв стоит «при оформлении», а списание — «при оформлении» же: тогда доступное количество проседает вдвое. Правильная связка:
- Резерв — на раннем статусе (оформлен/принят);
- Списание — на позднем (отгружен/выполнен);
- Возврат резерва — на отмене.
Списание при включённом складском учёте
При включённом складском учёте (Магазин → Склады) у каждой отгрузки указывается склад, с которого уходит товар. Списание уменьшает остаток именно на этом складе, а не «в общем котле». Это важно для магазинов с несколькими точками отгрузки и для корректного распределения при заказах, где товар берётся с разных складов.
Если склад в отгрузке не выбран, а списание включено, Битрикс либо не сможет корректно уменьшить остаток, либо возьмёт склад по умолчанию — поэтому при мультискладовой схеме важно, чтобы менеджер (или автоматика) проставлял склад отгрузки. Автоматизировать выбор склада можно обработчиком события отгрузки в init.php, подписавшись на события модуля sale через \Bitrix\Main\EventManager.
Проверить итоговые остатки по складам удобно в разделе Магазин → Склады → Остатки на складах и через отчёты движения товара.
Как проверить, что списание работает корректно
После настройки прогоните тестовый сценарий и наблюдайте за цифрами:
- Создайте заказ — убедитесь, что вырос резерв, а физический остаток не изменился;
- Отмените заказ — резерв должен освободиться полностью;
- Проведите отгрузку — физический остаток должен упасть, резерв под эту позицию — исчезнуть;
- Сравните доступное количество на витрине (в карточке товара) с ожидаемым.
Для диагностики полезны: журнал заказа (история изменений статусов), таблицы b_sale_basket, b_sale_order_dlv_basket и складские таблицы, а также агент/крон-процедуры, которые могут снимать «зависшие» резервы по истечении срока (опция «Освобождать резерв через N дней»).
Типичные ошибки настройки
Что чаще всего ломает автосписание:
- Двойная блокировка — резерв и списание на одном статусе, доступное количество падает вдвое;
- Конфликт с 1С — сайт списывает, обмен перезаписывает; нужно выбрать один источник истины по остаткам;
- Списание на раннем статусе — товар уходит из остатка ещё до оплаты, при отмене возвращается не всегда чисто;
- Не снимается резерв по брошенным заказам — склад «занят» несуществующими продажами;
- Не выбран склад в отгрузке при мультискладовой схеме;
- Кэш каталога — витрина показывает старые остатки; проверяйте, что доступность пересчитывается и кэш сбрасывается.
Каждая из этих ситуаций даёт расхождение между реальным складом и тем, что видит покупатель, — а это либо перепродажи, либо ложное «нет в наличии».
Итог
Автосписание в 1С-Битрикс — это связка из трёх решений: где ставить резерв, на каком статусе или отгрузке списывать физический остаток и как возвращать резерв при отмене. Настраивать их нужно согласованно и с учётом того, кто является источником истины по остаткам — сайт или 1С. Тогда доступность на витрине совпадает со складом, а перепродажи и ложные «нет в наличии» уходят.
Мы в B2Bsite проектируем логику резервирования и списания под реальные бизнес-процессы магазина, настраиваем корректный обмен остатками с 1С и вычищаем расхождения, из-за которых остатки «пляшут». Если склад и витрина живут своей жизнью — поможем свести их в одну согласованную систему.
Частые вопросы
Чем резервирование отличается от списания?
Резервирование блокирует товар под заказ, но он остаётся на складе — растёт зарезервированное количество. Списание уменьшает сам физический остаток, когда товар отгружен.
На каком статусе лучше списывать остаток?
Оптимально — на факте отгрузки или позднем статусе вроде «Выполнен», а резерв ставить раньше, при оформлении или принятии. Так остаток уходит только по реально отгруженному товару.
Почему доступное количество упало вдвое?
Скорее всего резерв и списание настроены на одном и том же событии, и количество вычитается дважды. Разведите резерв на ранний статус, а списание на поздний.
Что делать, если остатки приходят из 1С?
Выберите один источник истины: обычно остаток ведёт 1С, а на сайте автосписание отключают или согласовывают с выгрузкой. Иначе обмен будет перезаписывать списанные значения.
Как вернуть остаток при отмене заказа?
При переводе заказа в статус отмены Битрикс снимает резерв и возвращает количество. Убедитесь, что списание не произошло раньше отмены, иначе возврат остатка нужно контролировать вручную.
Почему товар числится занятым, хотя заказов нет?
Это зависшие резервы по неоплаченным или брошенным заказам. Настройте автоматическое освобождение резерва через заданное число дней или по неоплате.
Как списывать при работе с несколькими складами?
В отгрузке нужно указать склад, с которого уходит товар — списание уменьшит остаток именно этого склада. При мультискладовой схеме проследите, чтобы склад отгрузки всегда проставлялся.
Как проверить, что автосписание работает верно?
Прогоните тестовый заказ: при оформлении должен вырасти резерв, при отгрузке — упасть физический остаток, при отмене — освободиться резерв. Сверьте цифры с разделом остатков по складам.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.