Если после загрузки каталога товары появились, а размеры и цвета не импортируются, проблема обычно находится не в самом 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, цена и остаток должны назначаться вариации, а не родительской карточке.
- При обновлении модуль должен искать существующую запись по стабильному ключу.
Загружайте данные в правильном порядке
Надежный импорт выполняется поэтапно. Нельзя привязать вариацию к родителю или значению справочника, которых еще нет. Даже если модуль делает все за один запуск, внутри процесса порядок должен сохраняться.
- Прочитать файл и проверить обязательные колонки.
- Нормализовать значения и сформировать стабильные идентификаторы.
- Создать или обновить категории, бренды и справочники атрибутов.
- Создать или обновить родительские товары.
- Создать значения размеров и цветов.
- Создать или обновить вариации и связать их с родителями.
- Обновить цены, остатки, изображения и статус доступности.
- Записать результат каждой строки в журнал импорта.
Разделите создание и обновление
Для первой загрузки и регулярного обновления нужны разные правила. При ежедневном прайсе обычно меняются цены и остатки, но не название родителя и не структура атрибутов. Ограничение обновляемых полей снижает риск случайно удалить описания, фотографии или SEO-данные, добавленные вручную.
- Новая вариация создается только при неизвестном SKU.
- Существующая вариация обновляется по SKU, а не по номеру строки.
- Отсутствующая в новом файле позиция не удаляется немедленно.
- Снятие с продажи выполняется отдельным правилом после полного успешного импорта.
- Пустая ячейка не должна затирать рабочее значение без явного разрешения.
- Ручные изменения защищаются списком полей, которые импорт не трогает.
Проверьте остатки и цены вариаций
Карточка может показывать размер, но не позволять добавить его в корзину, если остаток хранится на родителе или вариация не получила цену. После импорта проверьте не только внешний вид, но и полный путь покупки.
- У каждой доступной вариации есть цена и корректный остаток.
- Недоступная комбинация не выбирается как доступная.
- Цена карточки правильно рассчитывается из цен вариантов.
- Выбор цвета не сбрасывает выбранный размер без причины.
- Корзина получает SKU выбранной вариации, а не артикул родителя.
- Заказ уменьшает остаток именно купленного варианта.
Как диагностировать импорт по журналу
Фраза «импорт завершен» не означает, что все строки обработаны. В журнале нужны счетчики прочитанных, созданных, обновленных, пропущенных и ошибочных записей. Для каждой ошибки сохраняйте номер строки, SKU и понятную причину.
- Не найден родительский товар.
- Повторяется SKU вариации.
- Пустое обязательное значение цвета или размера.
- Значение не прошло нормализацию или отсутствует в справочнике.
- Комбинация атрибутов уже существует у этого родителя.
- Цена или остаток имеют недопустимый формат.
- Изображение недоступно или превышает установленный лимит.
Проведите контрольный импорт
- Выберите 3–5 моделей: простую, с несколькими цветами и с полной сеткой размеров.
- Очистите тестовый набор от результатов предыдущих неудачных запусков.
- Запустите импорт и сравните счетчики с количеством строк файла.
- Откройте карточки и проверьте все комбинации атрибутов.
- Измените цену и остаток в копии файла и выполните повторный импорт.
- Убедитесь, что записи обновились без дублей и потери ручных данных.
- Только после этого расширяйте загрузку на весь каталог.
Типичные ошибки
- Использовать одну колонку «Размер/цвет» вместо двух самостоятельных атрибутов.
- Создавать нового родителя для каждой строки прайса.
- Назначать один SKU всем вариациям модели.
- Смешивать артикул поставщика, штрихкод и внутренний ID.
- Сопоставлять товары по названию, которое меняется в новом прайсе.
- Загружать остаток на родителя и считать варианты доступными автоматически.
- Удалять все отсутствующие позиции после частично обработанного файла.
- Запускать полный импорт без резервной копии и тестового набора.
Как предотвратить повторение проблемы
Зафиксируйте формат обмена как контракт: обязательные колонки, типы значений, правила идентификаторов и допустимые справочники. Автоматическая проверка должна останавливать загрузку до изменения каталога, если пропали колонки, резко уменьшилось число строк или выросла доля ошибок.
- Храните историю запусков и контрольные суммы файлов.
- Проверяйте уникальность SKU до записи в магазин.
- Версионируйте словари цветов, размеров и категорий.
- Используйте транзакции или промежуточные таблицы для критичных обновлений.
- Добавьте уведомление о пропущенных строках и резких изменениях остатков.
- Регулярно проверяйте несколько контрольных товаров после импорта.
Итог
Когда размеры и цвета не импортируются, исправлять нужно связь между исходными строками, атрибутами, родительскими товарами и вариациями. Стабильные SKU, нормализованные справочники, корректное сопоставление полей и контрольный повторный запуск позволяют восстановить варианты без дублей и случайной потери каталога.
Если нужно настроить или починить импорт, я могу разобрать файл поставщика и структуру магазина, подготовить преобразование данных, связать размеры и цвета с вариациями, настроить безопасное обновление цен и остатков и проверить результат на тестовой выборке перед полной загрузкой.