Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Немного о статусах наличия товара в Битриксе, разных видах его учёта и подводных камнях при использовании торговых предложений
Здравствуйте, уважаемые коллеги!
В этой статье я собираюсь подробно обсудить с вами существующие в Битриксе статусы наличия товара; какие параметры торгового каталога, SKU, компонентов влияют на определение этих статусов, а также возможность покупки тех или иных товаров; и есть ли какие-нибудь недоработки в стандартных шаблонах и компонентах Битрикса, связанных с наличием товаров.
1. Статусы наличия товара Я думаю, ни для кого не секрет, что в Битриксе всего два статуса наличия товара: "Есть в наличии" и "Нет в наличии". И зависят эти статусы от трёх параметров торгового каталога:
Наличие на складе:
НЕТ
Выполнены ВСЕ три условия: Доступное количество <= 0 Количественный учёт — ДА Разрешена покупка при отсутствии товара — НЕТ
ДА
Все остальные случаи
Каждый администратор интернет-магазина и программист 1С-Битрикс должен знать эту простую формулу как 2х2. Мы можем положить товар в корзину и оформить вместе с ним заказ, только если его статус "В наличии". Отсутствующие товары купить нельзя. Но очень часто в интернет-магазинах можно встретить и другие статусы наличия, и сценарии покупки. Товар может отсутствовать в магазине в данный момент, но его уже заказали у поставщиков и везут в магазин. Обычно у таких товаров указывается примерная дата поступления в магазин, и его уже можно купить. Так же очень распространена покупка товаров "Под заказ". Обычно такие товары никогда не хранятся в магазине из-за больших габаритов, низкого спроса/оборота конкретной модели или ряда других причин, но при этом товар есть в наличии у поставщиков, с которыми работает торговая площадка. Такие товары доступны для покупки под заказ. Покупатель размещает заказ и оплачивает покупку, магазин заказывает товар у поставщика, после чего сразу пересылает его конечному покупателю. Поскольку два последних сценария не поддерживаются Битриксом из коробки, для их реализации нужны какие-либо дополнительные модули и модификация шаблонов. В Битриксе есть возможность подписки на отсутствующие товары: вы можете положить отсутствующий товар в корзину, где он попадёт в отдельную вкладку, а после появления этого товара на складе, пользователю будет отправлено уведомление на почту о том, что товар появился в магазине, и его можно купить. Это тоже довольно удобная и полезная вещь, но выполняет она несколько другую функцию.
В своей работе при разработке типовых решений часто сталкиваемся с клиентами, которым нужен сценарий покупки товаров "Под заказ". В типовом решении "Битроник" такой функционал был реализован с помощью создания в инфоблоке с каталогом отдельного свойства FOR_ORDER (Под заказ) в виде галочки. Если у товара отметить эту галочку, то его плашка со статусом наличия окрашивается в жёлтый цвет, а текст меняется на "под заказ". При добавлении поддержки такого статуса в типовое решение "Битроник 2" было решено отказаться от создания дополнительных сущностей и использовать уже имеющиеся в Битриксе стандартные параметры торгового каталога. Наиболее логичным нам представляется отображение статуса "Под заказ" в том случае, когда у товара включен количественный учет, доступное количество равно или меньше нулю, и разрешена покупка при отсутствии товара. Таким образом, у нас уже три статуса, которые зависят от параметров торгового каталога:
Статус товара:
Нет в наличии
Выполнены ВСЕ три условия: Доступное количество <= 0 Количественный учёт — ДА Разрешена покупка при отсутствии товара — НЕТ
Под заказ
Выполнены ВСЕ три условия: Доступное количество <= 0 Количественный учёт — ДА Разрешена покупка при отсутствии товара — ДА
В наличии
Все остальные случаи
Поскольку с точки зрения платформы такие товары имеют обычный статус СATALOG_AVAILABLE, они всегда отображаются в каталоге, их можно добавить в корзину и оформить заказ. Отличается статус только визуальной индикацией в шаблонах каталога. Также в обновлении 2.8.5 планируется добавить текст, который будет появляться при наведении курсора мыши на плашки со статусом "под заказ". Администратор сайта сможет редактировать этот текст и указать в нём сроки доставки или иную информацию о таких товарах.
Уважаемые коллеги, пожалуйста, напишите в комментариях, сталкивались ли вы в своей работе с необходимостью отображения дополнительных статусов товаров в интернет-магазинах на Битриксе, и как вы решали такие задачи. И нужно ли добавлять новые статусы наличия в стандартный функционал Битрикса, или эти задачи должны остаться на плечах разработчиков для Маркетплейса и решаться на уровне конкретных внедрений? Нам очень интересно узнать ваше мнение.
2. Зависимость статуса наличия от количества товара на отдельных складах. Начиная с версии 12.5 в Битриксе стало возможным создавать склады и заполнять имеющееся количество товара на каждом отдельном складе. При этом везде пишется, что количество товара на складах носит лишь информационный характер и не влияет на расчёт остатков товара и определения его наличия в магазине. Это действительно так, но только если не включен Складской учет. В отличие от обычного количественного учета складской учет нельзя включить или выключить для какого-либо отдельного товара. Этот функционал включается только для всего сайта целиком в настройках модуля Интернет-магазин. После включения функционала поля для редактирования как общего количества товара, так и количества товара на отдельных складах будут везде заблокированы. Изменять количество товара на складах можно будет только с помощью создания и проведения документов. Вместе с этим будет меняться и основное поле с общим количеством товара, которое и влияет на статус наличия товара. То есть, общее количество товара (СATALOG_QUANTITY) будет всегда равно сумме остатков по всем складам при постоянной работе складского учёта. Более подробно с этим функционалом можно познакомиться в учебных курсах: Количественный учет, Складской учет.
3. Когда в бой вступают торговые предложения (SKU). Появление в каталоге магазина товаров с торговыми предложениями несколько усложняет архитектуру каталога и понимание того, как, где и какие статусы наличия должны выводиться. Связано это с тем, что остаток товара и параметры количественного учёта в Битриксе можно задавать как у самого товара, так и у его отдельных торговых предложений. И даже если вы не видите вкладку "Торговый каталог" у основного товара, а лишь вкладку "Торговые предложения", эти значения всё равно будут вычисляться для основного товара отдельно. В последней заключительной третьей части этой статьи я постараюсь распутать этот клубок и вывести на чистую воду самые тёмные уголки стандартного шаблона Eshop для интернет-магазинов, который многие берут за основу при создании своих шаблонов.
Для начала рассмотрим небольшой пример, как отображались отсутствующие торговые предложения в предпоследней версии Eshop:
Как видим, отсутствующие товары имеют отличную индикацию. Но что делать, если мы не хотим отображать в списке отсутствующие товары? Для этого в комплексном компоненте bitrix:catalog имеется замечательный параметр "Не отображать товары, которых нет на складах" (HIDE_NOT_AVAILABLE).
После включения этой опции наблюдаем весьма странный и неожиданный результат:
Корректно отобразился только костюм "Огонь в ночи". У него исчезли те торговые предложения, которые мы не сможем купить, а сам товар остался в списке, потому что в его настройках мы отключили количественный учет. Остальные товары с торговыми предложениями исчезли из списка, хотя у них и имеются торговые предложения в наличии, потому что для самих товаров не заданы никакие параметры для определения их наличия. Так же мы отключили предварительно количественный учет для основного товара "Вечерний спорт", чтобы он остался в списке. Но у него нет в наличии ни одного из торговых предложений, поэтому шаблон начал считать, что это просто обычный товар и предлагает нам купить его, что по сути своей бессмысленно. Ещё больше нестыковок появляется, если сюда добавить использование фильтра:
По проблеме с фильтром и отсутствующими SKU 29.04.15 создали обращение в техподдержку 1С-Битрикс №623234, нам ответили, что опция HIDE_NOT_AVAILABLE пока что не работает с торговыми предложениями. На основе обращения была создана заявка в отдел разработки №47001. Больше никаких сообщений от отдела разработки с тех пор не приходило.
К счастью, хотя бы одну из этих проблем в Битрикс исправили в новом Eshop 15.5. Когда мы захотим скрыть отсутствующие товары, у товаров, чьих торговых предложений нет в наличии, не будет кнопки покупки.
Чтобы скрыть такой товар из списка нужно дополнительно зайти в настройки торгового каталога для этого отдельного товара, включить количественный учет, запретить покупку при отсутствии товара и выставить количество в 0. Но когда его торговые предложения снова появятся на складе, нужно заходить в настройки основного товара и снова отключать для него количественный учет, чтобы он появился в списке. Битрикс пока что не хочет брать на себя обязательства по автоматическому отслеживанию и синхронизации состояния наличия основного товара и его торговых предложений.
В некоторых случаях владельцы магазинов не хотят давать возможность покупки товара с торговыми предложениями в списке, а только с детальной страницы. Например, потому что этих характеристик очень много. Или же просто используется принципиально иной подход: торговые предложения выводятся в виде таблицы только на детальной странице товара. В таких случаях нужно скрыть кнопку покупки в списке, вывести минимальную цену из имеющихся у товара торговых предложений с пометкой "от …" и добавить пометку, что для покупки нужно перейти на детальную страницу. Как быть со статусом наличия товара в этом случае? При разработке своих шаблонов руководствуемся следующим принципом:
Если у товара есть хотя бы одно торговое предложение в наличии, ставим статус "В наличии". Если таких нет, но есть хотя бы одно торговое предложение со статусом "Под заказ", ставим аналогичный статус. Если все торговые предложения отсутствуют на складе, ставим статус "Нет в наличии".
Для того, чтобы обобщить всё вышесказанное про торговые предложения, я составил вот такую таблицу:
На данный момент самой большой проблемой остаётся тот факт, что товары с торговыми предложениями исчезают из списка, даже если торговые предложения есть в наличии, но главному товару мы задали отсутствие в настройках торгового каталога. На уровне шаблона с этим тяжело бороться, так как исчезают товары из $arResult ещё на этапе работы стандартных компонентов Битрикса.
Сколько времени понадобится Битриксу, чтобы исправить эту ситуацию, а так же починить работу фильтра для торговых предложений с одновременным скрытием отсутствующих товаров, нам неизвестно. Но мы как всегда верим, надеемся, ждём…