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

Не выгружаются характеристики из 1С - торговые предложения после обмена

Товары после обмена на месте, а выбора размера и цвета в карточке нет. Разбираем причины по убыванию частоты: характеристики теряются на четырёх разных участках.

С чего начать

Смотрим, куда вообще приехали предложения:

use Bitrix\Catalog\CatalogIblockTable;
$res = CatalogIblockTable::getList(['select' => ['IBLOCK_ID', 'PRODUCT_IBLOCK_ID', 'SKU_PROPERTY_ID']]);
while ($row = $res->fetch()) {
printf("инфоблок=%d товарный=%s свойство связи=%s\n",
$row['IBLOCK_ID'], $row['PRODUCT_IBLOCK_ID'] ?: '-', $row['SKU_PROPERTY_ID'] ?: '-');
}
// строка с заполненным товарным инфоблоком и есть инфоблок предложений

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

Считаем, что реально приехало:

printf("товаров=%d предложений=%d\n",
CIBlockElement::GetList([], ['IBLOCK_ID' => 5, 'ACTIVE' => 'Y'], []),
CIBlockElement::GetList([], ['IBLOCK_ID' => 6, 'ACTIVE' => 'Y'], []));
// предложений заметно меньше товаров - характеристики выгрузились не у всех
$sku = CCatalogSku::GetProductInfo($offerId); // вернёт товар-владельца
var_dump($sku); // false означает потерянную связь

Число предложений сравнивают с числом позиций в учётной системе. Пустой результат означает потерю на выгрузке, а заметно меньшее - выгрузку части номенклатуры без характеристик.

Ищем предложения без привязки к товару:

SELECT COUNT(*) FROM b_iblock_element e
LEFT JOIN b_iblock_element_prop_s6 p ON p.IBLOCK_ELEMENT_ID = e.ID
WHERE e.IBLOCK_ID = 6 AND (p.PROPERTY_11 IS NULL OR p.PROPERTY_11 = 0);
-- PROPERTY_11 здесь свойство связи с товаром, номер берут из настроек каталога

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

Причины

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

    ПризнакПосле обмена есть только товары, отдельного инфоблока предложений в списке нет.

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

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

  2. В учётной системе это не характеристики примерно 25% случаев

    ПризнакРазмеры и цвета заведены отдельными позициями номенклатуры или реквизитами.

    ПроверкаСмотрим карточку номенклатуры в учётной системе: используется ли механизм характеристик.

    Что делатьПереводим номенклатуру на характеристики либо принимаем их обычными товарами без выбора в карточке.

  3. Свойства характеристик не приехали примерно 20% случаев

    ПризнакПредложения есть, но выбирать в карточке нечего: у них нет размера и цвета.

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

    Что делатьПроверяем настройки выгрузки свойств характеристик и повторяем полный обмен с новыми настройками.

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

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

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

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

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

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

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

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

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

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

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

Можно ли выгрузить характеристики в свойства товара?

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

Что делать, если у товара одна характеристика?

Она всё равно приезжает предложением. Карточка при этом показывает цену предложения, а не самого товара.

Почему после смены инфоблока пропали все размеры?

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

Смежное

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