557 слов | 2 минуты

Статусы наличия товара

В этой статье обсудим существующие в Битриксе статусы наличия товара. Какие параметры торгового каталога, SKU, компонентов влияют на определение этих статусов, а также возможность покупки тех или иных товаров.

Ни для кого не секрет, что в Битриксе всего два статуса наличия товара: "Есть в наличии" и "Нет в наличии". И зависят эти статусы от трёх параметров торгового каталога:

Наличие на складе Условия
НЕТ Выполнены все три условия:

1. Доступное количество ≤ 0
2. Количественный учёт — ДА
3. Разрешена покупка при отсутствии товара — НЕТ
ДА Все остальные случаи

Мы можем положить товар в корзину и оформить вместе с ним заказ, только если его статус "В наличии". Отсутствующие товары купить нельзя.

Зависимость статуса наличия от количества товара на отдельных складах

Начиная с версии 12.5 в Битриксе стало возможным создавать склады и заполнять имеющееся количество товара на каждом отдельном складе. При этом везде пишется, что количество товара на складах носит лишь информационный характер и не влияет на расчёт остатков товара и определения его наличия в магазине. Это действительно так, но только если не включен Складской учет.

В отличие от обычного количественного учета складской учет нельзя включить или выключить для какого-либо отдельного товара. Этот функционал включается только для всего сайта целиком в настройках модуля Интернет-магазин. После включения функционала поля для редактирования как общего количества товара, так и количества товара на отдельных складах будут везде заблокированы. Изменять количество товара на складах можно будет только с помощью создания и проведения документов. Вместе с этим будет меняться и основное поле с общим количеством товара, которое и влияет на статус наличия товара. То есть, общее количество товара (СATALOG_QUANTITY) будет всегда равно сумме остатков по всем складам при постоянной работе складского учёта.

Когда в бой вступают торговые предложения (SKU)

Появление в каталоге магазина товаров с торговыми предложениями несколько усложняет архитектуру каталога и понимание того, как, где и какие статусы наличия должны выводиться. Связано это с тем, что остаток товара и параметры количественного учёта в Битриксе можно задавать как у самого товара, так и у его отдельных торговых предложений. И даже если вы не видите вкладку "Торговый каталог" у основного товара, а лишь вкладку "Торговые предложения", эти значения всё равно будут вычисляться для основного товара отдельно.

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

Как видим, отсутствующие товары имеют отличную индикацию. Но что делать, если мы не хотим отображать в списке отсутствующие товары? Для этого в комплексном компоненте bitrix:catalog имеется замечательный параметр "Не отображать товары, которых нет на складах" (HIDE_NOT_AVAILABLE).

После включения этой опции наблюдаем весьма странный и неожиданный результат:

Корректно отобразился только костюм "Огонь в ночи". У него исчезли те торговые предложения, которые мы не сможем купить, а сам товар остался в списке, потому что в его настройках мы отключили количественный учет. Остальные товары с торговыми предложениями исчезли из списка, хотя у них и имеются торговые предложения в наличии, потому что для самих товаров не заданы никакие параметры для определения их наличия.

Так же мы отключили предварительно количественный учет для основного товара "Вечерний спорт", чтобы он остался в списке. Но у него нет в наличии ни одного из торговых предложений, поэтому шаблон начал считать, что это просто обычный товар и предлагает нам купить его, что по сути своей бессмысленно.

Ещё больше нестыковок появляется, если сюда добавить использование фильтра:

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