Архитектура модуля
Модуль реализован как подсистема 1С и не требует отдельной инфраструктуры. Все объекты метаданных входят в состав конфигурации.
Состав метаданных
| Тип | Количество |
|---|---|
| Общие модули | 21 |
| Справочники | 2 |
| Регистры сведений | 8 |
| Регламентные задания | 1 |
| Подписки на события | 4 |
| Перечисления | 8 |
| Обработки | 1 |
Минимальная версия платформы 1С: 8.3.25.
Справочники
Интегрируемые системы
Хранит перечень всех информационных систем, участвующих в обмене, с точки зрения данной 1С-базы.
| Поле | Тип | Назначение |
|---|---|---|
| Наименование | Строка | Имя системы |
| Эта база | Булево | Признак текущей базы; ровно одна запись |
| Идентификатор системы | UUID | SystemID из DataHUB; заполняется при авторизации |
Запись с флагом «Эта база» пропускается при поиске объектов по Id-массиву — база не ищет саму себя во внешних системах.
Объекты интеграции
Иерархический справочник обработчиков интеграции. Каждый элемент описывает одну связку «тип объекта 1С → класс сообщения DataHUB» и содержит ссылки на исходящий и входящий обработчики. Подробнее — в статьях Исходящие обработчики и Входящие обработчики.
Регистры сведений
Идентификаторы объектов интегрируемых систем
Таблица маппинга идентификаторов одного объекта между разными системами. Является реализацией алгоритма идентификации объектов — см. Общая методология / Идентификация объектов.
Ключ (три измерения):
| Поле | Тип | Назначение |
|---|---|---|
| Уникальный идентификатор источника | UUID | EntityID объекта в системе-источнике |
| Уникальный идентификатор приемника | UUID | EntityID объекта в данной базе |
| Интегрируемая система | Справочник | Ссылка на запись системы-источника |
Ресурсы:
| Поле | Назначение |
|---|---|
| Тип источника | Имя метаданного в системе-источнике (напр. Справочник.Контрагенты) |
| Тип приемника | ClassId сообщения (напр. Catalog_Контрагенты) |
Атрибут Ссылка на объект (ValueStorage) хранит динамическую ссылку на 1С-объект. Тип ValueStorage используется для совместимости с конфигурациями, в которых тип ЛюбаяСсылка недоступен.
Очередь регистрации исходящих сообщений
Первая ступень исходящего конвейера. Заполняется подписками на события записи в момент изменения объекта.
| Поле | Тип | Назначение |
|---|---|---|
| Объект события | Строка | Полное имя метаданного, чья запись вызвала событие |
| Метод хранения | Перечисление | По ссылке / По значению |
| Ссылка на объект | ValueStorage | Ссылка на изменившийся объект |
| Это удаление | Булево | Событие вызвано удалением записи |
| Дата регистрации | Дата/Время |
Метод хранения определяет, что записано в поле Хранилище: при значении «По ссылке» сохраняется только ссылка на объект, сериализация откладывается до момента обработки; при «По значению» данные сериализуются немедленно.
Очередь исходящих сообщений
Вторая ступень: готовые JSON-конверты перед отправкой на шину.
| Поле | Тип | Назначение |
|---|---|---|
| Идентификатор базового сообщения | UUID | Значение поля Id в JSON-конверте |
| Объект интеграции | Справочник | Обработчик, сформировавший сообщение |
| Дата регистрации | Дата/Время | |
| Хранилище | ValueStorage | Полный JSON-конверт |
Очередь входящих сообщений
Хранит принятые сообщения от момента ACK до завершения обработки.
| Поле | Тип | Назначение |
|---|---|---|
| Идентификатор сообщения | UUID | Значение поля Id из конверта; ключ |
| Класс сообщения | Строка | ClassId из конверта |
| Формат сообщения | Перечисление | Формат данных (JSON) |
| Дата создания | Дата/Время | CreationTime из конверта |
| Дата регистрации | Дата/Время | Момент помещения в очередь после ACK |
| Хранилище | ValueStorage | Полный JSON-конверт |
| Ссылка на объект | ValueStorage | Ссылка на найденный/созданный объект; заполняет обработчик |
Состояния сообщений
Хранит текущий статус и счётчик попыток для записей из всех очередей. Данные отображаются в формах соответствующих очередей — отдельного списка этот регистр не имеет.
Прочие регистры
| Регистр | Назначение |
|---|---|
| Блокировка очереди | Управление параллельным доступом к очередям |
| Константы | Рабочие константы модуля (токены, настройки подключения) |
| Безопасное хранилище данных | Хранение чувствительных данных (пароль, refresh-токен) |
Исходящий конвейер
flowchart LR
A[Запись 1С-объекта] --> B[Подписка на событие]
B --> C[(Очередь\nрегистрации)]
C --> D[Исходящий\nобработчик]
D --> E[(Исходящая\nочередь)]
E --> F[Сервис обмена\nотправляет на шину]
Разделение на два регистра позволяет не удерживать транзакцию записи объекта во время сериализации и сетевого взаимодействия.
Входящий конвейер
flowchart LR
A[Сервис обмена\nполучает из шины] --> B[(Входящая\nочередь)]
B --> C[Входящий\nобработчик]
C --> D{Объект\nнайден?}
D -- Да --> E[Обновить объект]
D -- Нет --> F{Зависимость?}
F -- Новый --> G[Создать объект]
F -- Ждём --> H[Отложить]
Общие модули
Функциональность распределена по специализированным общим модулям. Ключевые группы:
- ДатаХабСервисОбмена — цикл отправки и приёма, HTTP-взаимодействие с шиной, авторизация и обновление токенов
- ДатаХабОбслуживаниеОчередей — работа с регистрами очередей
- ДатаХабРаботаСОбъектамиДанных — алгоритм поиска и обогащения таблицы идентификаторов
- ДатаХабРаботаССообщениями — сборка и разбор JSON-конвертов
- ДатаХабИнтеграция — вызов исходящих и входящих обработчиков
- ДатаХабПоставляемыеОбъектыИнтеграции / ДатаХабПоставляемыеОбъектыИнтеграцииПереопределяемый — поставляемые и переопределяемые обработчики интеграции
- ДатаХабОбщегоНазначения (и вариации
ПовтИсп,КлиентСервер,Служебный) — утилиты, настройки, вспомогательные функции - ДатаХабЛог — логирование
- ДатаХабРегламентныеЗадания — точка входа для регламентного задания
- ДатаХабФункцииРаботыJSON / ДатаХабФункцииРаботыXML — низкоуровневая сериализация
Регламентное задание и подписки
Одно регламентное задание запускает цикл обмена по расписанию. Четыре подписки на события покрывают операции записи объектов, настроенных на интеграцию.
Подробнее — в Планировщики и регламентные задания.