Механизм асинхронного получения данных предназначен для создания API, позволяющих запросить и получить из приложения 1С данные, которые еще не существуют в приложении. 

Для разработчика этот механизм позволяет не отвлекаться на механику транспорта. На вход прикладной разработчик получает идентификатор обработчика и двоичные данные, которые разбирает и формирует нужные данные в ответ. Если разработчику нужно получить  асинхронно еще какие-то данные, то он может воспользоваться функцией паузы, также реализованной программном интерфейсе БТС.

Обработка для эмуляции асинхронного получения данных:АсинхронноеПолучениеДанных.epf

Схема работы

  1. Внешний сервис передает параметры получения данных в приложение 1С через сервис DataTransfer запросом POST в объектное хранилище асинхронного получения данных - async. В качестве id указывается идентификатор данных.
    • Параметры сохраняются в файловом хранилище и id настроек и id данных передаются в задание очереди. 
    • Создается задание очереди.
    • В качестве результата на запрос возвращает идентификатор задания очереди.
    • В задании очереди выполняется обработчик формирования данных по переданным параметрам. Результаты помещаются в файловое хранилище.
  2. Внешний сервис периодически опрашивает приложение 1С по идентификатору задания очереди и получает ответ, что данные еще не сформированы (код 10202), и нужно подождать, или что данные сформированы (код 10200). В результате передается id файла.
  3. Внешний сервис получает запрошенные данные.

Программный интерфейс подсистемы

Методы программного интерфейса реализованные в общем модуле АсинхронноеПолучениеДанных.

Функция НовыйОписаниеВозвращаемыхДанных

Возвращает новую структуру описания возвращаемых данных. Может использоваться при встраивании подсистемы для подготовки структуры описания отчета для метода АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные.

Возвращаемое значение:

  • Структура - описание отчета:
    • МодульМенеджер - ОбщийМодуль, МодульМенеджераОбъекта - модуль менеджера модуль менеджера получения данных, из которого будет вызван метод ВозвращаемыеДанные.
    • Наименование - Строка - наименование возвращаемых данных.
    • Описание - Строка - подробное описание возвращаемых данных.
    • ТипыРезультата - Массив[Строка] - типы возвращаемых данных.

Функция ДоступныеВозвращаемыеДанные

Возвращает перечень доступных данных.

Возвращаемое значение:

  • Соответствие - перечень доступных возвращаемых данных.
    • Ключ - идентификатор данных
    • Значение - Структура - описание данных(см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Процедура

Методы программного интерфейса реализованные в общем модуле АсинхронноеПолучениеДанныхПереопределяемый.

Процедура АвторизоватьЗапрос

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

Параметры:

  • ИдентификаторДанных - Строка - идентификатор данных. Может быть переопределено при обработке. Указывается в качестве имени файла, возвращаемом в результате.
  • Параметры - ДвоичныеДанные - переданные параметры получения данных.
  • Отказ - Булево - Возвращаемый параметр. Признак отказа в авторизации. При отказе в авторизации устанавливать в Отказ = Истина.
  • СообщениеОбОшибке - Строка - Возвращаемый параметр. Текст сообщения об ошибке при отказе в авторизации. 

Процедура УстановитьДоступныеВозвращаемыеДанные

Вызывается при формировании списка доступных отчетов и при получении данных отчета. Определяет список отчетов, подключенных к подсистеме.

Параметры:

  • ДоступныеВозвращаемыеДанные - Соответствие с полями:
    • Ключ - идентификатор данных
    • Значение - Структура - описание данных (см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Методы, возвращающие стандартные кодов возвратов по имени метода

Предполагается использование при формировании ответов при подготовке данных в прикладных объектах.

  • АсинхронноеПолучениеДанныхСловарь.КодВозвратаОшибкаДанных
  • АсинхронноеПолучениеДанныхСловарь.КодВозвратаВнутренняяОшибка
  • АсинхронноеПолучениеДанныхСловарь.КодВозвратаВыполненоСПредупреждениями
  • АсинхронноеПолучениеДанныхСловарь.КодВозвратаВыполнено
  • АсинхронноеПолучениеДанныхСловарь.КодВозвратаНеНайдено

Возвращаемое значение

  • Число - стандартный код возврата по имени метода

Методы, возвращающие типы файлов возвращаемых данных

Методы предполагается использовать при подготовке данных в прикладных решениях для формирования имени файлов результатов и для использования в условиях.

  • АсинхронноеПолучениеДанныхСловарь.ТипJSON
  • АсинхронноеПолучениеДанныхСловарь.ТипXLSX
  • АсинхронноеПолучениеДанныхСловарь.ТипPDF

Реализация программного интерфейса в прикладной конфигурации

Подключение обработчиков получения данных к подсистеме реализуется 2-мя методами.

Процедура УстановитьДоступныеВозвращаемыеДанные

Заполняет перечень доступных возвращаемых данных. Процедура должна вызываться из переопределяемого модуля АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные.

Параметры:

  • ДоступныеВозвращаемыеДанные - Соответствие с полями:
    • Ключ - идентификатор данных
    • Значение - Структура - описание данных
      (см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Функция ВозвращаемыеДанные

Возвращает данные по идентификатору данных
Параметры:

  • ИдентификаторДанных - Строка - идентификатор данных.
    Указывается в качестве имени файла, возвращаемом в результате. Может быть переопределен.
  • Параметры - ДвоичныеДанные - переданные параметры получения данных.
  • КодВозврата - Число - код возврата обработчика получения данных (по умолчанию - 10200).

  • Ошибка - Булево - признак ошибки (по умолчанию - Ложь)

  • СообщениеОбОшибке - Строка - подробности ошибки (по умолчанию не заполнено).

Возвращаемое значение:

  • ДвоичныеДанные - возвращаемые данные.


Логика по разбору параметров и формированию возвращаемых данных остается за прикладным разработчиком.