В 1С-Битрикс доступность товара к покупке определяется не «галочкой наличия», а связкой количественного учёта и флага «Разрешить покупку при отсутствии товара». Разберём, откуда берётся статус «Нет в наличии», как включить продажу под заказ и как не превратить предзаказ в хаос с остатками.
Откуда берётся статус «Нет в наличии»
Статус наличия в Битрикс — производная величина. Система смотрит на поле количества торгового предложения (CATALOG_QUANTITY) и сопоставляет его с настройками каталога. Если количественный учёт включён, а доступный остаток (количество за вычетом резерва) равен нулю или меньше — товар считается недоступным и в каталоге показывается как «Нет в наличии».
Ключевой момент: «наличие» не хранится отдельным свойством, которое можно вручную переключить в карточке. Оно вычисляется. Поэтому если вы хотите управлять доступностью, нужно управлять остатком и правилами продажи при нуле, а не искать несуществующий переключатель «В наличии / Нет в наличии».
Ключевая настройка: покупка при отсутствии товара
Главный флаг находится в Магазин → Настройки → Настройки модуля → вкладка «Товары» (модуль catalog), опция «Разрешить покупку при отсутствии товара» (default_can_buy_zero). Он определяет глобальное поведение магазина при нулевом остатке.
- Флаг выключен — при нулевом доступном остатке кнопка «В корзину» скрывается или блокируется, товар помечается как отсутствующий.
- Флаг включён — покупка возможна даже при нуле и в минус; это и есть режим предзаказа / продажи под заказ.
Поведение можно переопределить точечно на уровне карточки товара — поле «Разрешить покупку при отсутствии товара» в разделе «Торговый каталог» имеет три значения: Да, Нет и По умолчанию (наследует глобальную настройку). Это удобно, когда весь магазин продаёт только со склада, а отдельные позиции можно брать под заказ.
Как устроен предзаказ в Битрикс
Отдельного «модуля предзаказа» в коробке нет. Предзаказ реализуется той же связкой: остаток равен нулю (или ещё не поступил), но покупка разрешена. Клиент оформляет заказ обычным образом, а магазин обрабатывает его как «под поставку».
Чтобы предзаказ был управляемым, обычно комбинируют несколько механизмов:
- Разрешение покупки при нуле — на нужных товарах.
- Отдельный статус заказа — например, «Ожидает поставки», настраивается в
Магазин → Настройки → Статусы заказов. - Признак предзаказа в свойстве заказа или товара — чтобы менеджер и склад видели, что позиция ещё не на складе.
- Резервирование — для предзаказа его чаще отключают, чтобы не «съедать» будущие поступления отрицательным остатком.
Отображение на витрине и кнопка «Под заказ»
За вывод статуса отвечают компоненты каталога — bitrix:catalog.section, catalog.element и связанный catalog.item. Они получают из каталога признак CAN_BUY и данные о доступности и на их основе рисуют кнопку и метку наличия.
Типовые сценарии оформления витрины:
- Товар доступен со склада — зелёная метка «В наличии», кнопка «В корзину».
- Остаток ноль, но покупка разрешена — метка «Под заказ» / «Предзаказ», кнопка «Купить» с уточнением срока.
- Покупка запрещена — метка «Нет в наличии», вместо кнопки — форма «Сообщить о поступлении».
Метки наличия настраиваются в свойствах компонента (параметры вида SHOW_MAX_QUANTITY, тексты доступности) либо кастомизируются в шаблоне template.php. Для кнопки «Сообщить о поступлении» в коробке есть готовый компонент bitrix:catalog.product.subscribe — он подписывает покупателя на уведомление о возврате товара в продажу.
Уведомление о поступлении (подписка на товар)
Для товаров, которые продавать под заказ нельзя, правильная альтернатива предзаказу — подписка на поступление. Компонент catalog.product.subscribe сохраняет e-mail покупателя, а при возврате остатка в плюс модуль каталога автоматически рассылает письма подписчикам.
Чтобы это работало, проверьте три вещи:
- Включена опция подписки в настройках модуля
catalogи разрешена подписка на нужных товарах; - Настроен почтовый шаблон события
CATALOG_PRODUCT_SUBSCRIBE_NOTIFY; - Работает агент рассылки — уведомления уходят на хите или по крону, в зависимости от настроек
Настройки → Настройки продукта → Агенты.
Наличие у товаров с торговыми предложениями
Если товар — с торговыми предложениями (SKU: размеры, цвета), наличие считается по каждому предложению отдельно. Родительский товар доступен к покупке, пока доступно хотя бы одно предложение. В карточке недоступные варианты либо скрываются, либо показываются серыми — это поведение шаблона.
| Ситуация | Что видит покупатель |
|---|---|
| Все SKU в наличии | Все варианты активны, кнопка «В корзину» |
| Часть SKU с нулём, покупка запрещена | Эти варианты недоступны для выбора |
| Часть SKU с нулём, покупка разрешена | Варианты доступны с меткой «Под заказ» |
| Все SKU с нулём, покупка запрещена | Товар «Нет в наличии» |
Флаг «Разрешить покупку при отсутствии» задаётся на уровне торгового предложения, поэтому одни варианты можно продавать только со склада, а другие — под заказ.
Типичные ошибки и как их избежать
Большинство проблем со статусом наличия — это не баги, а рассогласование настроек. Самые частые:
- Товар «в наличии», но купить нельзя. Обычно доступный остаток съеден резервом: количество больше нуля, но
CATALOG_QUANTITY_RESERVEDравно ему. Проверьте резервы и брошенные корзины. - Включили покупку при нуле, а кнопки всё равно нет. Настройка модуля переопределена значением в карточке товара (
Нет), либо кэш каталога не сброшен. - Остатки ушли в минус. Для предзаказных товаров не отключили автосписание — разведите логику статусами заказов.
- Подписка не рассылается. Не работает агент или не настроен почтовый шаблон события.
Настройки → Настройки продукта → Автокэширование или очистка через админку), иначе витрина покажет старый статус.Итог
Статус «Нет в наличии» в 1С-Битрикс — это вычисляемое состояние на основе доступного остатка и флага «Разрешить покупку при отсутствии товара». Предзаказ строится на той же механике: разрешаем покупку при нуле, помечаем позицию отдельным статусом заказа и аккуратно обходимся с резервом и автосписанием, чтобы склад не ушёл в минус. Там, где продавать под заказ нельзя, работает подписка на поступление.
Мы в B2Bsite настраиваем эту связку под реальные бизнес-процессы: разделяем товары «со склада» и «под заказ», связываем статусы с обменом 1С и следим, чтобы витрина, корзина и склад показывали одни и те же цифры. Если наличие и предзаказы в вашем магазине ведут себя непредсказуемо — поможем навести порядок.
Частые вопросы
Где включить продажу товара при нулевом остатке?
В настройках модуля каталога, вкладка «Товары», опция «Разрешить покупку при отсутствии товара». Её же можно переопределить в карточке конкретного товара или торгового предложения.
Есть ли в Битрикс отдельный модуль предзаказа?
Нет. Предзаказ реализуется штатными средствами: разрешением покупки при нуле, отдельным статусом заказа и признаком «под поставку». Отдельной коробочной сущности «предзаказ» не существует.
Почему товар с положительным остатком показывает «Нет в наличии»?
Чаще всего доступный остаток съеден резервом: количество больше нуля, но зарезервировано столько же. Проверьте резервы и незавершённые заказы.
Я включил покупку при нуле, но кнопки «В корзину» нет. Почему?
Скорее всего, в карточке товара флаг стоит в значении «Нет» и переопределяет глобальную настройку, либо не сброшен кэш компонентов каталога.
Чем подписка на поступление отличается от предзаказа?
Подписка только уведомляет покупателя письмом, когда товар вернётся в продажу, — заказ и оплата не создаются. Предзаказ создаёт реальный заказ на отсутствующий товар.
Как настроить рассылку уведомлений о поступлении товара?
Нужен компонент catalog.product.subscribe на витрине, включённая подписка в настройках каталога, настроенный почтовый шаблон события CATALOG_PRODUCT_SUBSCRIBE_NOTIFY и работающий агент рассылки.
Как управлять наличием у товаров с размерами и цветами?
Наличие считается по каждому торговому предложению отдельно, и флаг покупки при нуле задаётся на уровне SKU. Родительский товар доступен, пока доступно хотя бы одно предложение.
Почему после смены настроек статус наличия не поменялся?
Витрина каталога кэшируется. После изменения настроек доступности нужно сбросить кэш компонентов каталога, иначе покупатель увидит старый статус.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.