Веб

Импорт атрибута Да/Нет из CSV в Magento 2.4.8

Как правильно импортировать пользовательский атрибут типа 'Да/Нет' (upgrade_eligible) из CSV в Magento 2.4.8-p3. Используйте значения 1/0 без кавычек, UTF-8 без BOM, reindex после импорта. Пошаговая инструкция и решение ошибок.

Как правильно импортировать пользовательские атрибуты типа “Да/Нет” из CSV в Magento 2.4.8-p3?

У меня возникли difficulties с импортом пользовательского атрибута типа “Да/Нет” с названием ‘upgrade_eligible’ из CSV-файла в Magento 2.4.8-p3. Атрибут настроен как тип “Да/Нет” в настройках атрибута, но процесс импорта не распознает значения правильно.

Я пробовал различные форматы значений, включая:

  • Да и Нет
  • 1 и 0
  • ‘Да’ и ‘Нет’ (в кавычках)

Я также пробовал изменять тип атрибута на Выпадающий список с опциями “да” и “нет”, а также на Множественный выбор, но ни один из этих подходов не оказался успешным.

Интересно, что когда я вручную устанавливаю атрибут upgrade_eligible на Да в интерфейсе товара, он правильно экспортируется в CSV-файл.

Какой правильный метод для импорта логических значений через CSV в Magento? Мне нужно решение, которое позволит мне:

  1. Успешно импортировать логические значения
  2. Использовать атрибут для фильтрации товаров как на фронтенде, так и в бэкенде
  3. Применять атрибут в акциях и правилах корзины

Для корректного импорта пользовательского атрибута типа Да/Нет (например upgrade_eligible) в Magento 2.4.8‑p3 используйте в CSV сырые целочисленные значения 1 (Да) и 0 (Нет) без дополнительных слов или кавычек; поместите значение в отдельный столбец с именем кода атрибута или — при корректном формате — в колонку additional_attributes. Проверьте код атрибута, кодировку CSV (UTF‑8 без BOM), и после импорта выполните reindex/очистку кэша — это решает большинство проблем с распознаванием булевых значений.


Содержание


Как Magento 2 обрабатывает атрибут “Да/Нет” при CSV импорте

Magento хранит булевые (Yes/No) атрибуты как целочисленные значения в EAV‑структуре (обычно в таблице catalog_product_entity_int). На уровне импорта движок ожидает простое представление: 1 для «Да» и 0 для «Нет». Текстовые варианты («Да», «Нет», «Yes», «No», «Ja», «Nein») иногда используются в интерфейсе или при экспорте, но не всегда надёжны при импорте — в зависимости от локали/версия Magento движок может требовать именно чисел. Подробнее — примерный разбор и решения см. в обсуждениях на Magento Stack Exchange и StackOverflow: Product custom attribute import with CSV и Magento Yes/No Import from CSV Issue.

Кстати: в некоторых версиях встречаются баги с обработкой колонки additional_attributes (см. баг-репорт), поэтому надёжнее использовать отдельный столбец с кодом атрибута или проверять точный формат для вашей версии Magento: https://github.com/magento/magento2/issues/35879


Пошаговая инструкция: CSV импорт атрибута upgrade_eligible в Magento 2

  1. Проверка атрибута в админке
  • Зайдите: Stores → Attributes → Product → найдите upgrade_eligible. Убедитесь, что «Catalog Input Type for Store Owner» = Yes/No и что код атрибута — точно upgrade_eligible (в нижнем регистре, без пробелов).
  1. Подготовьте CSV (используйте экспорт как эталон)
  • Экспортируйте один товар, где upgrade_eligible установлен в Да — посмотрите, как Magento формирует колонку (топ‑левел столбец или additional_attributes). Экспорт поможет понять формат. См. пример: Product custom attribute import with CSV.
  • Формат CSV, который обычно работает:
  • Вариант A — отдельный столбец (рекомендуемый):
csv
sku,upgrade_eligible,price
my-sku-001,1,99.00
  • Вариант B — additional_attributes (если ваша версия поддерживает):
csv
sku,additional_attributes
my-sku-001,upgrade_eligible=1
  • Важно: значение должно быть 1 или 0 (не "1", не Да). Кодировка — UTF‑8 без BOM; разделитель полей — тот, что вы укажете в форме импорта (обычно ,).
  1. Импорт в админке
  • System → Data Transfer → Import → Entity Type = Products.
  • Import Behavior = Add/Update (или Replace — по потребности).
  • Выберите файл и поле-разделитель. Нажмите Check Data. Если проверка прошла — Import.
  1. После импорта
  • Выполните reindex и очистите кэш: php bin/magento indexer:reindex и php bin/magento cache:flush (или через админку).
  • Проверьте, что в админке значение отображается и что в БД в catalog_product_entity_int появились записи для нужного attribute_id.

Если импорт не проходит, попробуйте сначала минимальный CSV с одним SKU и только колонками sku и upgrade_eligible — проще отловить ошибку.


Типичные ошибки и как их диагностировать

  • Значения в CSV — текстовые («Да/Нет») вместо 1/0. Решение: заменить на 1/0 либо проверить локаль (иногда импорт ожидает локализованные метки). См. обсуждение о зависимостях от языка: https://magento.stackexchange.com/questions/65261/invalid-value-for-attribute-of-type-yes-no-when-creating-product-programma
  • Неправильный заголовок столбца: имя должно точно совпадать с кодом атрибута (upgrade_eligible). Без точного совпадения Magento игнорирует поле. Подсказка: используйте экспорт как шаблон.
  • Формат additional_attributes отличается в разных версиях Magento. В 2.x встречались баги, когда колонка игнорировалась — в таком случае создайте отдельный столбец с кодом атрибута (см. баг-репорт): https://github.com/magento/magento2/issues/35879
  • Кодировка/ BOM: если файл содержит BOM или не UTF‑8, импорт может вести себя странно. Откройте CSV в текстовом редакторе (VS Code, Notepad++) и сохраните как UTF‑8 без BOM.
  • Проблемы с кавычками/пробелами: значение должно быть простым 1 или 0. Кавычки или лишние пробелы могут сломать валидацию.
  • После импорта значение не видно в фронтенде/правилах — проверьте настройки атрибута (см. ниже) и выполните reindex/cache.

Если всё это не помогает, можно проверить в БД наличие записей (catalog_product_entity_int) и соответствие attribute_id в eav_attribute — это точный способ понять, записалось ли значение.


Как использовать атрибут для фильтров и правил корзины

Чтобы атрибут работал для фильтрации на фронтенде, в настройках атрибута включите видимость на витрине и опции для layered navigation (например «Use in Layered Navigation» / «Visible on Catalog Pages»). Для использования в условиях промо‑правил нужно включить опцию, дающую доступ атрибуту в условиях (обычно «Use for Promo Rule Conditions»). После изменения настроек не забудьте выполнить reindex и очистить кэш — атрибут появится в списках условий и для фильтров.

Если нужна фильтрация в админ‑гриде, проверьте параметры «Used in Admin Grid / Used in Admin Grid Filter» (если есть) или добавьте колонку/фильтр через расширение или кастомный модуль.

Замечание: некоторые атрибуты должны быть правильно настроены у набора атрибутов товара (attribute set/group), иначе они не применяются к продуктам и не участвуют в правилах.


Источники

  1. magento.stackexchange.com — Product custom attribute import with CSV Magento 2
  2. github.com/magento/magento2 — Can’t import additional_attributes 2.4.3 · Issue #35879
  3. magento.stackexchange.com — “Invalid value for ‘attribute’ (of type Yes/No) when creating product programmatically”
  4. stackoverflow.com — Magento Yes/No Import from CSV Issue
  5. github.com/magento/magento2 — Export: Attribute (Input Type Yes/No) Filter by ‘No’ Exports All Data · Issue #11973
  6. www.mgt-commerce.com — Magento 2 CSV Import: How To Import Products In Magento 2?
  7. wiki.bsscommerce.com — Import Export Product Attributes User Guide
  8. www.mag-manager.com — Required Magento 2 import values

Заключение

Коротко: в Magento 2.4.8‑p3 для надёжного импорта атрибута типа Да/Нет (upgrade_eligible) используйте числовые значения 1/0 без кавычек в столбце с точным кодом атрибута (или корректном формате additional_attributes), сохраните CSV в UTF‑8 без BOM, затем выполните reindex и очистку кэша. Если после этого проблема остаётся — экспорт одного товара с правильной настройкой атрибута и сравнение форматов решит загадку; при подозрении на баг проверьте соответствующие issue в репозитории Magento (ссылка выше).

Авторы
Проверено модерацией
Модерация