Импорт каталога из 1С — это не разовая загрузка файла, а постоянный двусторонний обмен по протоколу CommerceML. Разберём, из чего он состоит, как правильно поднять точку обмена на стороне сайта и что настроить в 1С, чтобы товары, разделы и торговые предложения приезжали без ручного вмешательства.
Как устроен обмен 1С → Битрикс
Обмен каталогом работает по протоколу CommerceML 2 (формат стандарта «1С-Битрикс: Управление сайтом» и «1С:Предприятие»). Инициатором всегда выступает 1С: типовая конфигурация обращается к публичному скрипту обмена на сайте, авторизуется и последовательно передаёт XML-файлы. Сайт лишь принимает данные и раскладывает их по инфоблокам.
За приём отвечает файл /bitrix/admin/1c_exchange.php — это стандартная точка входа, встроенная в модуль catalog. Каталог товаров хранится в двух связанных инфоблоках: каталог (сами товары и разделы) и торговые предложения (SKU — цвета, размеры, цены под конкретный вариант). Один товар-родитель может иметь множество торговых предложений.
import.xml— структура каталога: разделы, свойства, сами товары;offers.xml— торговые предложения, цены, остатки, склады;- файлы бьются на порции, если объём превышает лимит (по умолчанию около 300–500 КБ на пакет).
Подготовка сайта: инфоблоки и модули
Перед первым обменом на сайте должны быть подключены модули Информационные блоки (iblock) и Торговый каталог (catalog). Без модуля catalog инфоблок не станет каталогом и цены с остатками просто некуда будет писать.
Инфоблоки удобнее создать заранее, а не полагаться на автосоздание при первом обмене. Заведите два инфоблока в одном типе, например 1c_catalog: один под каталог, второй — торговые предложения, и свяжите их в карточке инфоблока ТП (поле «Каталог» → «Товары этого каталога являются предложениями для»). Тогда 1С при выгрузке привяжет SKU к правильным родителям.
XML_ID. Именно по нему, а не по названию, 1С сопоставляет разделы и товары между выгрузками — при смене XML_ID обмен создаст дубли.Настройка точки обмена в админке
Раздел Магазин → Настройки → Интеграция с 1С (или «Обмен с 1С») задаёт параметры приёма. Ключевые пункты:
- Инфоблок для загрузки — тот самый каталог, куда пишутся товары;
- Интервал деактивации — что делать с товарами, которых нет в выгрузке (скрывать или удалять);
- Размер файла и шаг импорта — сколько данных обрабатывать за один шаг, чтобы не упереться в тайм-аут;
- Права доступа к обмену — по группам пользователей.
Публичный URL обмена выглядит как https://site.ru/bitrix/admin/1c_exchange.php. Именно его нужно указать в 1С. Проверьте, что путь доступен извне и не закрыт .htaccess или базовой HTTP-авторизацией — иначе 1С получит 401 ещё до старта.
Настройка обмена на стороне 1С
В типовых конфигурациях (Управление торговлей, Комплексная автоматизация, ERP) обмен настраивается через «Обмен с сайтом» или узел плана обмена. Понадобятся:
| Параметр | Значение |
|---|---|
| Адрес сайта | URL до 1c_exchange.php |
| Логин / пароль | пользователь Битрикс с правом на обмен |
| Выгружаемые товары | номенклатура, вид цен, склады |
| Выгрузка картинок | включить, если нужны изображения |
Обмен запускается вручную кнопкой «Выгрузить» либо по регламентному заданию. На первом сеансе выгружайте полный каталог, дальше 1С шлёт только изменения. Если товаров десятки тысяч, разумно сначала выгрузить структуру и справочники, а цены с остатками — отдельным заданием.
Свойства, цены и привязки
1С создаёт свойства инфоблока автоматически на основе характеристик номенклатуры, но контролировать это стоит вручную. Проверьте после первого обмена:
- Тип цены — в 1С может быть несколько (розничная, оптовая); на сайт должна попадать нужная и лечь в базовую цену каталога;
- Единицы измерения и НДС — иначе цена «поедет»;
- Свойства-привязки — бренд, производитель как привязка к справочнику, а не текст;
- Остатки по складам — если нужен поскладской учёт, включите выгрузку складов в 1С.
Проверка результата и отладка
После обмена откройте инфоблок и сверьте количество разделов и товаров с 1С. Полезные точки диагностики:
- лог обмена в
/bitrix/admin/1c_exchange.phpи в служебных сообщениях 1С; - временные файлы выгрузки в
/upload/1c_catalog/— по ним видно, что реально приехало; - карточка товара: заполнены ли цена, остаток, картинки, привязка к разделу.
Частая причина «пустого» результата — обмен прошёл, но товары деактивированы, потому что не совпали XML_ID разделов. Вторая — тайм-аут PHP на большом каталоге: увеличьте max_execution_time и уменьшите шаг импорта, чтобы обмен шёл маленькими пакетами. Ошибку авторизации (401/403) ищите в правах пользователя обмена и в веб-сервере.
Итог
Рабочий импорт каталога из 1С — это связка из трёх правильно настроенных частей: подготовленных инфоблоков каталога и торговых предложений на сайте, корректной точки обмена 1c_exchange.php и настроенной выгрузки в 1С по CommerceML. Ключ к стабильности — стабильные XML_ID, аккуратная работа со свойствами и разбивка больших выгрузок на пакеты.
Если каталог большой, номенклатура сложная (характеристики, поскладской учёт, несколько типов цен) или обмен уже «дублит» товары, мы в B2Bsite настраиваем обмен под конкретную конфигурацию 1С, чиним привязки и выводим выгрузку на регламент без ручных запусков.
Частые вопросы
По какому протоколу Битрикс обменивается с 1С?
По стандарту CommerceML 2 — это общий формат для 1С:Предприятия и 1С-Битрикс. Данные передаются XML-файлами import.xml и offers.xml.
Какой URL указывать в 1С для обмена?
Публичный адрес скрипта обмена: https://ваш-сайт/bitrix/admin/1c_exchange.php. Он должен быть доступен извне и не закрыт HTTP-авторизацией.
Нужно ли создавать инфоблоки заранее?
Желательно. Так вы контролируете XML_ID, тип инфоблока и связь каталога с торговыми предложениями. Автосоздание при первом обмене оставляет меньше контроля над структурой.
Почему товары после обмена скрыты или деактивированы?
Чаще всего не совпали XML_ID разделов или сработала настройка деактивации отсутствующих в выгрузке позиций. Проверьте сопоставление разделов и параметр деактивации в настройках обмена.
Что делать при тайм-ауте на большом каталоге?
Уменьшите шаг импорта и размер пакета в настройках интеграции, увеличьте max_execution_time в PHP. Обмен пойдёт маленькими порциями за несколько шагов вместо одного.
Куда попадают цены и остатки?
В инфоблок торговых предложений через модуль Торговый каталог. Проследите, чтобы на сайт выгружался нужный тип цены из 1С и, при необходимости, остатки по складам.
Можно ли запускать обмен автоматически?
Да, на стороне 1С обмен ставится на регламентное задание по расписанию, и выгрузка изменений идёт без ручного запуска кнопкой.
Почему после обмена появились дубли товаров или свойств?
Обычно из-за смены XML_ID инфоблока, разделов или свойств вручную в админке. 1С не находит объект по прежнему идентификатору и создаёт его заново.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.