Механизм асинхронного получения данных предназначен для создания API, позволяющих запросить и получить из приложения 1С данные, которые еще не существуют в приложении.
Для разработчика этот механизм позволяет не отвлекаться на механику транспорта. На вход прикладной разработчик получает идентификатор обработчика и двоичные данные, которые разбирает и формирует нужные данные в ответ. Если разработчику нужно получить асинхронно еще какие-то данные, то он может воспользоваться функцией паузы, также реализованной программном интерфейсе БТС.
Обработка для эмуляции асинхронного получения данных: АсинхронноеПолучениеДанных.epf
В механизме не используется ролевая модель платформы 1C:Предприятие, по этому данный транспорт может использоваться только в направлении "Внешняя система" → "Сервис 1С:Фреш", где пользователь , под которым инициируется получение данных является служебным, представляющим эту внешнюю систему, а не конкретного человека. При этом разработчик прикладного решения может реализовать свою собственную ролевую модель.
Схема работы
- Внешний сервис передает параметры получения данных в приложение 1С через сервис DataTransfer запросом POST в объектное хранилище асинхронного получения данных - async. В качестве id указывается идентификатор данных.
- Параметры сохраняются в файловом хранилище и id настроек и id данных передаются в задание очереди.
- Создается задание очереди.
- В качестве результата на запрос возвращает идентификатор задания очереди.
- В задании очереди выполняется обработчик формирования данных по переданным параметрам. Результаты помещаются в файловое хранилище.
- Внешний сервис периодически опрашивает приложение 1С по идентификатору задания очереди и получает ответ, что данные еще не сформированы (код 10202), и нужно подождать, или что данные сформированы (код 10200). В результате передается id файла.
- Внешний сервис получает запрошенные данные.
Программный интерфейс подсистемы
Методы программного интерфейса
Расположены в общем модуле АсинхронноеПолучениеДанных.
Функция НовыйОписаниеВозвращаемыхДанных
Возвращает новую структуру описания возвращаемых данных. Может использоваться при встраивании подсистемы для подготовки структуры описания отчета для метода АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные
.
Возвращаемое значение:
Структура
- описание отчета:МодульМенеджер
-ОбщийМодуль
,МодульМенеджераОбъекта
- модуль менеджера модуль менеджера получения данных, из которого будет вызван методВозвращаемыеДанные
.Наименование
-Строка
- наименование возвращаемых данных.Описание
-Строка
- подробное описание возвращаемых данных.ТипыРезультата
-Массив
изСтрока
- типы возвращаемых данных.
Функция ДоступныеВозвращаемыеДанные
Возвращает перечень доступных данных.
Возвращаемое значение:
Соответствие
- перечень доступных возвращаемых данных.Ключ
-Строка
- идентификатор данныхЗначение
-Структура
- описание данных(см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)
Переопределяемые методы программного интерфейса
Расположены в общем модуле АсинхронноеПолучениеДанныхПереопределяемый
.
Процедура АвторизоватьЗапрос
Вызывается при первичной обработке входящего запроса.
Позволяет выполнить прикладную логику, связанную с валидацией входящего запроса и при необходимости отказать в обработке запроса.
Метод должен использоваться, если прикладной разработчик реализует собственную ролевую модель доступа к данным.
Параметры:
ИдентификаторДанных
-Строка
- идентификатор данных. Может быть переопределено при обработке. Указывается в качестве имени файла, возвращаемом в результате.Параметры
-ДвоичныеДанные
- переданные параметры получения данных.Отказ
-Булево
- Возвращаемый параметр. Признак отказа в авторизации. При отказе в авторизации устанавливать вОтказ = Истина
.СообщениеОбОшибке
-Строка
- Возвращаемый параметр. Текст сообщения об ошибке при отказе в авторизации.
Процедура УстановитьДоступныеВозвращаемыеДанные
Вызывается при формировании списка доступных отчетов и при получении данных отчета. Определяет список отчетов, подключенных к подсистеме.
Параметры:
ДоступныеВозвращаемыеДанные
-Соответствие
изКлючИЗначение
Ключ
-Строка
- идентификатор данныхЗначение
- см.АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных
Методы, возвращающие стандартные кодов возвратов по имени метода
Предполагается использование при формировании ответов при подготовке данных в прикладных объектах.
Методы находятся в общем модуле АсинхронноеПолучениеДанныхСловарь
.
КодВозвратаОшибкаДанных
КодВозвратаВнутренняяОшибка
КодВозвратаВыполненоСПредупреждениями
КодВозвратаВыполнено
КодВозвратаНеНайдено
Возвращаемое значение
Число
- стандартный код возврата по имени метода
Методы, возвращающие типы файлов возвращаемых данных
Методы предполагается использовать при подготовке данных в прикладных решениях для формирования имени файлов результатов и для использования в условиях.
Методы находятся в общем модуле АсинхронноеПолучениеДанныхСловарь
.
ТипJSON
ТипXLSX
ТипPDF
Реализация программного интерфейса в прикладной конфигурации
Подключение обработчиков получения данных к подсистеме реализуется 2-мя методами.
Процедура УстановитьДоступныеВозвращаемыеДанные
Заполняет перечень доступных возвращаемых данных. Процедура должна вызываться из переопределяемого модуля АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные
.
Параметры:
ДоступныеВозвращаемыеДанные
-Соответствие
изКлючИЗначение
:Ключ
-Строка
- идентификатор данныхЗначение
- см.АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных
Функция ВозвращаемыеДанные
Возвращает данные по идентификатору данных
Параметры:
ИдентификаторДанных
-Строка
- идентификатор данных. Указывается в качестве имени файла, возвращаемом в результате. Может быть переопределен.Параметры
-ДвоичныеДанные
- переданные параметры получения данных.КодВозврата
-Число
- код возврата обработчика получения данных (по умолчанию - 10200).Ошибка
-Булево
- признак ошибки (по умолчанию - Ложь)СообщениеОбОшибке
-Строка
- подробности ошибки (по умолчанию не заполнено).
Возвращаемое значение:
ДвоичныеДанные
- возвращаемые данные.
Логика по разбору параметров и формированию возвращаемых данных остается за прикладным разработчиком.