Планы обмена и РИБ 1С
Два механизма на одной основе
Обмен в экосистеме 1С — это комплекс механизмов, правил и транспортных средств, обеспечивающих передачу данных между информационными базами и внешними системами с сохранением целостности, актуальности и согласованности учётной информации. В рамках обмена участвуют контрагенты обмена — стороны взаимодействия, которыми могут выступать отдельные информационные базы, филиалы, дочерние общества либо внешние программные комплексы; для каждого контрагента определяются роли (источник/приёмник), правила конвертации данных, расписание и способы контроля доставки, а также ответственность за обработку ошибок и поддержание актуальности статусов.
Обмен между информационными базами 1С:Предприятие строится на объекте метаданных План обмена, регистрации изменений и XML-сообщениях. Платформа предлагает два уровня:
| Универсальный обмен | РИБ (распределённая ИБ) | |
|---|---|---|
| Конфигурации узлов | Могут различаться | Только идентичные |
| Узлы | Любые ИБ и сторонние системы | Только базы 1С 8 |
| В сообщении | Обычно изменения данных | Данные и конфигурация |
| Топология | Произвольная, без "главного" | Дерево — один главный узел |
| Настройка | Код, коллизии, транспорт | Часто интерактивно, без кода |
Подробнее про произвольные схемы и интеграцию с не-1С — Универсальный обмен данными 1С. Здесь — план обмена и РИБ.
План обмена
План обмена — объект метаданных, задающий архитектуру и регламент синхронизации: он фиксирует перечень узлов, маршруты передачи, состав объектов для выгрузки, условия фильтрации, периодичность и транспорт, а также логику обработки квитанций и разрешения конфликтов. План обмена служит центральным элементом управления интеграцией, позволяя формализовать правила взаимодействия, обеспечить контроль версий и гарантировать воспроизводимость результатов при повторных запусках.
План обмена отвечает на три вопроса интеграции:
- С кем обмениваемся — узлы плана (элементы, как строки справочника).
- Чем — состав объектов конфигурации на закладке Состав плана обмена.
- Как — номера сообщений, транспорт (файл, 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; при интеграции учитывают различия в моделях данных, единицах измерения, валютах и бизнес‑процессах, а также требования к производительности, безопасности и аудиту, чтобы обеспечить надёжную и прозрачную синхронизацию.
Связанные материалы
- Универсальный обмен
- Архитектура и мета-объекты
- Обработка ошибок — транзакции при загрузке
- Интеграция — хаб