Настройка обмена складскими остатками 1С и 1С-Битрикс
Актуальность остатков — один из главных факторов конверсии: покупатель выбирает товар, добавляет в корзину, а в момент оформления узнаёт, что его нет. Разрыв между реальным остатком на складе и данными на сайте в несколько часов — норма для магазинов без настроенного обмена. Правильная синхронизация остатков этот разрыв устраняет.
Как остатки передаются через CommerceML
Остатки входят в файл offers*.xml в блоке <КоличествоНаСкладах>:
<Предложение>
<Ид>OFFER_GUID</Ид>
<КоличествоНаСкладах>
<КоличествоНаСкладе>
<ИдСклада>WAREHOUSE_GUID</ИдСклада>
<НаименованиеСклада>Основной склад</НаименованиеСклада>
<Количество>15</Количество>
</КоличествоНаСкладе>
</КоличествоНаСкладах>
<Количество>15</Количество>
</Предложение>
Битрикс обновляет остатки в таблице b_catalog_store_product по складам и суммарный остаток в b_catalog_product. Суммарный остаток — агрегат по всем складам, используется в фильтрах каталога.
Настройка складов в Битрикс
Каталог → Склады → Настройка складов:
- Создать склады, соответствующие складам в 1С
- Каждому складу присвоить XML-идентификатор (поле «Внешний код») — он должен точно совпадать с
ИдСкладаиз выгрузки
Без совпадения XML-идентификаторов остатки по складам не распределятся — попадут на дефолтный или «неизвестный» склад. Ошибка незаметна до момента, когда менеджер обнаруживает расхождение учётных данных.
Управление доступностью товаров по остаткам
Каталог → Настройки каталога → Нулевой остаток:
- Деактивировать товар — товар исчезает из каталога при обнулении остатка
- Показывать с кнопкой «Под заказ» — остаток 0, но карточка доступна для заказа
- Сохранять активным — ничего не менять автоматически
Для магазинов с предзаказом логику «показывать при нулевом остатке» реализуют через свойство элемента PREORDER_AVAILABLE = Y. Обработчик события скрывает кнопку «Купить» и показывает форму предзаказа.
Резервирование при создании заказа
Чтобы остаток не уходил в минус при параллельных заказах:
Магазин → Настройки → Настройки магазина → Резервирование:
- Резервировать при: создании заказа / подтверждении оплаты (выбрать в зависимости от бизнес-логики)
- Снимать резерв при: отмене заказа / через N дней без оплаты
Резерв хранится в b_sale_reserve_quantity и учитывается при показе доступного остатка: доступно = остаток - зарезервировано. При передаче заказа в 1С — убедиться, что 1С понимает «зарезервированное количество» и не считает его свободным остатком.
Частота обмена остатками
Остатки и цены — самые волатильные данные. Рекомендуемые настройки:
| Тип бизнеса | Периодичность | Обоснование |
|---|---|---|
| Продукты питания, аптека | Каждые 5–15 минут | Быстрый оборот, критична свежесть |
| Одежда, электроника | Каждые 30–60 минут | Умеренный оборот |
| Стройматериалы, мебель | Каждые 2–4 часа | Редкие поступления |
Для частого обмена — использовать отдельный поток только для offers*.xml, без полной выгрузки каталога.
Сроки настройки
Настройка обмена остатками с распределением по складам — 4–8 часов. С настройкой резервирования, автоактивации и отдельного расписания для остатков — 1–2 дня.







