План обмена и узлы — это механизм самой 1С, который отвечает за то, какие изменения и в какой момент попадут в выгрузку на сайт. Понимание его логики снимает большинство вопросов «почему товар не выгрузился» и «почему обмен идёт кругами».
Что такое план обмена и узел
План обмена — это объект метаданных в конфигурации 1С (раздел Планы обмена в дереве конфигурации), который описывает состав данных для синхронизации и правила регистрации изменений. Внутри плана заводятся узлы — записи, соответствующие каждой стороне обмена. Один узел всегда обозначает саму базу 1С («этот узел»), остальные — внешние приёмники, в нашем случае сайт на 1С-Битрикс.
Когда вы настраиваете обмен каталогом и заказами, типовые конфигурации («Управление торговлей», «Комплексная автоматизация», «1С:УНФ») используют для этого специальный план обмена — например, ОбменССайтом или узел вида «Обмен с сайтом (CommerceML)». Именно этот узел хранит адрес сайта, логин, тип цен, склад и настройки выгрузки.
import.xml и offers.xml.Регистрация изменений и почему это важно
Ключевая функция плана обмена — автоматическая регистрация изменений. Как только вы меняете номенклатуру, цену, остаток или создаёте заказ, 1С по составу плана обмена делает запись в служебной таблице регистрации изменений для соответствующего узла. При следующем сеансе выгрузятся только те объекты, у которых есть непереданные регистрации, — это и есть основа «умной» инкрементальной выгрузки.
Практические следствия, которые важно держать в голове:
- если объект не входит в состав плана обмена, его изменения не регистрируются и он никогда не уедет на сайт, сколько бы вы ни жали «Выгрузить»;
- если регистрация по объекту уже снята (передана), повторно он выгрузится только после нового изменения или после ручной регистрации;
- изменения, сделанные до создания узла или загрузки конфигурации с новым составом плана, не попадают в очередь автоматически.
Посмотреть и вручную поправить очередь можно через типовую обработку Регистрация изменений для обмена данными (доступна в режиме «Все функции» или в разделе администрирования) — там видно, сколько объектов «висит» к отправке по узлу.
Номера сообщений и квитирование
Каждый узел хранит два счётчика: номер отправленного и номер принятого сообщения. При выгрузке 1С увеличивает номер отправленного и помечает регистрации этим номером. Когда сайт подтверждает приём, регистрации с номером не выше подтверждённого удаляются из очереди — это называется квитированием.
Механизм защищает от потери данных: пока квитанция не пришла, изменения остаются в очереди и уйдут повторно. Обратная сторона — если счётчики «разъехались» (например, базу разворачивали из копии, а сайт остался со старым номером), обмен может либо гнать одни и те же данные по кругу, либо, наоборот, считать изменения переданными и молчать.
| Симптом | Вероятная причина |
|---|---|
| Каждый сеанс выгружает весь каталог | Квитанции не принимаются, номер принятого не растёт |
| Изменения в 1С не появляются на сайте | Номера рассинхронизированы после восстановления из бэкапа |
| Дубли заказов или товаров | Сброшен номер принятого, повторная загрузка уже принятого сообщения |
Первоначальная и полная выгрузка
При первом обмене или после серьёзных сбоев используют полную выгрузку: в настройках узла обмена с сайтом снимают признак выгрузки только изменений (в CommerceML это флаг вида «Выгружать только изменения» / выгрузка изменённых объектов). Тогда 1С заново регистрирует все объекты состава плана и отправляет каталог целиком.
Типовой сценарий безопасного перезапуска обмена «с нуля»:
- остановить расписание автоматического обмена, чтобы сеансы не наложились;
- в карточке узла временно включить полную выгрузку;
- при необходимости через обработку регистрации изменений принудительно зарегистрировать всю номенклатуру для узла;
- провести один полный сеанс и убедиться, что сайт корректно принял
import.xmlиoffers.xml; - вернуть режим «только изменения» и включить расписание.
РИБ, узлы и место сайта в схеме
Тот же механизм планов обмена лежит в основе распределённой информационной базы (РИБ), когда несколько баз 1С синхронизируются между собой. Сайт на Битрикс формально ведёт себя как ещё один узел-приёмник, но с важными отличиями: он не является полноценной РИБ, обменивается только оговорённым составом данных (каталог, цены, остатки, заказы) и общается по протоколу CommerceML через HTTP, а не через файлы РИБ.
Из этого вытекает практическое правило: для каждого сайта или витрины заводится отдельный узел обмена с сайтом. Не пытайтесь обслуживать два сайта одним узлом — счётчики сообщений и очереди регистрации у них должны быть независимыми, иначе изменения будут «съедаться» первым же обменом. Тема отдельно раскрыта в материале про многосайтовость.
- Узел = сайт (витрина). Один адрес, один логин, один тип цен/склад по умолчанию.
- Свой состав данных. В разных узлах можно отдавать разные группы номенклатуры и типы цен.
- Свои счётчики. Сброс одного узла не задевает остальные.
Диагностика проблем на уровне узла
Когда обмен ведёт себя странно, начинать разбор стоит именно с плана обмена, а не с логов сайта. Проверочный маршрут:
- Открыть карточку узла обмена с сайтом и сверить адрес, логин, тип цен и склад — банальная ошибка настройки маскируется под «обмен не работает».
- Посмотреть очередь регистрации для узла: если она пустая, значит изменения не регистрируются (объект вне состава плана или обмен велся другим узлом).
- Сверить номера сообщений отправленного и принятого — резкое расхождение указывает на восстановление из копии или ручное вмешательство.
- Проверить состав плана обмена в конфигурации: входят ли нужные справочники и документы, включена ли авторегистрация.
Если после этих шагов картина не сходится, дальше уже смотрят логи и XML-выгрузку на стороне Битрикса — но в большинстве случаев корень в узле и его очереди.
Итог
План обмена и узлы — это «мозг» синхронизации на стороне 1С: они решают, что зарегистрировать, когда отправить и как убедиться, что данные дошли. Разобравшись с составом плана, регистрацией изменений и номерами сообщений, вы диагностируете большинство сбоев обмена за минуты, а не перебором настроек вслепую. Отдельный узел на каждый сайт, аккуратное обращение с полной выгрузкой и контроль счётчиков после восстановления баз — три привычки, которые экономят больше всего времени.
Если обмен уже «закольцевал» каталог, дублирует заказы или молчит после переезда базы, мы в B2Bsite помогаем восстановить корректную работу узлов, пересобрать состав плана обмена и настроить стабильную выгрузку на Битрикс — от разовой правки до полного сопровождения интеграции.
Частые вопросы
Чем план обмена отличается от обработки CommerceML?
План обмена — это механизм 1С, который регистрирует изменения и хранит узлы обмена. Обработка CommerceML отвечает за упаковку зарегистрированных данных в XML и передачу их на сайт по HTTP.
Почему товар изменился в 1С, но не появился на сайте?
Скорее всего, объект не входит в состав плана обмена или его изменение не зарегистрировалось для нужного узла. Проверьте очередь регистрации и при необходимости зарегистрируйте товар вручную.
Что делать, если обмен каждый раз выгружает весь каталог?
Обычно это значит, что квитанции от сайта не принимаются и номер принятого сообщения не растёт, поэтому регистрации не снимаются. Нужно проверить приём подтверждений и синхронизацию счётчиков узла.
Как безопасно перезапустить обмен с нуля?
Остановите расписание, включите полную выгрузку в узле, при необходимости зарегистрируйте всю номенклатуру, проведите один полный сеанс и верните режим «только изменения». Делайте это в нерабочее окно и с бэкапом.
Можно ли обслуживать два сайта одним узлом обмена?
Нет. Для каждого сайта или витрины заводится отдельный узел, чтобы очереди регистрации и номера сообщений были независимыми. Иначе изменения будут перехватываться первым же обменом.
Почему после восстановления базы из копии обмен сломался?
При восстановлении номера отправленного и принятого сообщений в узле могут разойтись с состоянием сайта. Из-за этого данные либо гоняются по кругу, либо ошибочно считаются переданными.
Где посмотреть очередь изменений к отправке?
В типовой обработке «Регистрация изменений для обмена данными», доступной через «Все функции» или раздел администрирования. Там видно количество объектов, ожидающих выгрузки по каждому узлу.
Связаны ли планы обмена с механизмом РИБ?
Да, РИБ построена на тех же планах обмена и узлах. Сайт при этом выступает как узел-приёмник с ограниченным составом данных и обменом по CommerceML, а не полноценная распределённая база.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.