Перенос товарного каталога из 1С:Предприятие в 1С-Битрикс — задача, с которой сталкивается каждый второй владелец интернет-магазина при переходе на новую платформу или обновлении ассортимента. Ошибки на этом этапе обходятся дорого: дубликаты товаров, разбитые категории, некорректные цены или остатки могут парализовать работу сайта на дни. В этой статье разберём все актуальные способы выгрузки — от ручного экспорта до полностью автоматизированных решений, — а также типичные «подводные камни», о которых умалчивают в стандартных инструкциях.

Важно понимать: универсального решения нет. Выбор метода зависит от версии (УТ 11, ERP, Розница 2.3), редакции Битрикс (Старт, Малый бизнес, Бизнес), объёма номенклатуры и даже от того, нужна ли синхронизация остатков в реальном времени. Например, для магазина с 500 SKU подойдёт стандартный модуль обмена, а для 50 000 позиций потребуется кастомизированный REST API или промежуточный сервер обмена. Мы рассмотрим критические отличия подходов для малых и крупных каталогов, которые влияют на скорость загрузки и стабильность работы сайта.

Если вы никогда не занимались интеграцией систем — не беспокойтесь. Мы разбили процесс на шаги с визуальными примерами и чек-листами. А для опытных пользователей приготовили раздел с оптимизацией обмена через Composer и настройкой cron-задач для фоновой синхронизации.

1. Подготовка данных в 1С: что нужно сделать ДО выгрузки

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

  • 🔍 Дубликаты артикулов: Битрикс использует артикул как уникальный идентификатор. Если в 1С один артикул присвоен нескольким товарам, они перезапишут друг друга при загрузке.
  • 📊 Пустые обязательные поля: Название, цена, остаток, вес — без этих данных товар не отобразится на сайте или будет скрыт от покупателей.
  • 🏷️ Несоответствие категорий: Иерархия групп в 1С должна совпадать со структурой разделов в Битрикс. Например, если в 1С товар относится к группе «Обувь → Кроссовки», а в Битрикс такой путь отсутствует, товар попадёт в корень каталога.
  • 💰 Типы цен: Убедитесь, что в 1С настроены те же типы цен (розничная, оптовая, дилерская), что и в Битрикс. Иначе цены загрузятся в неверные поля.

Для проверки используйте стандартный отчёт Анализ номенклатуры в 1С (Отчёты → Товары → Анализ номенклатуры). Особое внимание уделите товарам с нулевыми остатками — их можно исключить из выгрузки, чтобы не засорять каталог.

⚠️ Внимание: Если в вашей базе 1С используются серийные номера или партии товаров, стандартный обмен с Битрикс их не поддерживает. Потребуется доработка модуля или использование промежуточного сервиса вроде МойСклад.

Также рекомендуем создать тестовую копию базы 1С и сайта на Битрикс. Это позволит протестировать выгрузку без риска для рабочей версии. Для копирования базы 1С используйте утилиту 1CV8CopyBase, а для Битрикс — инструмент Бэкап сайта в панели администратора.

📊 Какой объём номенклатуры вы планируете выгружать?
До 1 000 товаров
1 000–10 000 товаров
10 000–50 000 товаров
Более 50 000 товаров

2. Стандартный обмен через модуль «1С:Интеграция»

Самый распространённый способ — использование встроенного модуля «1С:Интеграция», который есть в редакциях Битрикс Малый бизнес и Бизнес. Он поддерживает обмен по протоколу CommerceML 2.0 и подходит для 80% типичных задач. Рассмотрим пошаговую настройку:

  1. Установка модуля в Битрикс: Перейдите в Магазин → Настройки → Модули → 1С:Интеграция и активируйте его. Если модуля нет — установите через Маркетплейс.
  2. Настройка обмена в 1С:
    • Откройте Администрирование → Печатные формы, отчёты и обработки → Обмен данными с сайтом.
    • Создайте новый профиль обмена с типом CommerceML 2.0.
    • Укажите адрес сайта в формате https://ваш-сайт.ru/bitrix/admin/1c_exchange.php.
  3. Авторизация: В Битрикс сгенерируйте логин и пароль для обмена в Магазин → Настройки → Интеграция с 1С и введите их в настройках профиля 1С.
  4. Тестовый обмен: Запустите выгрузку вручную (Выполнить обмен) и проверьте результат в Битрикс (Магазин → Товары).
  5. Если товары не загрузились, проверьте:

    • 🔌 Права доступа: У пользователя 1С должны быть права на чтение справочников Номенклатура, Цены, Остатки.
    • 📡 Сетевые настройки: Порт 80 или 443 должен быть открыт для обмена. Если сайт на HTTPS, в 1С укажите полный URL с https://.
    • 📝 Логи обмена: В Битрикс они находятся в /bitrix/modules/catalog/import/1c/logs/. Ищите ошибки с кодом 403 (доступ запрещён) или 500 (ошибка сервера).
⚠️ Внимание: Стандартный модуль обмена имеет ограничение на размер файла выгрузки — 50 МБ. Если ваш каталог больше, разбейте выгрузку на части или используйте промежуточный FTP-сервер.

Проверены права пользователя 1С на справочники|

Создан резервный бэкап базы 1С и сайта|

В Битрикс установлен и активирован модуль «1С:Интеграция»|

В настройках обмена указан корректный URL (с HTTPS, если нужно)|

Тестовый обмен запущен на копии сайта, а не на рабочей версии-->

3. Альтернативные способы выгрузки: когда стандартный модуль не подходит

Если стандартный обмен не покрывает ваши задачи (например, нужна выгрузка характеристик товаров, серийных номеров или многоуровневых категорий), рассмотрите альтернативные методы:

Способ Когда использовать Плюсы Минусы
REST API Нужна гибкая настройка полей, обмен в реальном времени Максимальная кастомизация, поддержка любых данных Требует знаний программирования, высокая нагрузка на сервер
Промежуточный сервер (FTP/HTTP) Большой каталог (>50 000 товаров), нестабильный интернет Низкая нагрузка на сайт, надёжность Дополнительные затраты на сервер, сложность настройки
Модуль «МойСклад» Интеграция с облачной 1С или нужны складские операции Простой интерфейс, поддержка серийных номеров Платная подписка, ограниченная кастомизация
Прямой SQL-импорт Разовая миграция данных, опыт работы с БД Максимальная скорость для больших объёмов Риск повреждения базы, требует бэкапа

Рассмотрим подробнее обмен через REST API, так как это самый универсальный метод. Для его реализации потребуется:

  1. Создать HTTP-сервис в 1С (Администрирование → Публикация на веб-сервере).
  2. Написать обработчик в Битрикс (файл /local/php_interface/init.php), который будет принимать данные в формате JSON.
  3. Настроить cron-задачу для регулярного опроса 1С (например, каждые 15 минут).

Пример кода для обработчика в Битрикс:

// Пример обработчика для REST API (упрощённая версия)

AddEventHandler("main", "OnBeforeEventAdd", function(&$event, &$fields) {

if ($event === "ON_CATALOG_IMPORT_REST") {

$data = json_decode($fields['DATA'], true);

// Здесь логика добавления/обновления товаров

CIBlockElement::Add([

"IBLOCK_ID" => 2, // ID инфоблока каталога

"NAME" => $data['name'],

"PROPERTY_VALUES" => [

"ARTICLE" => $data['article'],

"PRICE" => $data['price']

]

]);

}

});

⚠️ Внимание: При использовании REST API отключите кэширование в Битрикс для раздела обмена (Настройки → Производительность → Управление кэшем), иначе изменения могут не применятся сразу.
💡

Если вам нужно выгрузить дополнительные свойства товаров (например, страну производителя или гарантийный срок), создайте в Битрикс пользовательские поля (Магазин → Настройки → Свойства товаров) и сопоставьте их с реквизитами 1С в обработчике обмена.

4. Выгрузка характеристик и сложных свойств товаров

Стандартный обмен через CommerceML не поддерживает многоуровневые характеристики (например, «Цвет: Красный → Оттенок: Вишнёвый») или зависимые свойства (размер зависит от модели). Для их переноса есть два решения:

Способ 1: Использование модуля «Универсальный обмен»

Модуль «Универсальный обмен данными» от Битрикс позволяет гибко настраивать соответствие полей. Например, можно связать:

  • 🔹 Справочник «Цвета» в 1ССвойство «Цвет» в Битрикс
  • 🔹 Реквизит «Гарантия» в 1ССвойство «Гарантийный срок» в Битрикс
  • 🔹 Дополнительные реквизиты номенклатурыПроизвольные свойства товаров

Способ 2: Кастомизация через XML-шаблоны

Если модули не справляются, можно вручную отредактировать шаблоны обмена в файлах:

  • /bitrix/modules/catalog/import/1c/import.xml — основной шаблон импорта.
  • /bitrix/modules/catalog/import/1c/offers.xml — шаблон для торговых предложений.

Например, чтобы выгрузить вес товара, добавьте в import.xml строку:

<Вес>?value?</Вес>

и сопоставьте её с полем WEIGHT в Битрикс.

Пример сложной выгрузки

связь торгового предложения с характеристиками:

Допустим, в 1С у товара «Кроссовки» есть характеристики:

- Размер: 42, 43, 44

- Цвет: Чёрный, Белый

При стандартной выгрузке в Битрикс создадутся отдельные товары для каждой комбинации (42/Чёрный, 42/Белый и т.д.).

Чтобы объединить их в одно торговой предложение, в шаблоне offers.xml нужно:

1. Добавить группировку по артикулу основного товара.

2. Указать связь с характеристиками через теги <ХарактеристикиТовара>.

3. Настроить в Битрикс тип инфоблока «Каталог товаров» с включённой опцией «Использовать торговые предложения».

5. Автоматизация и оптимизация обмена

Ручная выгрузка подходит для разовых задач, но для регулярного обновления каталога нужна автоматизация. Рассмотрим 3 уровня оптимизации:

Уровень 1: Настройка cron-задач

Чтобы обмен запускался по расписанию (например, каждый час), добавьте в crontab сервера строку:

0     wget -q -O /dev/null "https://ваш-сайт.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import"

Для проверки логов cron используйте команду:

grep CRON /var/log/syslog

Уровень 2: Инкрементальный обмен

Вместо полной выгрузки можно настраивать обмен только изменёнными товарами. Для этого в 1С:

  1. Создайте реквизит ДатаИзменения для справочника Номенклатура.
  2. В обработке обмена добавьте фильтр по дате:
Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ * ИЗ Справочник.Номенклатура ГДЕ ДатаИзменения >= &ДатаПоследнегоОбмена";

Уровень 3: Промежуточный сервер обмена

Для крупных каталогов (>100 000 товаров) рекомендуется использовать промежуточный сервер (например, на Yandex Cloud или AWS). Схема работы:

  1. 1С выгружает данные в XML на FTP-сервер.
  2. Скрипт на сервере конвертирует XML в JSON и оптимизирует структуру.
  3. Битрикс забирает данные по API порциями (например, по 1 000 товаров за запрос).
⚠️ Внимание: При инкрементальном обмене не удаляйте товары в Битрикс вручную. Это приведёт к рассинхронизации с 1С. Для удаления используйте флаг Действие=Удалить в файле выгрузки.

- До 1 000 изменений/день → обмен 1 раз в сутки.

- 1 000–10 000 изменений → каждые 2–4 часа.

- Более 10 000 → промежуточный сервер с потоковой обработкой.-->

6. Типичные ошибки и их решения

Даже при правильной настройке обмена могут возникать ошибки. Мы собрали TOP-5 проблем и способы их исправления:

Ошибка Причина Решение
Ошибка 403: Доступ запрещён Неверные права доступа к 1c_exchange.php Проверьте .htaccess и права на папку (chmod 755)
Ошибка 500: Internal Server Error Превышен лимит памяти или времени выполнения Увеличьте memory_limit в php.ini до 512М
Товары не обновляются, хотя выгрузка прошла успешно Не совпадают идентификаторы товаров в 1С и Битрикс Проверьте поле Внешний код в Битрикс и Ид в 1С
Цены загружаются не в те типы цен Не совпадают наименования типов цен в 1С и Битрикс Сопоставьте типы цен в настройках модуля обмена
Ошибка XML parsing error Некорректный формат файла выгрузки (спецсимволы, кодировка) Откройте файл в Notepad++ и сохраните в кодировке UTF-8 без BOM

Если ошибка не исчезает, включите режим отладки в Битрикс:

  1. Добавьте в .settings.php строку:
'exception_handling' => [

'value' => [

'debug' => true,

'handled_errors_types' => E_ALL,

],

],

  1. Проверьте логи в /bitrix/modules/main/classes/general/update_client_partner.php.

Для сложных случаев (например, ошибок с кодом SOAP-ERROR) используйте sniffer (например, Fiddler или Wireshark), чтобы проанализировать трафик между 1С и Битрикс.

7. Проверка результатов и постобработка данных

После выгрузки необходимо проверить:

  • 📋 Полноту данных: Сравните количество товаров в 1С (Отчёты → Количество номенклатуры) и в Битрикс (Магазин → Товары).
  • 💰 Корректность цен: Экспортируйте прайс-лист из Битрикс (Магазин → Экспорт → Цены) и сверьте с 1С.
  • 📦 Структуру категорий: Убедитесь, что товары распределены по правильным разделам. Для проверки используйте отчёт Магазин → Аналитика → Структура каталога.
  • 🔗 Связи между товарами: Если используете торговые предложения, проверьте, что они привязаны к правильным товарам (Магазин → Товары → Связанные элементы).

Для ускорения проверки используйте массовые операции в Битрикс:

  • Выделите все товары в разделе Магазин → Товары.
  • Нажмите Изменить выбранные и проверьте заполненность ключевых полей (название, цена, остаток).
  • Для поиска пустых полей используйте фильтр: например, Цена = 0 или Остаток не задан.

Если обнаружены расхождения, не исправляйте их вручную в Битрикс! Это приведёт к рассинхронизации с 1С. Вместо этого:

  1. Скорректируйте данные в .
  2. Запустите повторный обмен с флагом полная выгрузка.
  3. Если ошибка повторяется, проверьте правила конвертации в модуле обмена (например, округление цен или перевод единиц измерения).
<?xml version="1.0" encoding="windows-1251"?>

и настройте в 1С кодировку Windows-1251 (если используется русскоязычная номенклатура).-->

FAQ: Частые вопросы по выгрузке товаров из 1С в Битрикс

Можно ли выгрузить товары из 1С в Битрикс без модуля «1С:Интеграция»?

Да, есть несколько альтернатив:

  • Использовать REST API Битрикс (требуется программист).
  • Настроить обмен через промежуточный формат (например, CSV или Excel) с последующим импортом в Битрикс через модуль Data Import.
  • Воспользоваться сторонними сервисами вроде CommerceML Pro или Универсальный обмен данными.

Однако стандартный модуль остаётся самым надёжным решением для большинства задач.

Почему после выгрузки в Битрикс не отображаются картинки товаров?

Причины могут быть следующими:

  • В 1С пути к картинкам указаны относительные (например, images/photo.jpg), а не абсолютные (C:\Photos\photo.jpg).
  • В настройках обмена не включена опция Выгружать картинки.
  • Права на папку /upload/ в Битрикс не позволяют записывать файлы (chmod 777).
  • Картинки в 1С привязаны к товару через дополнительные реквизиты, которые не выгружаются по умолчанию.

Решение: проверьте настройки в профиле обмена 1С (Выгружать картинки = Да) и права на папку /upload/1c_catalog/.

Как выгрузить остатки товаров из 1С в Битрикс?

Остатки выгружаются автоматически, если:

  • В профиле обмена 1С включена опция Выгружать остатки.
  • В Битрикс настроено соответствие складов (если их несколько).
  • В 1С остатки указаны в том же складе, который привязан к профилю обмена.

Если остатки не обновляются:

  1. Проверьте, что в 1С заполнен справочник Склады.
  2. В Битрикс перейдите в Магазин → Настройки → Склады и сопоставьте их с складами из 1С.
  3. Запустите обмен с флагом выгружать остатки = да.
Можно ли выгружать товары из 1С в Битрикс по расписанию?

Да, для этого есть три варианта:

  1. Cron-задача на сервере (рекомендуется для Linux):
    0 3   * /usr/bin/php -f /path/to/bitrix/modules/catalog/import/1c/cron.php
  2. Планировщик задач 1С:
    • Откройте Администрирование → Поддержка и обслуживание → Регламентные задания.
    • Создайте задание типа Обмен данными с сайтом и укажите расписание.
  • Сторонние сервисы (например, Zabbix или Jenkins) для мониторинга и запуска обмена.
  • Оптимальная частота — 1 раз в 2–4 часа для средних каталогов.

    Как перенести заказы из Битрикс в 1С?

    Обратная выгрузка заказов настраивается аналогично, но с другими параметрами:

    1. В Битрикс включите опцию Выгружать заказы в 1С (Магазин → Настройки → 1С:Интеграция).
    2. В 1С создайте профиль обмена с типом Заказы покупателей.
    3. Укажите соответствие статусов заказов (например, статус Оплачен в Битрикс = статус Оплата получена в 1С).
    4. Важно: для корректной выгрузки в заказах Битрикс должны быть заполнены:

      • ФИО покупателя,
      • Email или телефон,
      • Адрес доставки (если используется).