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

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

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

В механизме не используется ролевая модель платформы 1C:Предприятие, по этому данный транспорт может использоваться только в направлении "Внешняя система" → "Сервис 1С:Фреш", где пользователь , под которым инициируется получение данных является служебным, представляющим эту внешнюю систему, а не конкретного человека. При этом разработчик прикладного решения может реализовать свою собственную ролевую модель.

Схема работы

  1. Внешний сервис передает параметры получения данных в приложение 1С через сервис DataTransfer запросом POST в объектное хранилище асинхронного получения данных - async. В качестве id указывается идентификатор данных.
    • Параметры сохраняются в файловом хранилище и id настроек и id данных передаются в задание очереди. 
    • Создается задание очереди.
    • В качестве результата на запрос возвращает идентификатор задания очереди.
    • В задании очереди выполняется обработчик формирования данных по переданным параметрам. Результаты помещаются в файловое хранилище.
  2. Внешний сервис периодически опрашивает приложение 1С по идентификатору задания очереди и получает ответ, что данные еще не сформированы (код 10202), и нужно подождать, или что данные сформированы (код 10200). В результате передается id файла.
  3. Внешний сервис получает запрошенные данные.
Внешнее приложение
Внешнее приложение
Приложение
в облаке 1С:Фреш
Приложение...
POST
+ параметры
POST...
Транспорт
/hs/dt/storage/
Транспорт /hs/dt/storage/
async/{name}
async/{name}
jobs/{id}
jobs/{id}
files/{id}
files/{id}
Очередь
заданий
Очередь заданий
Подготовленные
данные
Подготовленные данные
Обработчик
подготовки
данных
Обработчикподготовкиданных...
Даные
пользователя
Даные пользователя
1 Запрос
1 Запрос
2 Ожидание
2 Ожидание
3 Получение
3 Получение
GET
GET
GET
GET
Облачная подсистема
Облачная подсистема
Прикладное решение
Прикладное решение
Обработчик
внешнего
приложения
Обработчиквнешнегоприложения...
Асинхронное
получение данных
Асинхронное получение данных
Запрос
данных
Запрос данных
Транспорт
/hs/dt/storage/
Транспорт /hs/dt/storage/
async/list
async/list
GET
GET
Запрос имен
данных
Запрос имен...
Имена данных
Имена данных
Text is not SVG - cannot display


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

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

Расположены в общем модуле АсинхронноеПолучениеДанных.

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

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

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

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

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

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

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

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

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

Расположены в общем модуле  АсинхронноеПолучениеДанныхПереопределяемый .

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

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

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

Параметры:

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

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

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

Параметры:

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

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

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

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

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

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

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

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

  • ТипJSON
  • ТипXLSX
  • ТипPDF

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

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

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

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

Параметры:

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

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

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

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

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

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

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