Обмен с 1С - выгрузка товаров и номенклатуры
Выгрузка каталога из 1С - самая частая задача обмена: 741 вопрос из собранных 2398 по интеграциям. Здесь собраны решения по ней.
Что общего у этих задач
Обмен товарами идёт по протоколу CommerceML: 1С складывает XML и картинки, сайт
разбирает их скриптом /bitrix/admin/1c_exchange.php. Инициатор всегда 1С, сайт
только принимает. Отсюда три следствия, которые объясняют почти все поломки.
Обмен идёт шагами, а не одним запросом. Большой каталог делится на пачки, и между пачками сайт возвращает управление 1С. Если PHP уронил процесс на середине, часть товаров уже в базе, а часть нет, и повторный запуск начнётся не с нуля.
Сопоставление идёт по внешнему коду, полю XML_ID. Товар, у которого код
изменился, приезжает как новый, а старый остаётся висеть активным. Это же поле
связывает разделы, свойства и торговые предложения.
Всё, что не пришло из 1С, обмен считает лишним. Правки, сделанные на сайте руками - переписанное название, дописанное описание, свои картинки - при следующей выгрузке затираются, если не поставить защиту.
Решения подтемы
-
Выгрузка товаров из 1С на сайт - настройка узла, размер пачки, защита правок от перезаписи.
-
Выгрузка свойств товара из 1С - сопоставление по коду, типы свойств, множественные значения.
-
Структура каталога при выгрузке из 1С - разделы, вложенность, обмен из двух баз.
-
Не выгружаются товары из 1С - четыре причины по убыванию частоты и порядок проверок.
-
Ошибка импорта метаданных - лимит складов, безымянный раздел, смена типа свойства.
-
Деактивация товаров при обмене - полная выгрузка против изменений, чистка исчезнувших позиций.
-
Долгий обмен и обрывы: шаг, память, время выполнения - шаговый режим, пределы пула, ночное окно.
-
Каталог с сайта в 1С: обратное направление выгрузки - внешние коды, файл выгрузки, один источник истины.
-
Журнал обмена: как читать и что означают его сообщения - где лежит, служебные слова ответов, чья ошибка.
-
Дубли товаров после обмена: поиск и разведение - повторяющиеся внешние коды, чистка без потери заказов.
-
Не выгружаются характеристики из 1С: торговые предложения после обмена - инфоблок предложений, связь с товаром, свойства характеристик.
-
Частичный обмен: выгрузка только изменений и её последствия - состав файла, пропущенные остатки, принудительный полный обмен.
-
Обмен каталогом с несколькими сайтами и конфигурациями - свой инфоблок и узел на сайт, разделение цен, порядок сеансов.
-
Своя логика при обмене: обработчики, защита правок, журнал - признак импорта, снятие полей, цена обработчика.
-
Сверка каталога после обмена: числа, расхождения, отчёт - разрезы вместо общего числа, сравнение с файлом, отчёт.
-
Ручная загрузка файла обмена - каталог и владелец файлов, порядок частей, автоматизация.
-
Импорт каталога изнутри: файлы, сопоставление, перезапись - состав файлов, порядок разбора, ключ сопоставления, владение полями.
Частые вопросы
Почему обмен идёт очень долго и обрывается?
Обмен пошаговый, и на каждый шаг действует ограничение времени PHP. Если пачка не успевает обработаться за max_execution_time, процесс обрывается на середине. Размер пачки задаётся в настройках модуля catalog, а не в 1С.
Можно ли запускать обмен по расписанию с сайта?
Нет. Инициатор обмена всегда 1С: она подключается к 1c_exchange.php и передаёт данные. Расписание настраивается в самой 1С, в узле обмена. Со стороны сайта запустить выгрузку нечем.
Что делать, если товары приехали дважды?
Значит у них разошёлся внешний код: сайт не нашёл совпадения по XML_ID и создал новые элементы. Так бывает после переноса базы 1С или смены узла обмена. Дубли ищут по совпадению названия при разных XML_ID.
Куда смотреть, если обмен завершился, а товаров нет?
В лог обмена: он лежит в /upload/1c_catalog/ рядом с полученными файлами. Там видно, какой шаг вернул ошибку. Пустой каталог при успешном обмене обычно означает, что товары приехали в другой инфоблок.
Связанные темы
- Обмен с 1С и HTTP - как устроен обмен целиком
- Каталог и продажи - куда приезжают товары
- Инфоблоки - хранилище, в которое пишет обмен
- Картинки при обмене - изображения товаров и разделов
- Настройка обмена - что настраивают до первой выгрузки
- Раздел Интеграции