Настройка импорта/экспорта товаров Magento 2

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

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка импорта/экспорта товаров Magento 2
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка импорта/экспорта товаров Magento 2

Импорт/экспорт — одна из наиболее нагруженных операций в Magento 2. Встроенный механизм работает через CSV с жёстко определённой схемой колонок. При неправильной конфигурации импорт 10 000 SKU может занимать несколько часов и падать с memory/timeout ошибками. Правильная настройка batch-размеров, индексации и управления памятью решает большинство проблем.

Форматы и структура CSV

Magento 2 поддерживает импорт следующих сущностей: catalog_product, catalog_category, customer, customer_address, customer_finance, stock_sources (MSI).

Обязательные колонки для продуктов:

Колонка Описание Пример
sku Уникальный идентификатор prod-001
store_view_code Пусто = admin scope ru, en
attribute_set_code Набор атрибутов Default
product_type Тип товара simple, configurable
name Название Куртка зимняя
price Цена 1299.00
qty Количество (legacy, без MSI) 100
visibility Видимость Catalog, Search
status Статус 1

Для конфигурируемых товаров необходимы дополнительные колонки: configurable_variations и configurable_variation_labels.

sku,attribute_set_code,product_type,name,price,configurable_variations,configurable_variation_labels
jacket-base,Default,configurable,Куртка зимняя,1299.00,"sku=jacket-red-s,color=Red,size=S|sku=jacket-red-m,color=Red,size=M","Color=Цвет,Size=Размер"
jacket-red-s,Default,simple,Куртка зимняя Красная S,1299.00,,,
jacket-red-m,Default,simple,Куртка зимняя Красная M,1299.00,,,

Оптимизация производительности импорта

Дефолтные настройки Magento не рассчитаны на большие объёмы. Ключевые параметры в app/etc/env.php и конфигурации сервера:

// Увеличение batch-размера для импорта
// app/code/Vendor/Import/etc/di.xml
<type name="Magento\ImportExport\Model\Import">
    <arguments>
        <argument name="data" xsi:type="array">
            <item name="bunch_size" xsi:type="number">500</item>
        </argument>
    </arguments>
</type>
# php.ini для процессов импорта
memory_limit = 2G
max_execution_time = 3600
max_input_time = 3600

# Отключение ненужных индексеров во время импорта
bin/magento indexer:set-mode schedule cataloginventory_stock catalog_product_price catalogsearch_fulltext

Импорт через CLI и API

Для автоматизации используйте CLI-команду или REST API:

# Стандартный импорт через CLI
bin/magento import:run \
  --entity=catalog_product \
  --behavior=append \
  --validation-strategy=validation-skip-errors \
  --allowed-error-count=100 \
  --input-file=var/import/products.csv

# С указанием разделителя и кодировки
bin/magento import:run \
  --entity=catalog_product \
  --behavior=add_update \
  --field-separator=";" \
  --multiple-value-separator="|" \
  --input-file=var/import/products_semicolon.csv

REST API для импорта (Magento 2.3+):

# Создание job через API
curl -X POST "https://example.com/rest/V1/import/csv" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "source": {
      "entity": "catalog_product",
      "behavior": "append",
      "validationStrategy": "validation-stop-on-errors",
      "allowedErrorCount": "0",
      "csvData": "c2t1LG5hbWUscHJpY2U..."
    }
  }'

Настройка экспорта

Экспорт в Magento 2 работает через те же фильтры, что и импорт. Для больших каталогов необходим асинхронный экспорт через scheduled export:

// Программный экспорт через ExportFactory
use Magento\ImportExport\Model\ExportFactory;

class ProductExporter
{
    public function __construct(private ExportFactory $exportFactory) {}

    public function export(array $filters = []): string
    {
        $export = $this->exportFactory->create();
        $export->setData([
            'entity'        => 'catalog_product',
            'file_format'   => 'csv',
            'fields_enclosure' => 1,
        ]);

        // Фильтр по store view и типу
        $export->filterAttributeCollection(
            $export->getEntityAttributeCollection()
        );

        return $export->export();
    }
}

Интеграция с внешними системами через ImportExport

Для регулярной синхронизации с ERP/1С используется кастомный адаптер источника данных:

// Реализация AbstractSource для кастомного источника
class ErpImportSource extends \Magento\ImportExport\Model\Import\AbstractSource
{
    public function __construct(private ErpApiClient $erpClient)
    {
        $this->_colNames = ['sku', 'name', 'price', 'qty', 'description'];
    }

    protected function _getNextRow(): array|bool
    {
        $product = $this->erpClient->getNextProduct($this->_varienIo->tell());
        if (!$product) {
            return false;
        }
        return [
            'sku'         => $product['article'],
            'name'        => $product['title'],
            'price'       => $product['retail_price'],
            'qty'         => $product['stock'],
            'description' => $product['full_description'],
        ];
    }
}

MSI (Multi-Source Inventory) импорт

С Magento 2.3+ для управления складами используется MSI. Импорт остатков по источникам:

source_code,sku,quantity,status
warehouse-moscow,jacket-red-s,50,1
warehouse-spb,jacket-red-s,30,1
warehouse-moscow,jacket-red-m,0,0
bin/magento import:run \
  --entity=stock_sources \
  --behavior=append \
  --input-file=var/import/stock_msi.csv

Типичные проблемы и их решение

Memory exhausted: увеличьте memory_limit до 2–4G, уменьшите bunch_size до 200–300 записей.

URL key already exists: при поведении append Magento проверяет уникальность URL. Используйте add_update или очистите таблицу url_rewrite перед импортом.

Invalid value for Attribute Set: значение в attribute_set_code должно точно совпадать с именем в базе — регистр важен.

Медленная индексация после импорта: при режиме индексеров realtime каждый bunch запускает индексацию. Переключите на schedule, выполните импорт, затем запустите индексацию вручную:

bin/magento indexer:reindex catalog_product_attribute catalog_product_price catalogsearch_fulltext catalog_product_category

Сроки выполнения

  • Настройка и тест импорта до 1 000 SKU: 1 день
  • Разработка кастомного адаптера для ERP-синхронизации: 3–5 дней
  • Настройка scheduled import с мониторингом ошибок: 2–3 дня
  • Миграция каталога 50 000+ SKU из другой платформы: 5–10 дней