Администрирование · 12 мин
Как создать план обмена в 1С
Как создать план обмена в 1С: настройка узлов, регистрация объектов, правила обмена, типичные ошибки и проверка результата. Пошаговая инструкция для конфигураторов.
План обмена — это объект конфигурации 1С, который определяет, какие данные и между какими базами будут синхронизироваться. Он лежит в основе любой интеграции: обмен между центральной и периферийными базами (РИБ), синхронизация с сайтом, обмен данными между «Управлением торговлей» и «Бухгалтерией». Без корректно настроенного плана обмена данные либо не уйдут вовсе, либо начнут дублироваться и конфликтовать.
Создание плана обмена состоит из трёх уровней работы: проектирование состава данных в конфигураторе, настройка узлов в пользовательском режиме и организация самого транспорта (файлы, веб-сервисы, прямое подключение). Ошибка на любом из уровней приводит к тому, что обмен формально «работает», но данные расходятся.
Материал рассчитан на администраторов и разработчиков 1С, которые настраивают обмен с нуля или дорабатывают типовой план. Примеры ориентированы на платформу 8.3 и типовые конфигурации на управляемых формах, но базовые принципы одинаковы для всех версий.
Что такое план обмена и когда он нужен
План обмена хранит описание узлов обмена и состав данных, которые между ними передаются. Каждый узел — это участник обмена: центральная база, филиал, интернет-магазин, мобильное приложение. Платформа автоматически отслеживает изменения зарегистрированных объектов и формирует сообщения обмена.
План обмена нужен в трёх типовых ситуациях. Первая — распределённая информационная база (РИБ), когда несколько баз работают автономно и периодически синхронизируются. Вторая — регулярная синхронизация между разными конфигурациями, например передача документов из торгового учёта в бухгалтерию. Третья — интеграция с внешними системами через универсальный формат EnterpriseData или правила конвертации.
Важно понимать ограничение: план обмена определяет только какие объекты участвуют в обмене и куда они отправляются. Логика преобразования данных (как справочник одной конфигурации превращается в справочник другой) задаётся отдельно — правилами конвертации или кодом.
Как выбрать тип обмена до начала настройки
До открытия конфигуратора определите сценарий обмена, потому что от него зависят ключевые настройки плана. Главный вопрос — будет ли это распределённая база с единой конфигурацией или обмен между разными конфигурациями.
Варианты организации обмена
Подходит для одинаковых конфигураций: центральный офис и филиалы. Конфигурация передаётся вместе с данными, изменения структуры возможны только в центральном узле. Ограничение: жёсткая связность узлов, сложно менять топологию.
Подходит для обмена между типовыми конфигурациями (УТ ↔ БП, УТ ↔ ERP). Настраивается без программирования через помощник синхронизации. Ограничение: состав передаваемых данных фиксирован форматом.
Подходит для нестандартных сценариев и самописных конфигураций. Правила создаются в «Конвертации данных». Ограничение: требует навыков разработки и сопровождения правил при обновлениях.
План обмена регистрирует изменения, а выгрузку делает собственный код или внешний сервис. Максимальная гибкость, но вся логика — на разработчике.
Если обе базы — одна конфигурация и нужна полная репликация, выбирайте РИБ. Если конфигурации разные, но типовые — сначала проверьте штатную синхронизацию: она покрывает большинство сценариев и не требует разработки. Собственный план обмена в конфигураторе оправдан, когда типовых средств не хватает.
Создание плана обмена в конфигураторе
Откройте конфигуратор и в дереве конфигурации найдите ветку «Общие» → «Планы обмена». Через контекстное меню выберите «Добавить». Задайте имя (латиница, без пробелов, например ОбменСФилиалами) и синоним — он будет виден пользователям.
На закладке «Данные» сформируйте состав плана обмена: отметьте объекты метаданных, которые должны передаваться между узлами. Для каждого объекта доступны режимы авторегистрации — «Разрешить» или «Запретить». Если авторегистрация разрешена, платформа сама фиксирует изменения объекта для всех узлов. Если запрещена — регистрировать изменения придётся программно, что даёт тонкий контроль, но требует кода.
Если создаёте РИБ, установите свойство «Распределённая информационная база» в значение «Истина». Это включит механизмы передачи конфигурации и контроля главного узла. Менять это свойство после создания узлов нельзя — решение принимается на старте.
- 1Откройте конфигуратор, ветка «Общие» → «Планы обмена» → «Добавить»
- 2Задайте имя, синоним, при необходимости включите режим «Распределённая информационная база»
- 3На закладке «Данные» отметьте объекты состава обмена и задайте авторегистрацию
- 4Добавьте план обмена в подсистемы и командный интерфейс, чтобы пользователи видели узлы
- 5Обновите конфигурацию базы данных (F7) и проверьте отсутствие ошибок
После обновления конфигурации базы данных проверьте права: роли пользователей, которые будут выполнять обмен, должны включать доступ к плану обмена и к обрабатываемым объектам. Частая ситуация — план создан, обмен настроен, но под пользователем без прав выгрузка молча завершается с ошибкой доступа.
Настройка узлов и регистрация данных
В пользовательском режиме откройте список узлов плана обмена. Узел с зелёной пиктограммой (или пометкой «Этот узел») — текущая база. Задайте ему осмысленный код, например ЦЕНТР, потому что код участвует в нумерации сообщений обмена и диагностике.
Создайте узлы-корреспонденты — по одному на каждую базу-получателя. Коды должны быть уникальны в пределах плана обмена. Для РИБ периферийная база создаётся специальной командой «Создать начальный образ»: платформа выгружает конфигурацию и данные в файл, из которого разворачивается база филиала.
Для обмена по правилам конвертации после создания узла выполните регистрацию данных: в типовых конфигурациях это команда «Зарегистрировать изменения для обмена» или обработка «Регистрация изменений для обмена данными». Укажите узел и отберите объекты — все или по отбору. Без этого шага первое сообщение обмена уйдёт пустым.
Транспорт сообщений и выполнение обмена
План обмена формирует сообщение (XML-файл), но не доставляет его. Способы доставки: файловый каталог (общая папка или FTP), прямое подключение к базе-корреспонденту через COM или веб-сервис, почтовое сообщение, либо внешний транспорт через собственный код.
Программно выгрузка и загрузка выполняются так:
Узел = ПланыОбмена.ОбменСФилиалами.НайтиПоКоду("ФИЛ1");
// Выгрузка изменений для узла
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Обмен\Message_ЦЕНТР_ФИЛ1.xml");
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, 10000);
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
// Загрузка сообщения от узла
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\Обмен\Message_ФИЛ1_ЦЕНТР.xml");
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, 10000);
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();Для регулярного обмена оберните выгрузку и загрузку в регламентное задание. Учтите: в файловой базе регламентные задания выполняются только при запущенном сеансе с соответствующей настройкой, в клиент-серверной — планировщиком кластера. Интервал ставьте с запасом: если обмен длится дольше интервала, задания начнут накладываться.
Проверка результата и типичные ошибки
После настройки выполните контрольный обмен: создайте в базе-источнике тестовый документ, убедитесь, что он зарегистрирован для узла (в типовых конфигурациях — через «Регистрацию изменений»), выполните выгрузку и загрузку, затем найдите документ в базе-приёмнике. Проверьте не только факт появления, но и перенос связанных ссылок: контрагента, договора, номенклатуры.
Как проверить результат
Новый объект появляется в списке зарегистрированных для узла
Объект изменён, но в регистрации пусто — проверьте состав плана обмена и авторегистрацию
Номер принятого сообщения у узла растёт последовательно
Номера скачут или сброшены — сообщения терялись, нужна повторная регистрация
Документ загружен со всеми ссылками, без дублей справочников
Появились дубли контрагентов или «битые» ссылки — проблема в правилах поиска объектов
События обмена без ошибок
Ошибки прав доступа или блокировок — обмен идёт под неподходящим пользователем или в рабочее время
Конфликты, ограничения и сопровождение
При двустороннем обмене возможны коллизии: один и тот же документ изменён в обеих базах до синхронизации. В РИБ по умолчанию выигрывает главный узел; в синхронизациях типовых конфигураций поведение задаётся настройкой «приоритет базы». Продумайте методику заранее: какие данные редактируются только в одной базе, а какие — в обеих с известным приоритетом.
Ограничения, о которых стоит помнить. Состав плана обмена меняется только в конфигураторе с обновлением всех узлов — в РИБ это означает обновление сначала центра, потом периферийных баз строго через механизм обмена конфигурацией. Большие регистрации блокируют таблицы. Планы обмена не переносят файлы присоединённых документов автоматически — для них нужен отдельный механизм.
На старте ограничьте состав обмена минимально необходимым набором объектов и добавляйте новые по мере стабилизации. Отладить обмен с десятью объектами несравнимо проще, чем с двумя сотнями, а расширить состав плана обмена можно в любой момент без потери уже синхронизированных данных.
Что важно запомнить
План обмена создаётся в конфигураторе (состав данных, режим РИБ), узлы и регистрация — в пользовательском режиме, транспорт — отдельно. Сначала тест на копии базы и контрольный документ, потом продуктив. Резервная копия перед первичной регистрацией обязательна.
Частые вопросы
Можно ли создать план обмена без конфигуратора?
Нет. Объект «План обмена» — это метаданные, он добавляется только в конфигураторе. В пользовательском режиме можно лишь настраивать узлы и регистрацию уже существующего плана. Если в типовой конфигурации нужного плана нет, потребуется доработка конфигурации или использование типовой синхронизации данных.
Чем план обмена отличается от правил обмена?
План обмена отвечает за маршрутизацию: какие объекты, для каких узлов регистрируются и в каком порядке передаются. Правила обмена (конвертации) отвечают за содержимое: как поля объекта источника преобразуются в поля объекта приёмника. Они работают в связке, но настраиваются независимо.
Почему изменения не регистрируются для узла?
Чаще всего объект не включён в состав плана обмена или для него запрещена авторегистрация, а программная регистрация не реализована. Реже — изменение выполняется в обмене данными загрузкой (признак «ОбменДанными.Загрузка = Истина»), при котором регистрация изменений намеренно отключается.
Как сбросить обмен и начать синхронизацию заново?
Удалите регистрацию изменений для узла (обработкой или программно через ПланыОбмена.УдалитьРегистрациюИзменений), затем выполните повторную регистрацию нужных данных. Номера сообщений при этом можно сбросить, изменив номера отправленного и принятого в узле. Удалять сам узел не обязательно и обычно нежелательно.
Подходит ли план обмена для обмена с сайтом в реальном времени?
План обмена — механизм пакетной синхронизации, а не реального времени: минимальный разумный интервал — минуты. Для мгновенной передачи отдельных событий (заказ на сайте → документ в 1С) лучше подходят HTTP-сервисы или внешние очереди сообщений, а план обмена оставить для массовой синхронизации справочников.
Что делать, если периферийная база РИБ долго не обменивалась?
Если конфигурация центра за это время обновлялась, периферийная база может не принять сообщения из-за расхождения версий. Проверьте номера сообщений и версии конфигураций узлов. При критическом рассинхроне надёжнее создать новый начальный образ из центрального узла и развернуть базу заново, предварительно выгрузив из старой базы неотправленные данные.