Битрикс · 6 мин

Торговые предложения Битрикс: товар и варианты без дублей

Как отделить общую карточку от продаваемого варианта, распределить цены и остатки и проверить SKU на повторном импорте и в корзине.

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

Редакция Romanov Lab · Опубликовано

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

Сначала определите продаваемую единицу

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

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

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

Разберите ассортимент на конкретном примере

Возьмём учебную модель рабочей куртки «Север». Производитель выпускает синюю куртку в размерах M и L, а серую только в L. На сайте нужна одна общая карточка и три действительных предложения. Генерация всех сочетаний цветов и размеров создала бы четвёртый вариант, которого в ассортименте нет.

  • Родительская карточка: модель «Север», назначение, общая таблица размеров, описание ткани, рекомендации по уходу.
  • Синяя M: собственный идентификатор, артикул варианта, цена, остаток, выбранные цвет и размер.
  • Синяя L: другой идентификатор и собственный остаток, даже если цена совпадает.
  • Серая L: отдельный идентификатор и фотографии серого исполнения.

До разработки зафиксируйте поведение переключателя. При выборе серого цвета размер M не должен приводить к покупке синей куртки. Возможны разные интерфейсные решения: недоступная комбинация скрыта, отключена с объяснением или выбор размера сброшен. Важно, чтобы интерфейс ясно показывал фактически выбранное предложение.

Ещё один случай: набор из двух курток. Если он продаётся и учитывается как самостоятельный комплект, нельзя автоматически считать его размерным вариантом одной куртки. Сначала выясните, как устроены состав, учёт и возврат. Внешнее сходство карточек не означает одинаковую модель данных.

Разделите идентификаторы и подписи

Внутренний ID записи, внешний код интеграции, артикул и символьный код URL решают разные задачи. Название может меняться без появления нового товара; артикул не всегда уникален в нескольких источниках; URL зависит от устройства витрины. Для каждого участника обмена нужен явный договор о том, какое значение используется для сопоставления.

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

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

Не размножайте общие сведения

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

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

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

Почему цена и наличие расходятся

Разберите цепочку по выбранному предложению: запись существует, активна, связана с нужной моделью, имеет нужные товарные параметры, доступную пользователю цену и ожидаемый остаток. Затем сравните то, что выбрал интерфейс, с тем, что отправлено в корзину. Надпись «от 4 000» на общей карточке сама по себе не подтверждает цену конкретного размера.

Различайте физический остаток и разрешение покупки. Продажа под заказ может быть разрешена при нулевом количестве; скрытый из каталога вариант может сохраняться в ранее созданном заказе. Не исправляйте любое расхождение установкой положительного остатка. Сначала согласуйте бизнес-правило и проверьте его реализацию для обычного посетителя и покупателя с отдельным типом цены.

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

Повторный импорт должен менять существующие варианты

На тестовой копии проведите последовательность из нескольких обменов. Сначала создайте модель с тремя предложениями. Затем измените цену одного, остаток другого и название модели. Повторите тот же пакет без изменений. В конце исключите один вариант по заранее согласованному правилу.

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

Не удаляйте подозрительный дубль до проверки связей. На него могут ссылаться корзины, заказы, избранное и внешние системы. Сначала выберите основную запись, исследуйте зависимости и подготовьте безопасный перенос или деактивацию. Очистка только видимой витрины оставит проблему в учёте.

Приёмка от карточки до заказа

  1. Откройте каждую допустимую комбинацию и убедитесь, что выбранное предложение однозначно.
  2. Попробуйте несуществующее сочетание: приобрести его нельзя, причина понятна.
  3. Добавьте два размера одной модели в корзину. Они должны остаться разными позициями.
  4. Измените количество и проверьте цену именно соответствующего варианта.
  5. Создайте тестовый заказ и сопоставьте его идентификаторы с учётной системой.
  6. Повторите проверку после обновления данных и с уже открытой карточкой.
  7. Проверьте отсутствие дублей после повторной обработки того же набора.

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

Нужен план для вашего проекта? Напишите нам в Telegram или по электронной почте. Обсудим разработку, продвижение или поддержку сайта.

Читайте также