Универсальный обмен данными 1С
Что такое универсальный обмен
Универсальный механизм обмена — это использование плана обмена, регистрации изменений и XML для схем, которые не укладываются в жёсткие правила РИБ:
- разные конфигурации 1С (УТ и Бухгалтерия);
- обмен с сторонней системой через файлы или свой транспорт;
- произвольная топология без «главного офиса»;
- ручная сериализация отдельных полей или типов.
РИБ можно рассматривать как специализацию с дополнительным протоколом (конфигурация в сообщении, начальный образ). Универсальный обмен — максимальная свобода и максимум кода на стороне разработчика.
Стек технологий
| Компонент | Роль |
|---|---|
| План обмена | Узлы, состав, события — см. 136.md |
| Регистрация изменений | ЗарегистрироватьИзменения, ВыбратьИзменения |
| Инфраструктура сообщений | ЗаписьСообщенияОбмена, ЧтениеСообщенияОбмена |
| XML-сериализация | ЗаписатьXML, ПрочитатьXML, ручные элементы |
| Транспорт | Каталог, FTP, почта, HTTP — по выбору проекта |
Формат носителя может быть не только XML, но объекты ЗаписьСообщения / ЧтениеСообщения работают поверх ЗаписьXML / ЧтениеXML.
Цикл выгрузки и загрузки
Выгрузка:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
Узел = ПланыОбмена.ОбменСКонтрагентом.НайтиПоКоду("CRM");
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗаписьСообщения.НомерСообщения);
Пока Выборка.Следующий() Цикл
Данные = Выборка.Получить();
ЗаписатьXML(ЗаписьXML, Данные);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
// При гарантированной доставке:
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ЗаписьСообщения.НомерСообщения);
Загрузка:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.УдалитьРегистрациюИзменений(
ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Данные = ПрочитатьXML(ЧтениеXML);
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЦикла;
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
Имена файлов часто стандартизируют, например Message_<КодОтправителя>_<КодПолучателя>.xml в общем каталоге.
Ручная сериализация
Когда структура не совпадает один к одному, в XML пишут кастомные элементы или выбирают подмножество реквизитов:
ЗаписьXML.ЗаписатьНачалоЭлемента("CatalogObject.Номенклатура.Вручную");
ЗаписатьXML(ЗаписьXML, Объект.Код, "Code", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Объект.Наименование, "Description", НазначениеТипаXML.Явное);
ЗаписьXML.ЗаписатьКонецЭлемента();
На приёме — своя функция ПрочитатьДанные() с проверкой ПолучитьXMLТип(). Так строят обмен с legacy-форматами и «урезанными» контрактами.
Служебная информация в теле сообщения (метаданные пакета, команды для принимающей стороны) — отдельные XML-элементы до или после блока изменений.
Транзакции
| Подход | Плюс | Минус |
|---|---|---|
Одна транзакция на весь пакет (ЗаписатьИзменения(..., 0)) | Согласованность, скорость в файловой ИБ | Долгие блокировки |
Пакеты по N объектов (1000) | Баланс параллельности и скорости | Сложнее откат «на полпути» |
При ошибке на середине пакета используют НачатьТранзакцию / ОтменитьТранзакцию и журнал статусов пакета — см. 119.md.
Односторонний обмен
Иногда данные идут только в одну сторону (витрина в DWH, выгрузка в гос. систему). Тогда:
- регистрируют изменения только для «исходящего» узла;
- обработчики приёма отключены или игнорируют входящие типы;
- регистрацию очищают после успешной отправки без ожидания ответного сообщения.
Для получения без обратной регистрации используют отдельный контур (HTTP, ВИД).
Автоматизация
Типовой продакшен-контур:
- Регламентное задание на сервере — выгрузка/загрузка по расписанию.
- Каталог обмена или FTP — транспорт файлов.
- Регистр сведений — статус пакета, ошибка, повтор.
- Оповещение администратора при сбое.
Запуск из клиента по кнопке оставляют для отладки; в проде — только сервер.
EnterpriseData и типовые правила
Для обмена между типовыми и смежными решениями 1С (Бухгалтерия, ЗУП, ERP) фирма «1С» поставляет формат EnterpriseData и правила Конвертация данных 2.0/3.0 — поверх тех же планов обмена и XML, но с готовой моделью объектов и картой соответствия реквизитов.
| Свой универсальный обмен | EnterpriseData | |
|---|---|---|
| Контракт | Проектируете вы | Стандарт 1С |
| Конвертация | BSL + XDTO вручную | Правила конвертации |
| Старт | Любая нетиповая схема | Связка типовых продуктов |
Детали формата — в документации ИТС и типовых обработках обмена; в энциклопедии достаточно знать, что это готовый слой над механизмом из 136.md.
Когда что выбирать
| Сценарий | Решение |
|---|---|
| Два филиала, одна конфигурация | РИБ |
| УТ → Бухгалтерия | EnterpriseData или свой универсальный обмен |
| Сайт, JSON, REST | HTTP-сервисы / OData |
| Staging в PostgreSQL | Внешний источник данных |
| Уникальный XML контрагент | Универсальный обмен (эта статья) |
Типичные ошибки
- Нет
ОбменДанными.Загрузка = Истина— срабатывают лишние проверки и повторная регистрация. - Коллизии кодов в разных узлах — нужны префиксы номеров или GUID обмена.
- Огромный пакет в одной транзакции — блокировка пользователей.
- Смешение РИБ и «универсала» в одном плане без понимания протокола РИБ.
Связанные материалы
- Планы обмена и РИБ
- JSON и XDTO — альтернативные форматы поверх HTTP
- Интеграция — хаб
Проверка себя
- Чем универсальный обмен отличается от РИБ по конфигурациям?
- Когда вызовете
УдалитьРегистрациюИзменений— до или после доставки? - В каком случае EnterpriseData предпочтительнее своего XML?
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Платформа 1С - архитектура среды исполнения, назначение и место в автоматизации бизнес-процессов. История 1С - развитие платформы, ключевые этапы роста и влияние на цифровизацию бизнеса и госсектора. Экосистема 1С - продукты платформы, инструменты разработки, внедрение и сопровождение корпоративных решений. Архитектура платформы 1С, объекты метаданных, регистры, модули и исполнение прикладного кода. Пошаговое создание учебной конфигурации: справочники, документ, регистры, проведение, подсистемы и роли. Синтаксис и пунктуация 1С - базовые правила записи кода, операторы и структура выражений. Типизация, набор правил определения типа данных значений языка. Управление потоком выполнения в 1С - последовательность операций, ветвления и контроль выполнения сценариев. Функции и процедуры 1С - различия, правила использования и организация переиспользуемой бизнес-логики. Объекты и классы 1С - модель метаданных, экземпляры объектов и работа с прикладными сущностями. Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок в 1С - перехват исключений, диагностика сбоев и устойчивые сценарии обработки.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Конфигурирование — мини-склад
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Функции и процедуры 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С