Как получить значение из ассинхронной процедуры
Добрый день!
Для реализации разных запросов по API в честный знак написал код который возвращает токен.
Но на клиенте использование синхронных методов запрещено.
Переделал получение сертификата вот так:
Дальнейшие действия по получению токена после получения сертификата надо писать в процедуре ПолучитьСписокСертификатовЗавершение.
Вопрос: Как теперь вернуть из процедуры ПолучитьСписокСертификатовЗавершение результат запрашивающему токен.
Для реализации разных запросов по API в честный знак написал код который возвращает токен.
Но на клиенте использование синхронных методов запрещено.
Переделал получение сертификата вот так:
Функция ПолучитьСертификат()
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТипХранилищаСертификатов", ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
ДополнительныеПараметры.Вставить("ПроверятьДатуОкончания", Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьСписокСертификатовЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ДополнительныеПараметры.Вставить("ОповещениеЗавершения", ОписаниеОповещения);
ОбратныйВызов = Новый ОписаниеОповещения("ИнициализацияЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Криптография = Новый МенеджерКриптографии;
Криптография.НачатьИнициализацию(ОбратныйВызов, "", "", 75);
КонецФункции
Процедура ПолучитьСписокСертификатовЗавершение(СписокСертификатов, ДополнительныеПараметры) Экспорт
Отпечаток = "68c9.........................ec63f7";
Для Каждого Строка Из СписокСертификатов Цикл
Если СтрЗаменить(Строка.Отпечаток," ","") = ВРег(Отпечаток) Тогда
Сертификат = Строка;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияЗавершение(Менеджер, ДополнительныеПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПолучениеХранилищаСертификатовЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Менеджер.НачатьПолучениеХранилищаСертификатов(Оповещение, ДополнительныеПараметры.ТипХранилищаСертификатов);
КонецПроцедуры
&НаКлиенте
Процедура ПолучениеХранилищаСертификатовЗавершение(Хранилище, ДополнительныеПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("МассивСертификатовЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Хранилище.НачатьПолучениеВсех(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МассивСертификатовЗавершение(Сертификаты, ДополнительныеПараметры) Экспорт
Результат = Новый Массив;
ТекущаяДата = ТекущаяДата();
Для Каждого Сертификат Из Сертификаты Цикл
Если ДополнительныеПараметры.ПроверятьДатуОкончания И Сертификат.ДатаОкончания < ТекущаяДата Тогда
Продолжить;
КонецЕсли;
Результат.Добавить(Сертификат);
КонецЦикла;
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения, Результат);
КонецПроцедуры
ПоказатьДальнейшие действия по получению токена после получения сертификата надо писать в процедуре ПолучитьСписокСертификатовЗавершение.
Вопрос: Как теперь вернуть из процедуры ПолучитьСписокСертификатовЗавершение результат запрашивающему токен.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Спасибо. Похоже никак.
Не писать же каждый раз эту преамбулу с получением сертификата, а затем токена при каждом запросе в ЧЗ.
Сделаю наверное регистр сведений по аналогии с УТ.
Они хранят ключ сессии и периодически его обновляют.
Мне больше подойдет хранить сразу токен.
А потом уже при создании разных запросов в ЧЗ обращаться к этому регистру сведений.
Токен действителен в течении 11 часов. Сделать регламентное задание, которое будет обновлять этот токен по расписанию.
Не писать же каждый раз эту преамбулу с получением сертификата, а затем токена при каждом запросе в ЧЗ.
Сделаю наверное регистр сведений по аналогии с УТ.
Они хранят ключ сессии и периодически его обновляют.
Мне больше подойдет хранить сразу токен.
А потом уже при создании разных запросов в ЧЗ обращаться к этому регистру сведений.
Токен действителен в течении 11 часов. Сделать регламентное задание, которое будет обновлять этот токен по расписанию.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот