Если после загрузки каталога товары появились, а размеры и цвета не импортируются, проблема обычно находится не в самом XLSX или CSV. Чаще источник и интернет-магазин по-разному описывают один товар: в прайсе каждая комбинация записана отдельной строкой, а CMS ожидает родительский товар, атрибуты и связанные вариации.

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

Перед исправлением остановите автоматическое обновление

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

  • Не удаляйте существующие товары до выяснения причины.
  • Не меняйте одновременно структуру файла и настройки модуля импорта.
  • Зафиксируйте количество товаров и вариаций до проверки.
  • Сохраните несколько SKU, на которых ошибка воспроизводится стабильно.
  • Проверьте, не обрезает ли импорт пустые или числовые значения атрибутов.

Определите, как магазин хранит варианты товара

У футболки одного фасона могут быть цвета и размеры. Для покупателя это один товар с выбором параметров, но в базе обычно существуют родительская карточка и несколько вариаций. Каждая вариация имеет собственный SKU, остаток, иногда цену, изображение и штрихкод.

  • Родительский товар: название, описание, бренд, категория и общая галерея.
  • Атрибуты: например, «Цвет» и «Размер», разрешенные для создания вариаций.
  • Вариация: конкретная комбинация, например «Синий / 48».
  • SKU вариации: уникальный и постоянный идентификатор конкретной позиции.
  • Группирующий ключ: артикул модели, по которому строки объединяются в одну карточку.

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

Проверьте исходный файл

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

  • model_id или parent_sku — общий ключ модели;
  • sku — уникальный артикул вариации;
  • name — название товара;
  • color — цвет без дополнительного рекламного текста;
  • size — размер в согласованном формате;
  • price и old_price — актуальная и прежняя цена;
  • stock или quantity — остаток именно этой вариации;
  • image_url — изображение модели или конкретного цвета;
  • category, brand и другие характеристики.

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

Не используйте название как идентификатор

Название товара может измениться, а размеры и цвета часто повторяются у сотен позиций. Для обновления нужен стабильный ключ. Обычно родителя связывают по артикулу модели, а вариацию — по SKU поставщика или собственному составному идентификатору.

Составной ключ допустим, если поставщик не передает SKU: например, model_id + нормализованный цвет + нормализованный размер. Правило должно быть неизменным при каждом запуске. Иначе обновление создаст новые вариации вместо изменения существующих.

Нормализуйте размеры и цвета

Для программы «синий», «Синий», «синий » и «blue» могут быть четырьмя разными значениями. До загрузки приведите справочники к единому виду. При этом исходное значение поставщика лучше сохранить отдельно, чтобы можно было проверить преобразование.

  • Удаляйте пробелы в начале и конце, непечатаемые символы и лишние переносы.
  • Сопоставляйте синонимы цветов через словарь, а не заменой части строки.
  • Не превращайте размеры 40, 42 и 44 в числа, если система ожидает текстовые значения.
  • Отдельно обрабатывайте международные размеры XS–XXL и российскую сетку.
  • Не объединяйте «темно-синий» и «синий», если это разные варианты каталога.
  • Фиксируйте единицы измерения для обуви, одежды и габаритов товара.

Проверьте сопоставление полей в модуле импорта

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

  • Тип товара должен поддерживать вариации.
  • Атрибут должен быть включен для вариантов, а не только показан в характеристиках.
  • Значения должны создаваться или находиться в нужном справочнике.
  • Вариация должна ссылаться на правильного родителя.
  • SKU, цена и остаток должны назначаться вариации, а не родительской карточке.
  • При обновлении модуль должен искать существующую запись по стабильному ключу.

Загружайте данные в правильном порядке

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

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

Разделите создание и обновление

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

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

Проверьте остатки и цены вариаций

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

  • У каждой доступной вариации есть цена и корректный остаток.
  • Недоступная комбинация не выбирается как доступная.
  • Цена карточки правильно рассчитывается из цен вариантов.
  • Выбор цвета не сбрасывает выбранный размер без причины.
  • Корзина получает SKU выбранной вариации, а не артикул родителя.
  • Заказ уменьшает остаток именно купленного варианта.

Как диагностировать импорт по журналу

Фраза «импорт завершен» не означает, что все строки обработаны. В журнале нужны счетчики прочитанных, созданных, обновленных, пропущенных и ошибочных записей. Для каждой ошибки сохраняйте номер строки, SKU и понятную причину.

  • Не найден родительский товар.
  • Повторяется SKU вариации.
  • Пустое обязательное значение цвета или размера.
  • Значение не прошло нормализацию или отсутствует в справочнике.
  • Комбинация атрибутов уже существует у этого родителя.
  • Цена или остаток имеют недопустимый формат.
  • Изображение недоступно или превышает установленный лимит.

Проведите контрольный импорт

  1. Выберите 3–5 моделей: простую, с несколькими цветами и с полной сеткой размеров.
  2. Очистите тестовый набор от результатов предыдущих неудачных запусков.
  3. Запустите импорт и сравните счетчики с количеством строк файла.
  4. Откройте карточки и проверьте все комбинации атрибутов.
  5. Измените цену и остаток в копии файла и выполните повторный импорт.
  6. Убедитесь, что записи обновились без дублей и потери ручных данных.
  7. Только после этого расширяйте загрузку на весь каталог.

Типичные ошибки

  • Использовать одну колонку «Размер/цвет» вместо двух самостоятельных атрибутов.
  • Создавать нового родителя для каждой строки прайса.
  • Назначать один SKU всем вариациям модели.
  • Смешивать артикул поставщика, штрихкод и внутренний ID.
  • Сопоставлять товары по названию, которое меняется в новом прайсе.
  • Загружать остаток на родителя и считать варианты доступными автоматически.
  • Удалять все отсутствующие позиции после частично обработанного файла.
  • Запускать полный импорт без резервной копии и тестового набора.

Как предотвратить повторение проблемы

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

  • Храните историю запусков и контрольные суммы файлов.
  • Проверяйте уникальность SKU до записи в магазин.
  • Версионируйте словари цветов, размеров и категорий.
  • Используйте транзакции или промежуточные таблицы для критичных обновлений.
  • Добавьте уведомление о пропущенных строках и резких изменениях остатков.
  • Регулярно проверяйте несколько контрольных товаров после импорта.

Итог

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

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