Имя: Пароль:
1C
1C 7.7
v7: Не срабатывает таймаут в предупреждении? Баг, фича, или я чего-то накосячил?
,
0 MWWRuza
 
гуру
03.12.22
10:43
Добрый день!
Немного навороченная конструкция, но, что делать...
Робот по запросу марок для списания из ЕГАИС...
Марки можно запрашивать только в разрезе конукретной справки, раз в 10 минут. Такие ограничения в ЕГАИС, тут ничего не поделать.
Нужно запросить несколько тысяч(!!! :-( ) марок... Сделал робота, который это делает в автоматическом режиме...
Принцип такой:
Внещняя обработка, в ней:
В обработке ожидания, раз в 10 минут идет запрос к ЕГАИС по заранее полученному списку справок(процедуры/функции для этого в ГМ, старые, работают давно и успешно).
При получении ответа от УТМ, запускается еще одна обработка ожидания, которая раз в 30 секунд дергает функцию, проверяющую ответ от сервера ЕГАИС, тоже из ГМ...
Когда марки есть, то все отрабатывает как задумано - добавляются в заполняемый документ и все работает дальше.
Но, конструкция получения марок в функции на сервере, обернута в Попытку. Так, как состав тегов в зависимости от результатов ответа разный.
Вот типа так:
Попытка
Делаем то, что нужно
Исключение
Предупреждение("По справке " + СокрЛП(Справка) + " в ЕГАИС у Вас нет марок!", 3);
КонецПопытки;
Ну, казалось бы, что такого? Ну, повисит месага 3 секунды на экране и закроется. После чего все должно продолжить работать дальше.

Запустил с вечера, вроде как работает... Пошел спать.
Утром просыпаюсь, смотрю а на экране висит это предупреждение, и не закрывается... Несколько десятков марок в документ добавилось, и все встало на первой-же справке, по которой нет марок...
Что за ерунда? Почему оно не закрылось по истечении таймаута 3 сек?
Что мешает?

PS Я конечно сделал костыль для обхода этого, добавил параметр "БезПред = 0" в эту функцию, но хочу понять, почему так происходит?
PSS Обработки ожидания на ФормЕксе, если это важно...
1 Guk
 
03.12.22
10:47
Добрый день!
ты с егаисом в 77 не через асинхронные вызовы работаешь? силён!...
2 MWWRuza
 
гуру
03.12.22
11:10
Да в обычных процедурах работы вроде как и не было необходимости что-то выдумывать, магазинчики мелкие, и так все устраивает.
А тут, разовая задача, магаз закрывается, нужно марки просто списать.
Но, по сути, этот "робот" работает асинхронно, через обработки ожидания, не блокирует ничего, хотя задача такая и не ставилась...
3 hogik
 
04.12.22
12:29
Это Баг. Функция Предупреждение иногда зависает.
4 kupec
 
04.12.22
12:30
Почему нельзя сделать СООБЩИТЬ?
5 MWWRuza
 
гуру
04.12.22
15:11
Жа, спасибо, я так и подумал что баг :-(

(4) Почему нельзя?
Так и сделал:

Функция глПолучитьОтветМарки(ИдЗапроса, УТМ_URL, БезПред = 0) Экспорт
***************
Попытка
***************
Исключение
Если БезПред = 0 Тогда
Предупреждение("По справке " + СокрЛП(Справка) + " в ЕГАИС у Вас нет марок!", 3);
Иначе
Сообщить("По справке " + СокрЛП(Справка) + " в ЕГАИС у Вас нет марок!");
КонецЕсли;
***************
КонецПопытки;

Просто хотелось понять, почему так происходит...
6 victuan1
 
05.12.22
05:54
Может из-за потери фокуса?
7 MWWRuza
 
гуру
05.12.22
13:00
Может... Х.З., какой там фокус, если предупреждение из функции в ГМ вызывается. По идее, ничего не нажали за 3 секунды, должен таймаут сработать. А оно висит до бесконечности... А... Кстати, пока оно висит, динамик блямкает, достаточно часто, с периодичностью примерно пол секунды. Может все-таки что-то с обработкой ожидания связано?
8 MWWRuza
 
гуру
05.12.22
13:16
Да фиг с ним... "Семерка еще сырая"(С)" :-)
Крутится такая обработка:
https://cloud.mail.ru/public/VEqJ/6z6ZGQApA
В случае отсутствия марок пишет номер справки и сколько не хватает в текстовик, параллельно в табло сообщает.
То, по чем марки есть - в документ списания сохраняет.
Периодически можно его отправлять в ЕГАИС, и вводить новый, пустой, перезапросив остатки заново. То, что без марок в лог попало - исключается из списка запрошенных, что-бы повтолно по 10 минут не тратить на то, что обработано :-)

И ладно. Удовлетворительно :-)

Но, "крутиться" ей еще 19 дней... Случай "особо-запущенный" :-(
9 MWWRuza
 
гуру
05.12.22
13:24
Можно конечно через КвериФильтр(локальная база самого УТМ) сделать... Но, по опыту - не совсем он корректно работает... Куча ошибок. Документ заполненный марками с контролем через него, все равно кучу ошибок выдает при отправке в ЕГАИС... Хотя, вроде и "Настройки"(реально - это локальная база марок) обновлены, а все равно с сервером не совпадает.
10 MWWRuza
 
гуру
06.12.22
20:02
(9) Можно конечно через КвериФильтр(локальная база самого УТМ) сделать...

Не... Не хватило терпения ждать. Сделал.
Это работает только по "новым" маркам, которые 150 символов. Те, которые старые, 68 символов - не находит в фильтре, не смотря на то, что были получены "помарочно".
По новым ошибки были, но, не много - но почти 6000 марок и 2000 справок F2, порялка десятка.
Справился.
Осталось 127 справок, видимо большей частью "старые" марки.
Теперь уже "роботом" добью, через запросы к ЕГАИС, раз в 10 минут - по другому, все равно никак.
11 victuan1
 
07.12.22
05:44
(8) Это Предупреждения вызывается случаем не из другой модально открытой формы?
12 victuan1
 
07.12.22
05:46
(10) У меня аналогичное с КвериФильтром (только для новых марок) и запросом КвериБарКод (для любых) тоже сделано отдельной обработкой.
Нареканий на КвериФильтр у меня нет, работает четко и быстро.

https://youtu.be/LYgMpMN36ZU
13 MWWRuza
 
гуру
07.12.22
15:13
(11) Нет. В этой обработке вообще нет модальных окон.

Ну, по КвериФильтру достаточно терпимо отработало. По новым маркам всего по 2 справкам ошибки были(по одной справка не найдена в ЕГАИС при списании, а по второй - "необеспеченный расход"). Удалил их из документов списания, и все прошло. На количестве более 6000 марок, допустимая "погрешность" :-)
А вот старые марки только запросом к серверу, КвериФильтр о них ничего не знает.
Но, тоже их не много, на сегодняшний момент всего 15 справок осталось, дождемся :-)
14 MWWRuza
 
гуру
08.12.22
11:51
Все... Закончилась эта "бодяга". Выявлены 92 справки, по которым на рег. 3 нет марок, и они все "новые", начинаются номера на 5 нулей, получались "помарочно", поэтому, списать их без указания марок самим не возможно.
Составили обращение в ФСРАР, с просьбой списать их в "0".

PS Это последствия массовых сбоев в ЕГАИС конца 2021 начала 2022 года. Такое у всех тогда происходило.
15 MWWRuza
 
гуру
10.01.23
17:59
(14) Составили обращение в ФСРАР, с просьбой списать их в "0".

Вспомнил старую тему :-)
ФСРАР обращение обработали, все списали в 0. Не зря старался :-)
Примерно за неделю.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс