Перейти к содержимому

Торговые предложения не выводятся - разбор причин

В карточке товара нет выбора размера или цвета, а предложения в инфоблоке есть. Разбираем причины по убыванию частоты, начиная со связи инфоблоков.

С чего начать

Проверяем, знает ли каталог о связке инфоблоков:

$info = \CCatalogSKU::GetInfoByProductIBlock($productIblockId);
print_r($info);
// пусто - инфоблок товаров не связан с инфоблоком предложений
// в ответе видно инфоблок предложений и свойство связи
// связку задают в настройках каталога, а не в свойствах элементов

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

Смотрим сами предложения товара:

$offers = \CCatalogSKU::getOffersList($productId);
print_r($offers[$productId] ?? []);
// пустой список - предложения не привязаны к этому товару
// привязку хранит свойство предложения, а не свойство товара
// второй аргумент - инфоблок предложений, ноль означает автоопределение

Предложение указывает на родителя своим свойством привязки. Элемент, лежащий в нужном инфоблоке без заполненной привязки, для карточки товара не существует.

Проверяем товарные параметры предложения:

$row = \Bitrix\Catalog\ProductTable::getRow([
'select' => ['ID', 'TYPE', 'AVAILABLE', 'QUANTITY'],
'filter' => ['=ID' => $offerId],
]);
print_r($row);
// записи нет - элемент не заведён товаром и в продажу не попадёт
// TYPE = 4 у предложения, 3 у родительской карточки с предложениями
// TYPE = 5 означает предложение с потерянной привязкой к родителю

Элемент инфоблока становится товаром только после добавления товарных параметров. Без них предложение остаётся обычным элементом: у него нет ни типа, ни признака доступности.

Причины

  1. Инфоблоки не связаны как товары и предложения примерно 30% случаев

    ПризнакКарточка показывает обычный товар, выбора вариантов нет ни у одного товара.

    ПроверкаСмотрим настройки торгового каталога у инфоблока товаров и наличие связи с инфоблоком предложений.

    Что делатьВключаем у инфоблока признак наличия торговых предложений: свойство связи заведётся само.

  2. У предложения не заполнена привязка к товару примерно 25% случаев

    ПризнакПредложения лежат в своём инфоблоке, но список предложений товара пуст.

    ПроверкаОткрываем предложение и смотрим значение свойства привязки к родительской карточке.

    Что делатьЗаполняем привязку: без неё предложение остаётся сиротой и в карточке товара не появляется.

  3. Свойство отбора неподходящего типа примерно 20% случаев

    ПризнакПредложения есть, а переключателя размера или цвета в карточке нет.

    ПроверкаСмотрим тип свойства, по которому идёт выбор, и его множественность.

    Что делатьБерём для отбора немножественное свойство типа список, справочник или привязка к элементам.

  4. Предложение не заведено товаром примерно 15% случаев

    ПризнакПредложение видно в списке элементов, но не участвует в продаже и не имеет доступности.

    ПроверкаПроверяем наличие товарных параметров у предложения и его тип.

    Что делатьДобавляем товарные параметры предложению: одного элемента инфоблока для продажи мало.

  5. У предложения нет цены или остатка примерно 10% случаев

    ПризнакВариант в списке есть, но выбрать его нельзя или цена показывается пустой.

    ПроверкаСмотрим цены предложения по его идентификатору и остаток при включённом складском учёте.

    Что делатьЗадаём цену именно предложению: цена родительской карточки в расчёт не идёт.

Частые вопросы

По каким свойствам покупатель выбирает вариант?

По немножественным свойствам типа список, справочник и привязка к элементам. Строки, числа и множественные свойства для отбора вариантов не годятся.

Почему родительская карточка не добавляется в корзину?

Родитель с предложениями сам по себе не продаётся: в корзину идёт конкретное предложение. Это тип товара, а не ошибка настройки.

Можно ли завести предложения в том же инфоблоке?

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

Почему после обмена с 1С предложения пропали?

Обмен перезаписал привязку или создал предложения в другом инфоблоке. Проверяют связь инфоблоков и значение свойства привязки у нескольких предложений.

Где задавать остатки для товара с вариантами?

У каждого предложения отдельно: складские остатки и штрихкоды принадлежат конкретному варианту, а не родительской карточке.

Смежное

Первоисточник