
Редакция Romanov Lab · Опубликовано
Покупатель выбирает размер и цвет, склад отгружает определённую позицию, а редактор хочет написать описание модели один раз. Торговые предложения помогают согласовать эти задачи. Ошибки начинаются, когда вариант одновременно живёт как самостоятельный товар, строка характеристики и позиция учётной системы. Тогда обновление создаёт дубли, остаток оказывается не у того объекта, а в заказ уходит соседний размер.
Сначала определите продаваемую единицу
Проверочный вопрос прост: что именно сотрудник склада должен положить в коробку по строке заказа? Если ответ зависит от размера, цвета или комплектации, эту комбинацию необходимо однозначно идентифицировать. Общее название модели не заменяет идентификатор продаваемого варианта.
В стандартной модели Битрикс используются связанные инфоблоки товаров и предложений. Родительская карточка объединяет описание модели, предложение представляет конкретный вариант; цена и остаток варианта относятся к предложению. Для простого товара без вариантов они относятся к самому товару. Структура разобрана в руководстве по товарам и торговым предложениям.
Не любую отличающуюся характеристику нужно превращать в SKU. Если покупатель не выбирает значение, оно не меняет отгружаемую позицию и не имеет отдельного учёта, достаточно свойства. Техническое описание материала, применимого ко всей модели, обычно находится у родителя. Цвет корпуса, по которому склад различает две позиции, относится к варианту.
Разберите ассортимент на конкретном примере
Возьмём учебную модель рабочей куртки «Север». Производитель выпускает синюю куртку в размерах M и L, а серую только в L. На сайте нужна одна общая карточка и три действительных предложения. Генерация всех сочетаний цветов и размеров создала бы четвёртый вариант, которого в ассортименте нет.
- Родительская карточка: модель «Север», назначение, общая таблица размеров, описание ткани, рекомендации по уходу.
- Синяя M: собственный идентификатор, артикул варианта, цена, остаток, выбранные цвет и размер.
- Синяя L: другой идентификатор и собственный остаток, даже если цена совпадает.
- Серая L: отдельный идентификатор и фотографии серого исполнения.
До разработки зафиксируйте поведение переключателя. При выборе серого цвета размер M не должен приводить к покупке синей куртки. Возможны разные интерфейсные решения: недоступная комбинация скрыта, отключена с объяснением или выбор размера сброшен. Важно, чтобы интерфейс ясно показывал фактически выбранное предложение.
Ещё один случай: набор из двух курток. Если он продаётся и учитывается как самостоятельный комплект, нельзя автоматически считать его размерным вариантом одной куртки. Сначала выясните, как устроены состав, учёт и возврат. Внешнее сходство карточек не означает одинаковую модель данных.
Разделите идентификаторы и подписи
Внутренний ID записи, внешний код интеграции, артикул и символьный код URL решают разные задачи. Название может меняться без появления нового товара; артикул не всегда уникален в нескольких источниках; URL зависит от устройства витрины. Для каждого участника обмена нужен явный договор о том, какое значение используется для сопоставления.
Связь предложения с родителем не следует определять по совпадению названий. В модуле каталога она задаётся отдельным свойством и настройками связанных инфоблоков. Требования к PRODUCT_IBLOCK_ID и SKU_PROPERTY_ID приведены в описании полей торгового каталога. При диагностике проверяют фактическую связь, а не только наличие вкладки предложений в интерфейсе.
Подготовьте реестр соответствий: внешний идентификатор модели, внешний идентификатор варианта, родитель на сайте, предложение на сайте, значимые характеристики. Он помогает отличить два дефекта. Если пришла существующая комбинация с новым внешним кодом, проблема может быть в источнике идентичности. Если существующее предложение прикреплено к другому родителю, проверяют правило связи и преобразование данных.
Не размножайте общие сведения
Решите, откуда берутся фотографии, документы и описания. Общее описание удобно хранить у модели, а фотографию исполнения у предложения. Но нужно определить поведение при пустом изображении варианта: использовать общую фотографию, показывать нейтральный вид или сообщать об отсутствии. Случайно оставшаяся фотография предыдущего выбранного цвета вводит покупателя в заблуждение.
Дублирование может быть осознанным, если получателю нужна самодостаточная запись. Например, внешняя выгрузка требует полное название каждого варианта. Тогда его можно формировать из модели, цвета и размера. Внутри CMS это не повод вручную поддерживать три одинаковых описания. Зафиксируйте, какое поле исходное, а какое вычисляемое.
Автоматический генератор предложений полезен только после проверки допустимых сочетаний. Штатная форма генерации работает с выбранными свойствами и значениями; она не знает коммерческих ограничений конкретного поставщика. Перед массовым созданием проверьте одну модель и предусмотрите разбор уже существующих комбинаций.
Почему цена и наличие расходятся
Разберите цепочку по выбранному предложению: запись существует, активна, связана с нужной моделью, имеет нужные товарные параметры, доступную пользователю цену и ожидаемый остаток. Затем сравните то, что выбрал интерфейс, с тем, что отправлено в корзину. Надпись «от 4 000» на общей карточке сама по себе не подтверждает цену конкретного размера.
Различайте физический остаток и разрешение покупки. Продажа под заказ может быть разрешена при нулевом количестве; скрытый из каталога вариант может сохраняться в ранее созданном заказе. Не исправляйте любое расхождение установкой положительного остатка. Сначала согласуйте бизнес-правило и проверьте его реализацию для обычного посетителя и покупателя с отдельным типом цены.
Если у варианта нет цены, интерфейс должен перейти в предусмотренное состояние. Наследовать цену другого предложения без договорённости опасно. При смене характеристики проверяйте одновременно цену, наличие, фотографию, подпись кнопки и итоговую позицию корзины: обновление одного текста не гарантирует согласованности всего экрана.
Повторный импорт должен менять существующие варианты
На тестовой копии проведите последовательность из нескольких обменов. Сначала создайте модель с тремя предложениями. Затем измените цену одного, остаток другого и название модели. Повторите тот же пакет без изменений. В конце исключите один вариант по заранее согласованному правилу.
После каждого шага сравнивайте идентификаторы и количество записей. Повтор не должен создавать вторую синюю M только из-за обновлённого названия. Исчезновение варианта из пакета не всегда означает удаление из ассортимента: пакет может быть частичным. Такое решение принимается в протоколе обмена, а не по отсутствию строки в произвольной выгрузке.
Не удаляйте подозрительный дубль до проверки связей. На него могут ссылаться корзины, заказы, избранное и внешние системы. Сначала выберите основную запись, исследуйте зависимости и подготовьте безопасный перенос или деактивацию. Очистка только видимой витрины оставит проблему в учёте.
Приёмка от карточки до заказа
- Откройте каждую допустимую комбинацию и убедитесь, что выбранное предложение однозначно.
- Попробуйте несуществующее сочетание: приобрести его нельзя, причина понятна.
- Добавьте два размера одной модели в корзину. Они должны остаться разными позициями.
- Измените количество и проверьте цену именно соответствующего варианта.
- Создайте тестовый заказ и сопоставьте его идентификаторы с учётной системой.
- Повторите проверку после обновления данных и с уже открытой карточкой.
- Проверьте отсутствие дублей после повторной обработки того же набора.
Техническая готовность SKU означает, что модель, предложение и строка заказа согласованы на всём пути. Вопросы поисковых адресов вариантов решаются отдельно: правильная структура каталога необходима для торговли, но сама по себе не определяет стратегию индексирования.
Нужен план для вашего проекта? Напишите нам в Telegram или по электронной почте. Обсудим разработку, продвижение или поддержку сайта.


