Универсальная очередь интеграций 1С




«Универсальная очередь» это подсистема, которая позволяет осуществлять достоверную доотправку в случае неуспешно выполненной интеграции, а также выполнять интеграции в фоновом режиме. Очередь может иметь настройки расписания для каждой интеграции отдельно, хранит параметры отправки для каждого элемента очереди. Очередь можно использовать не только для интеграций, но и для выполнения любой процедуры в вашей конфигурации. В приложенном файле конфигурации содержится сама подсистема, а также примеры её использования.

Блок-схема на скриншоте показывает общий принцип работы очереди. В данном случае под синхронными интеграциями понимаем те, без завершения которых не двигаемся далее по коду. Например интеграция при оплате товара. Обычно такие интеграции возвращают значение, которое необходимо использовать далее по алгоритму. Асинхронные интеграции — это не требующие немедленного выполнения и, как правило, не возвращающие какого-либо значения. Пример асинхронной интеграции — это начисление бонусов покупателю. Мы можем сообщить покупателю, что в течении какого-то времени бонусы будут начислены и далее двигаться по процедуре продажи.

Как видим на блок-схеме принцип вызова процедур разный:

Для асинхронных методов мы сразу добавляем задачу в очередь и не тратим время на ожидание завершения этой интеграции. Очередь выполнит нашу асинхронную процедуру сразу после добавления с помощью фонового задания. В случае неудачи оставит процедуру у себя для доотправки.

Для синхронных методов мы добавляем в очередь только в том случае, если интеграция не отработала.

Примеры как именно вызывать функции синхронных и асинхронных интеграций содержаться в обработке "Примеры работы очереди".

Примеры функций интеграций содержатся в модуле "ВыполнениеИнтеграций".

Обработка и модуль входят в приложенный файл cf, но не являются частью подсистемы.

Добавление в очередь происходит функцией ОбновитьОчередьИнтеграций. Запуск очереди это процедура ОтправитьИзОчередиИнтеграций.

Настройки очередей:

По умолчанию запуск конкретной задачи из очереди происходит в течении суток с момента помещения её в очередь. При помощи константы "ДлительностьУниверсальнойОчередиИнтеграций"можно изменить это время (в сек).

Также есть регистр сведений "Настройка универсальной очереди". Регистр предназначен для настройки конкретной интеграции. На примере на скриншоте выставлены значения Частота=600, Длительность=3600. Это значит, что данная интеграция будет осуществлять попытку успешно выполниться в течении часа (3600сек) с периодичностью каждые 10 мин (600сек). В случае успешного выполнения задача уйдет из очереди. Если в течении этого времени задача выполнена успешно не будет, то она так и останется в очереди, но попыток её отправить более не будет. Это необходимо для понимания что именно не отработало, чтобы запустить это в ручном режиме, изменить настройки очереди для данной интеграции и.т.д.

Запуск очереди происходит с помощью регламентного задания. По умолчанию задание запускается каждые 5 мин.

Разработка и тестирование происходили на платформе 1С 8.3.11.2867.

6 Comments

  1. milkers
    Интегра́ция (от лат. integratio — «вставка») — процесс вставки частей во что-то. В зависимости от контекста может подразумеваться: Веб-интеграция — объединение разнородных членов и систем в единую среду на базе веб.

    Теперь вопрос, причем здесь интеграция?

    Reply
  2. awk

    Как быть с фантомами? Вставляем такую «синхронную интеграцию» посередине обработки проведения, транзакция откатилась, а сообщение отправилось?

    Reply
  3. NovPas

    (2) Ситуация без очереди: Транзакцию начинаем. Что-То отправляем. Транзакцию откатываем. Передача уже состоялась, а не должна бы.

    Ситуация с очередью: Транзакцию начинаем. Что-То отправляем. Это Что-то пошло не так, поэтому добавляем в очередь. Транзакцию откатываем. Также запись уходит и из очереди. Или все счастливы или я вас не понял?!

    Reply
  4. awk

    (3) да пока отправляли — все так. И подтверждение получили, а вот потом не так и *…

    Reply
  5. NovPas

    (1) В данном случае по интеграцией понимали обмен. В любом случае уходит от этого слова поскольку решение хорошо себя показывает и для задач не связанных с обменами/интеграциями.

    Reply
  6. Terve!R

    Нифига не понятно, но очень интересно)

    Надо думать куда на практике применить.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *