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

Алгоритмы обмена

Модуль реализует два независимых цикла — исходящий и входящий. Платформо-независимые алгоритмы описаны в разделе «Общая методология»: Алгоритм отправки и Алгоритм приёма и подтверждения. Данная статья описывает особенности реализации в 1С.

Исходящий цикл

В 1С отправка реализована через двухступенчатый конвейер.

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

Ступень 2 — Формирование и отправка. Регламентное задание (или ручной запуск) обрабатывает очередь регистрации:

  1. Прочитать запись из очереди регистрации.
  2. Вызвать исходящий обработчик — сформировать JSON-конверт.
  3. Записать готовый конверт в очередь исходящих сообщений.
  4. Отправить сообщение в DataHUB (POST /send).
  5. При успехе — установить статус «Обработано» и удалить из очереди.
  6. При ошибке — увеличить счётчик попыток; при исчерпании — статус «Ошибка обработки».

Входящий цикл

  1. Отправить запрос на получение сообщения (GET /receive).
  2. Обработать ответ:

    Код Действие
    200 OK Получено сообщение — перейти к шагу 3
    204 No Content Нет сообщений — повторить с шага 1
    408 Request Timeout Истёк таймаут long-polling — повторить с шага 1
    401 Unauthorized Обновить токен — повторить с шага 1
    Сетевая ошибка Зафиксировать сбой, прервать цикл
  3. Начать транзакцию.

  4. Разобрать конверт, записать сообщение в очередь входящих.
  5. Зафиксировать транзакцию.
  6. Подтвердить получение (ACK) вне транзакции (POST /ack).
  7. Повторить с шага 1.

Обработка сообщений из входящей очереди выполняется отдельным потоком:

  1. Вызвать входящий обработчик.
  2. Обработчик выполняет идентификацию объекта, применяет данные.
  3. При успехе — статус «Обработано».
  4. При необходимости отложить (зависимый объект ещё не пришёл) — увеличить задержку, вернуть в очередь.
  5. При ошибке — увеличить счётчик попыток; при исчерпании — статус «Ошибка обработки».

Параллельная обработка

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

Таблица идентификаторов

Регистр сведений «Идентификаторы объектов интегрируемых систем» хранит соответствие между GUID объекта в текущей базе и GUID того же объекта в удалённых системах. Каждая запись связывает пару систем через конкретный объект.

Список идентификаторов объектов

Поля записи: уникальный идентификатор источника, уникальный идентификатор приёмника, интегрируемая система, тип объекта источника и приёмника, ссылка на объект 1С.

Карточка идентификатора объекта