Перейти к содержанию

Архитектура модуля

Модуль реализован как подсистема 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 — низкоуровневая сериализация

Регламентное задание и подписки

Одно регламентное задание запускает цикл обмена по расписанию. Четыре подписки на события покрывают операции записи объектов, настроенных на интеграцию.

Подробнее — в Планировщики и регламентные задания.