|
Электронная подпись выполняется отложено | ☑ | ||
---|---|---|---|---|
0
grum01
06.06.24
✎
03:47
|
Доброго времени.
Разрабатываю интеграцию с гос.системой. Для отправки запросов каждый из них нужно подписать ЭЦП. С этим проблем нет, когда запрос один. Трабл возникает, когда пытаешься отправить поочередно несколько запросов. Вот созданная простая конструкция из трех процедур: ---------------------------------------- Процедура Старт(Кнопка) Для каждого ТекСтр Из Партии Цикл ПодписатьДокумент(ТекСтр); КонецЦикла; КонецПроцедуры Процедура ПодписатьДокумент(ТекСтр) ............... ОбработчикПродолжения = Новый ОписаниеОповещения("ВыполнитьЗапрос", ЭтаФорма, ПараметрыВыполнения); ЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанных, ЭтаФорма, ОбработчикПродолжения); КонецПроцедуры Процедура ВыполнитьЗапрос() ..................... КонецПроцедуры ---------------------------------------- В процессе выяснилось, что процедура подписания ЭлектроннаяПодписьКлиент.Подписать() (типовая из БСП) начинает выполняться только после полного завершения процедуры "Старт". То есть цикл из первой процедуры "Старт" полностью выполняется еще до того, как самый первый запрос будет подписан и выполнен. Странное поведение. Подозреваю, что проблема кроется в стандартном ЭлектроннаяПодписьКлиент.Подписать(), это где-то там система откладывает исполнение "на потом". Но пошаговый просмотр выполнения этой процедуры не помог мне найти то самое место. Как заставить систему полностью отрабатывать процедуры "ПодписатьДокумент" и "ВыполнитьЗапрос" прежде, чем переходить к следующему шагу цикла Старт? Или как еще можно заставить систему выполнить поочередно несколько запросов? Кто-нибудь сталкивался? |
|||
1
Лодырь
06.06.24
✎
04:37
|
Ну убери цикл. И вызови в конце выполнить запрос снова процедуру подписания уже следующего документа.
|
|||
2
Web00001
06.06.24
✎
05:56
|
ЭлектроннаяПодписьКлиент либо подписывает вот здесь
Если ОписаниеДанных.КонтекстОперации.ИмяФормы = НачалоИмениФормы + "ПодписаниеДанных" Тогда ОписаниеДанных.КонтекстОперации.ВыполнитьПодписание(КлиентскиеПараметры, ОбработкаЗавершения); Возврат; КонецЕсли; Не могу глянуть отладчиком, либо открывает форму, кури в этих местах |
|||
3
Тихий омут
06.06.24
✎
06:12
|
Думаю, в конце концов всё уходит в ЭлектроннаяПодписьСлужебный.Подписать(). Если не лень, можешь разобраться и вызывать её. Когда пилил интеграцию с ГИИС ДМДК, пришлось использовать именно эту функцию - требовалось автоматическое подписание очереди запросов на сервере, без участия пользователя
|
|||
4
grum01
06.06.24
✎
06:26
|
(3) Вот я тоже ДМДК и пилю.. Только у меня пользователь должен запустить процесс, а дальше все запросы должны пройти по очереди, дожидаясь результата каждого.
Просто опыты в УФ крайне мало, вот с асинхронностью впервые столкнулся. Пока пошел по простому пути (1) , а то там в процедурах подписания асинхронные процедуры друг на друге сидят.. |
|||
5
Тихий омут
06.06.24
✎
06:32
|
(4) получаешь сведения о партиях? С комплектами веселуха
|
|||
6
grum01
06.06.24
✎
07:06
|
Была бы ювелирка - купил бы готовое и прикрутил.
Но у нас производство - переработка и обогащение. Комплектов нет. И готовых решений тоже нет :( А данная тема - проблема в регистрации партий: таблица из 20-40 партий (слитков) и их надо по очереди зарегистрировать в дмдк, дождаться ответа по каждой регистрации, проанализировать ответ прежде, чем переходить к следующей... Зато есть веселуха с родительскими партиями. Их учет и связка с выходящими партиями.. Но это еще впереди. |
|||
7
grum01
06.06.24
✎
07:08
|
В общем-то решил по пути (1) .
Немного сломал голову в логике учета обработанных строк. Но, вроде, корректно работает. Спасибо всем! |
|||
8
Тихий омут
06.06.24
✎
15:26
|
(6) SendBatch или SendSpecification?
|
|||
9
grum01
07.06.24
✎
05:02
|
(8) Пока SendBatch и CheckBatch.
Но впереди полный цикл с контрактами и спецификациями :) |
|||
10
grum01
07.06.24
✎
05:03
|
(8) Меня доставляет запрос остатков в дмдк :)
Сцуко, четыре раза надо последовательно обратится к сервису, чтобы он отдал остатки :)) |
|||
11
Тихий омут
07.06.24
✎
06:54
|
(9) У SendBatch для производства какие-то свои особенности? В смысле передачи сразу нескольких партий в одном запросе. Интересуюсь для общего развития, так сказать:)
(10) GetBatch + page? |
|||
12
Тихий омут
07.06.24
✎
08:33
|
(10) Понял, BatchRevision и GetBatchRevision. Да, ГИИС это что-то...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |