Перейти к основному содержимому

Планы обмена и РИБ 1С

Разработчику Архитектору

Два механизма на одной основе

Обмен в экосистеме 1С — это комплекс механизмов, правил и транспортных средств, обеспечивающих передачу данных между информационными базами и внешними системами с сохранением целостности, актуальности и согласованности учётной информации. В рамках обмена участвуют контрагенты обмена — стороны взаимодействия, которыми могут выступать отдельные информационные базы, филиалы, дочерние общества либо внешние программные комплексы; для каждого контрагента определяются роли (источник/приёмник), правила конвертации данных, расписание и способы контроля доставки, а также ответственность за обработку ошибок и поддержание актуальности статусов.

Обмен между информационными базами 1С:Предприятие строится на объекте метаданных План обмена, регистрации изменений и XML-сообщениях. Платформа предлагает два уровня:

Универсальный обменРИБ (распределённая ИБ)
Конфигурации узловМогут различатьсяТолько идентичные
УзлыЛюбые ИБ и сторонние системыТолько базы 1С 8
В сообщенииОбычно изменения данныхДанные и конфигурация
ТопологияПроизвольная, без "главного"Дерево — один главный узел
НастройкаКод, коллизии, транспортЧасто интерактивно, без кода

Подробнее про произвольные схемы и интеграцию с не-1С — Универсальный обмен данными 1С. Здесь — план обмена и РИБ.


План обмена

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

План обмена отвечает на три вопроса интеграции:

  1. С кем обмениваемся — узлы плана (элементы, как строки справочника).
  2. Чем — состав объектов конфигурации на закладке Состав плана обмена.
  3. Как — номера сообщений, транспорт (файл, FTP, HTTP), обработчики событий.

У каждой ИБ есть предопределённый узел ЭтотУзел — "мы сами". Остальные узлы — контрагенты обмена (филиал, склад, центральный офис).

Реквизиты узла хранят параметры участника — привязка к складу, каталог обмена, URL FTP и т.д.


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

Регистрация изменений — механизм, фиксирующий факты модификации данных в информационной базе для последующей передачи заинтересованным узлам. При любом изменении объекта (создании, редактировании, удалении) система помечает его как требующий синхронизации, сохраняя тип операции, идентификатор объекта, узел‑источник и временную метку; это позволяет передавать только дельту изменений, существенно снижая объём трафика и ускоряя обмен, а также обеспечивает возможность повторной отправки при сбоях и контроль полноты доставки.

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

Регистрация включается для типов из состава плана обмена. При записи объекта платформа может автоматически добавить строки в таблицы регистрации.

Программная регистрация:

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");
Данные = Справочники.Номенклатура.НайтиПоКоду("00001");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Данные);

Можно зарегистрировать весь тип (Метаданные.Справочники.Номенклатура) или удаление (УдалениеОбъекта).

Очистка регистрации после успешной доставки — ПланыОбмена.УдалитьРегистрациюИзменений(). Две стратегии:

  • Гарантированная доставка — очистка сразу после формирования сообщения.
  • Ожидание квитанции — очистка по номеру последнего принятого сообщения из заголовка входящего пакета (ReceivedNo).

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

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

Очистка регистрации — регламентная процедура удаления из системы записей о переданных изменениях после подтверждения их приёма всеми заинтересованными узлами. Очистка предотвращает разрастание служебных таблиц, ускоряет выборку актуальных изменений и снижает нагрузку на базу данных; она выполняется либо автоматически по расписанию, либо вручную администратором с контролем статусов доставки, чтобы исключить преждевременное удаление ещё не переданных данных.

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

Ожидание квитанции — состояние обработки сообщения, при котором отправитель приостанавливает дальнейшие действия до получения подтверждения от получателя о приёме и успешной обработке пакета. В течение периода ожидания система может выполнять повторные запросы статуса, анализировать таймауты и фиксировать ошибки; ожидание квитанции позволяет избежать рассинхронизации и обеспечить согласованность данных между узлами.

Квитанция — служебное сообщение, отправляемое получателем в ответ на входящий пакет и подтверждающее факт приёма, корректность структуры и успешное применение изменений. Квитанция содержит идентификатор исходного сообщения, статус обработки (успех/ошибка), коды ошибок (при наличии) и дополнительные метаданные (время обработки, пользователь, версия правил); она служит основанием для снятия регистрации изменений на стороне отправителя и перехода к следующему этапу синхронизации.


Сообщение обмена

XML‑сообщения — структурированные пакеты данных в формате XML, используемые для передачи информации между узлами обмена и внешними системами. Каждое сообщение содержит заголовок с метаданными (идентификатор пакета, отправитель, получатель, версия формата, контрольная сумма) и тело с набором объектов, подготовленных по правилам конвертации; XML‑сообщения обеспечивают машиночитаемость, совместимость между разнородными конфигурациями и возможность валидации структуры на стороне приёмника, а также могут быть подписаны и зашифрованы для защиты конфиденциальности.

Сообщение — XML-документ с заголовком и телом. Заголовок (пространство имён http://v8.1c.ru/messages) содержит:

ЭлементСмысл
ExchangePlanИмя плана обмена
From / ToКоды узла-отправителя и получателя
MessageNoПорядковый номер исходящего сообщения
ReceivedNoНомер последнего сообщения, принятого от адресата (квитанция)

Тело — XML-сериализация изменённых данных (ЗаписатьXML / ПрочитатьXML).

Выгрузка (упрощённо):

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();

Узел = ПланыОбмена.Магазины.НайтиПоКоду("Филиал");
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);

ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, 1000); // пакет по 1000 в транзакции

ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();

Загрузка:

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, 1000);

ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();

При загрузке для каждого объекта задают:

Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();

РИБ — распределённая информационная база

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

Узлы — логические участники обмена, представляющие отдельные информационные базы, сервисы или внешние системы, включённые в план синхронизации. Каждый узел имеет уникальный идентификатор, описание, статус активности и набор параметров подключения; узлы могут выполнять разные роли (центральный, периферийный, промежуточный брокер), поддерживать различные форматы и транспорты, а также участвовать в нескольких планах обмена одновременно, что позволяет строить гибкие и масштабируемые топологии взаимодействия.

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

РИБ — частный случай плана обмена для одинаковых конфигураций в иерархии узлов:

  • Корневой узел — единственное место изменения метаданных; обновление конфигурации стекает вниз по дереву.
  • Данные можно менять в любом узле; изменения синхронизируются с соседями (главный ↔ подчинённые).
  • Узел обменивается только с главным и подчинёнными, не "через всю сеть".

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

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


Типовые операции РИБ

Филиальная база — информационная база, развёрнутая в филиале или обособленном подразделении и участвующая в обмене с центральной базой по согласованным правилам. Филиальная база может работать в автономном режиме при разрыве связи, накапливать локальные изменения и передавать их при восстановлении канала; её конфигурация часто включает ограничения на отдельные операции, специфические права доступа и упрощённые сценарии учёта, адаптированные под локальные процессы.

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

ДействиеКак
Создать филиальную базуСоздать начальный образ узла (интерактивно или ПланыОбмена.СоздатьНачальныйОбраз())
Выгрузить измененияЗаписать изменения → файл (опционально ZIP)
Загрузить измененияПрочитать изменения из файла

Начальный образ создаёт новую пустую ИБ, переносит конфигурацию и отфильтрованные данные, настраивает ЭтотУзел и ссылку на главный узел.

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


Фильтрация и коллизии

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

В модуле плана обмена задают обработчики:

  • ПриОтправкеДанныхПодчиненному — отсечь лишнее (ОтправкаЭлемента = Удалить);
  • ПриПолученииДанныхОтГлавного / ПриПолученииДанныхОтПодчиненного — игнорировать или переопределить приоритет при конфликте (ПолучениеЭлемента = Игнорировать).

Так реализуют обмен "только свой склад", разрешение коллизий (кто победил при одновременном изменении) и отложенную отправку изменений главному узлу.


РИБ или универсальный обмен

ЗадачаВыбор
Филиалы с одной типовой конфигурациейРИБ
УТ ↔ Бухгалтерия (разные конфигурации)Универсальный + правила конвертации
Обмен с CRM/SAPУниверсальный или HTTP/OData
Обновление конфигурации по деревуРИБ

CRM (Customer Relationship Management) — класс прикладных решений для управления взаимоотношениями с клиентами, который в экосистеме 1С может быть реализован как отдельная конфигурация либо как подсистема в составе ERP‑решения. CRM‑функционал охватывает ведение контактов, сделок, задач, истории взаимодействий и маркетинговых кампаний; интеграция CRM с учётными конфигурациями 1С обеспечивает сквозную синхронизацию данных о контрагентах, заказах, оплатах и отгрузках, позволяя формировать единую картину клиентского пути и повышать эффективность продаж.

SAP — корпоративная ERP‑система мирового класса, с которой конфигурации 1С нередко интегрируются для обеспечения согласованности данных в международных и крупных российских холдингах. Взаимодействие SAP и 1С реализуется через файловые обмены, веб‑сервисы, промежуточные шины данных либо прямые подключения к базам, с применением форматов вроде EnterpriseData, XML или JSON; при интеграции учитывают различия в моделях данных, единицах измерения, валютах и бизнес‑процессах, а также требования к производительности, безопасности и аудиту, чтобы обеспечить надёжную и прозрачную синхронизацию.


Связанные материалы