К статье
Практический материал

Администрирование · 12 мин

Как создать план обмена в 1С

Как создать план обмена в 1С: настройка узлов, регистрация объектов, правила обмена, типичные ошибки и проверка результата. Пошаговая инструкция для конфигураторов.

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

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

Материал рассчитан на администраторов и разработчиков 1С, которые настраивают обмен с нуля или дорабатывают типовой план. Примеры ориентированы на платформу 8.3 и типовые конфигурации на управляемых формах, но базовые принципы одинаковы для всех версий.

Что такое план обмена и когда он нужен

План обмена хранит описание узлов обмена и состав данных, которые между ними передаются. Каждый узел — это участник обмена: центральная база, филиал, интернет-магазин, мобильное приложение. Платформа автоматически отслеживает изменения зарегистрированных объектов и формирует сообщения обмена.

План обмена нужен в трёх типовых ситуациях. Первая — распределённая информационная база (РИБ), когда несколько баз работают автономно и периодически синхронизируются. Вторая — регулярная синхронизация между разными конфигурациями, например передача документов из торгового учёта в бухгалтерию. Третья — интеграция с внешними системами через универсальный формат EnterpriseData или правила конвертации.

Важно понимать ограничение: план обмена определяет только какие объекты участвуют в обмене и куда они отправляются. Логика преобразования данных (как справочник одной конфигурации превращается в справочник другой) задаётся отдельно — правилами конвертации или кодом.

Как выбрать тип обмена до начала настройки

До открытия конфигуратора определите сценарий обмена, потому что от него зависят ключевые настройки плана. Главный вопрос — будет ли это распределённая база с единой конфигурацией или обмен между разными конфигурациями.

Варианты организации обмена

РИБ (распределённая ИБ)

Подходит для одинаковых конфигураций: центральный офис и филиалы. Конфигурация передаётся вместе с данными, изменения структуры возможны только в центральном узле. Ограничение: жёсткая связность узлов, сложно менять топологию.

Синхронизация через универсальный формат

Подходит для обмена между типовыми конфигурациями (УТ ↔ БП, УТ ↔ ERP). Настраивается без программирования через помощник синхронизации. Ограничение: состав передаваемых данных фиксирован форматом.

Обмен по правилам конвертации

Подходит для нестандартных сценариев и самописных конфигураций. Правила создаются в «Конвертации данных». Ограничение: требует навыков разработки и сопровождения правил при обновлениях.

План обмена + внешний транспорт

План обмена регистрирует изменения, а выгрузку делает собственный код или внешний сервис. Максимальная гибкость, но вся логика — на разработчике.

Если обе базы — одна конфигурация и нужна полная репликация, выбирайте РИБ. Если конфигурации разные, но типовые — сначала проверьте штатную синхронизацию: она покрывает большинство сценариев и не требует разработки. Собственный план обмена в конфигураторе оправдан, когда типовых средств не хватает.

Создание плана обмена в конфигураторе

Откройте конфигуратор и в дереве конфигурации найдите ветку «Общие» → «Планы обмена». Через контекстное меню выберите «Добавить». Задайте имя (латиница, без пробелов, например ОбменСФилиалами) и синоним — он будет виден пользователям.

На закладке «Данные» сформируйте состав плана обмена: отметьте объекты метаданных, которые должны передаваться между узлами. Для каждого объекта доступны режимы авторегистрации — «Разрешить» или «Запретить». Если авторегистрация разрешена, платформа сама фиксирует изменения объекта для всех узлов. Если запрещена — регистрировать изменения придётся программно, что даёт тонкий контроль, но требует кода.

Если создаёте РИБ, установите свойство «Распределённая информационная база» в значение «Истина». Это включит механизмы передачи конфигурации и контроля главного узла. Менять это свойство после создания узлов нельзя — решение принимается на старте.

Порядок создания плана обмена в конфигураторе
  1. 1
    Откройте конфигуратор, ветка «Общие» → «Планы обмена» → «Добавить»
  2. 2
    Задайте имя, синоним, при необходимости включите режим «Распределённая информационная база»
  3. 3
    На закладке «Данные» отметьте объекты состава обмена и задайте авторегистрацию
  4. 4
    Добавьте план обмена в подсистемы и командный интерфейс, чтобы пользователи видели узлы
  5. 5
    Обновите конфигурацию базы данных (F7) и проверьте отсутствие ошибок

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

Настройка узлов и регистрация данных

В пользовательском режиме откройте список узлов плана обмена. Узел с зелёной пиктограммой (или пометкой «Этот узел») — текущая база. Задайте ему осмысленный код, например ЦЕНТР, потому что код участвует в нумерации сообщений обмена и диагностике.

Создайте узлы-корреспонденты — по одному на каждую базу-получателя. Коды должны быть уникальны в пределах плана обмена. Для РИБ периферийная база создаётся специальной командой «Создать начальный образ»: платформа выгружает конфигурацию и данные в файл, из которого разворачивается база филиала.

Для обмена по правилам конвертации после создания узла выполните регистрацию данных: в типовых конфигурациях это команда «Зарегистрировать изменения для обмена» или обработка «Регистрация изменений для обмена данными». Укажите узел и отберите объекты — все или по отбору. Без этого шага первое сообщение обмена уйдёт пустым.

Транспорт сообщений и выполнение обмена

План обмена формирует сообщение (XML-файл), но не доставляет его. Способы доставки: файловый каталог (общая папка или FTP), прямое подключение к базе-корреспонденту через COM или веб-сервис, почтовое сообщение, либо внешний транспорт через собственный код.

Программно выгрузка и загрузка выполняются так:

1c
Узел = ПланыОбмена.ОбменСФилиалами.НайтиПоКоду("ФИЛ1");

// Выгрузка изменений для узла
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Обмен\Message_ЦЕНТР_ФИЛ1.xml");
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, 10000);
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();

// Загрузка сообщения от узла
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\Обмен\Message_ФИЛ1_ЦЕНТР.xml");
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, 10000);
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();

Для регулярного обмена оберните выгрузку и загрузку в регламентное задание. Учтите: в файловой базе регламентные задания выполняются только при запущенном сеансе с соответствующей настройкой, в клиент-серверной — планировщиком кластера. Интервал ставьте с запасом: если обмен длится дольше интервала, задания начнут накладываться.

Проверка результата и типичные ошибки

После настройки выполните контрольный обмен: создайте в базе-источнике тестовый документ, убедитесь, что он зарегистрирован для узла (в типовых конфигурациях — через «Регистрацию изменений»), выполните выгрузку и загрузку, затем найдите документ в базе-приёмнике. Проверьте не только факт появления, но и перенос связанных ссылок: контрагента, договора, номенклатуры.

Контрольные точки

Как проверить результат

Регистрация изменений
Норма

Новый объект появляется в списке зарегистрированных для узла

Тревожный признак

Объект изменён, но в регистрации пусто — проверьте состав плана обмена и авторегистрацию

Номера сообщений
Норма

Номер принятого сообщения у узла растёт последовательно

Тревожный признак

Номера скачут или сброшены — сообщения терялись, нужна повторная регистрация

Данные в приёмнике
Норма

Документ загружен со всеми ссылками, без дублей справочников

Тревожный признак

Появились дубли контрагентов или «битые» ссылки — проблема в правилах поиска объектов

Журнал регистрации
Норма

События обмена без ошибок

Тревожный признак

Ошибки прав доступа или блокировок — обмен идёт под неподходящим пользователем или в рабочее время

Типичные ошибки
01
Включить в состав плана обмена всё подряд — растёт объём сообщений, обмен тормозит, а лишние данные создают конфликты
02
Не настроить правила поиска справочников — в приёмнике плодятся дубли контрагентов и номенклатуры
03
Разрешить авторегистрацию и одновременно регистрировать программно — объекты регистрируются дважды, сообщения раздуваются
04
Менять конфигурацию в периферийном узле РИБ — база теряет связь с центром, потребуется восстановление из образа
05
Удалить узел вместо отключения — история номеров сообщений теряется, синхронизацию придётся начинать заново

Конфликты, ограничения и сопровождение

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

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

На старте ограничьте состав обмена минимально необходимым набором объектов и добавляйте новые по мере стабилизации. Отладить обмен с десятью объектами несравнимо проще, чем с двумя сотнями, а расширить состав плана обмена можно в любой момент без потери уже синхронизированных данных.
ПЗ
Практическое замечание
Итог

Что важно запомнить

План обмена создаётся в конфигураторе (состав данных, режим РИБ), узлы и регистрация — в пользовательском режиме, транспорт — отдельно. Сначала тест на копии базы и контрольный документ, потом продуктив. Резервная копия перед первичной регистрацией обязательна.

Частые вопросы

Можно ли создать план обмена без конфигуратора?

Нет. Объект «План обмена» — это метаданные, он добавляется только в конфигураторе. В пользовательском режиме можно лишь настраивать узлы и регистрацию уже существующего плана. Если в типовой конфигурации нужного плана нет, потребуется доработка конфигурации или использование типовой синхронизации данных.

Чем план обмена отличается от правил обмена?

План обмена отвечает за маршрутизацию: какие объекты, для каких узлов регистрируются и в каком порядке передаются. Правила обмена (конвертации) отвечают за содержимое: как поля объекта источника преобразуются в поля объекта приёмника. Они работают в связке, но настраиваются независимо.

Почему изменения не регистрируются для узла?

Чаще всего объект не включён в состав плана обмена или для него запрещена авторегистрация, а программная регистрация не реализована. Реже — изменение выполняется в обмене данными загрузкой (признак «ОбменДанными.Загрузка = Истина»), при котором регистрация изменений намеренно отключается.

Как сбросить обмен и начать синхронизацию заново?

Удалите регистрацию изменений для узла (обработкой или программно через ПланыОбмена.УдалитьРегистрациюИзменений), затем выполните повторную регистрацию нужных данных. Номера сообщений при этом можно сбросить, изменив номера отправленного и принятого в узле. Удалять сам узел не обязательно и обычно нежелательно.

Подходит ли план обмена для обмена с сайтом в реальном времени?

План обмена — механизм пакетной синхронизации, а не реального времени: минимальный разумный интервал — минуты. Для мгновенной передачи отдельных событий (заказ на сайте → документ в 1С) лучше подходят HTTP-сервисы или внешние очереди сообщений, а план обмена оставить для массовой синхронизации справочников.

Что делать, если периферийная база РИБ долго не обменивалась?

Если конфигурация центра за это время обновлялась, периферийная база может не принять сообщения из-за расхождения версий. Проверьте номера сообщений и версии конфигураций узлов. При критическом рассинхроне надёжнее создать новый начальный образ из центрального узла и развернуть базу заново, предварительно выгрузив из старой базы неотправленные данные.