Иногда окно не отображается на заднем плане, что может приводить к блокировке интерфейса и другим серьезным проблемам. Пользователю сложно понять, что происходит, к тому же ввод остается заблокированным, а TurboConf приостановленным.
Я полагаю, что это происходит из-за отсутствия в скрипте вызова НачатьВызовВнешнегоОкнаАсинх() с включенным флагом управления модальными окнами.

#1, ред. 23 мая 2024 19:33
До подключения этого приложения я не знаю какой у него будет идентификатор процесса и заголовок окна. Поэтому непонятно какие параметры передавать в НачатьВызовВнешнегоОкнаАсинх. А эта ошибка возникает в процессе подключения.
tormozit изменил статус на Открыто
#2, 23 мая 2024 19:38
(1) tormozit, видимо нужен метод в АПИ, который будет отслеживать любое новое модальное окно и активировать его.
#3, ред. 23 мая 2024 19:43
(2) bolsun, так можно чужое окно поймать вместо своего. Фильтр по строке запуска процесса окна поможет снизить эту вероятность.
#4, ред. 23 мая 2024 19:43
(3) tormozit, я их определяю по классу и вероятность, что в момент запуска клиентского приложения появится такое новое модальное окно в другом конфигураторе или клиентском приложении очень низкая.
#5, 23 мая 2024 19:44
Текущие модальные окна, конечно не будут учитываться
#6, ред. 23 мая 2024 19:45
(4) bolsun, ERP может запускаться до 60 секунд. За это время пользователь легко успеет пооткрывать модальные окна в других приложениях 1С.
#7, ред. 23 мая 2024 19:49
Вот пример строки запуска COM приложения 1С.
"C:\Program Files (x86)\1cv8\8.3.25.1257\bin\1cv8.exe" -Embedding
Она всегда имеет фрагмент "-Embedding"
#8, ред. 23 мая 2024 20:21
Остается вопрос как долго мне ожидать этих модальных окон, если клиентское приложение может запускаться неизвестное время. Или ты будешь сам завершать его?
#9, ред. 23 мая 2024 20:23
(8) bolsun, ну мне управление точно не вернется пока висит это окно, что конечно можно отнести к недоработке платформы 1С. Поэтому скриптом не смогу делать какие либо проверки на появление окна.
#10, ред. 23 мая 2024 20:26
У нас же есть чудесный готовый метод, можно пока его использовать. Пусть без ПИДа но лучше чем блочить интерфейс.
#11, 23 мая 2024 20:29
#12, ред. 23 мая 2024 20:31
Ну раз в миллион лет активируется новое модальное окно другого клиента (вероятность, что это произойдет очень мала).
#13, 23 мая 2024 20:34
Он вроде для этого случая и был сделан.
#14, 23 мая 2024 21:45
Не наблюдаю эффекта от применения метода НачатьУправлениеМодальнымиОкнами
RDT.os
#15, 23 мая 2024 23:02
(14) tormozit, логично. Ты поставил время ожидания 60мс.
#16, ред. 23 мая 2024 23:14
Поставил 60000 мс. Экран замерз и примерно 5 минут я пытался его разблокировать. Другие приложения было невозможно активировать. Хорошо что диспетчер задач открывался (у него я заранее включил "Всегда поверх всех окон"). После ручного убийства процесса 1С, который показывал модальное окно, стал циклически появляться вопрос про подключение ИР адаптера. Я отвечал "Нет" и возникала ошибка, после которой вопрос снова появлялся бесконечно. Пришлось убить Турбоконфа.
Помню что в первый раз этот метод тоже не работал как надо.
C4dKLKwnqa.mp4
Ссылка скрыта
#17, 23 мая 2024 23:16
(16) tormozit, возможно. Метод так и не был толком протестирован, посмотрю.
#18, 24 мая 2024 12:44
(16) tormozit, исправил активацию модального окна
6.2.8910.26450
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#19, 24 мая 2024 16:42
Жду подтверждения работоспособности метода, для отправки исправлений в релиз.
#20, 24 мая 2024 19:07
Улучшений не заметил
Ссылка скрыта
#21, 24 мая 2024 19:17
(20) tormozit, что предшествует запуску клиента, какая команда или действие?
#22, 24 мая 2024 19:24
(21) bolsun, вызов подсказки через CTRL+Space
#23, 24 мая 2024 19:43
(16) tormozit, сейчас точно такое же поведение с зависанием?
В логе видно, что новое модальное окно было найдено и фокус в него установлен. Также оно было закрыто кликом мыши.
#24, 24 мая 2024 19:47
(23) bolsun, Да. В логе я видел что окно найдено. Но экран при этом заморожен похоже оверлеем, т.к. уведомлений не видно. А после убийства COM приложения экран размораживается и видны все уведомления.
#25, 24 мая 2024 19:47
Похоже нужно в скрипте добавить установку фокуса в окно конфигуратора, после ТурбоКонф.ЗавершитьУправлениеМодальнымиОкнами(ИДЗадачи);
не важно было модальное окно или нет, т.к. фокус после закрытия окна остается в клиенте
#26, ред. 24 мая 2024 19:48
(25) tormozit, отключи оверлей принудительно в Настройках, чтобы убедится что это он мешает клику.
#27, 24 мая 2024 19:54
Есть еще подозрение, что мешает уведомление с анимацией о появлении модального окна, убрал его.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#28, 24 мая 2024 21:55
(26) bolsun, с отключенным оверлеем работает вроде нормально
#29, 24 мая 2024 21:57
(27) bolsun, в этой версии не заметил изменений в поведении с включенным оверлеем.
#30, 25 мая 2024 13:54
(29) tormozit, у меня включение/отключение оверлея не влияет на работу метода, т.к. оверлей уже закрыт в момент появления модального окна.
Нужен лог из этой версии 6.2.8911.27918.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
Также файл настроек, в каком модуле вызывается подсказка, развернуто окно или нет.
#31, 25 мая 2024 14:19
(30) bolsun, в этой версии не удалось воспроизвести проблему. Ты что то менял кроме логирования?
#32, 25 мая 2024 14:20
(31) tormozit, да, немного улучшил закрытие оверлея.
#33, 25 мая 2024 14:21
(31) tormozit, можешь лог сделать? я проверю на всякий случай, что оверлей корректно закрывается.
#34, ред. 25 мая 2024 14:24
В режиме обычного клиентского приложения проблема больше не проявляется.
Но в управляемом клиентском приложении все еще немного присутствует. В нем окно ошибки сначала не выходит на передний план. Но при кликах появляется уведомление о разблокировке и после разблокировки уже активируется окно ошибки.
Ссылка скрыта
#35, 25 мая 2024 14:26
(34) tormozit, понял причину. В управляемом приложении другие классы окон.
V8TopLevelFrameSDI - главное
V8TopLevelFrameSDIsec - окно ошибки
#36, ред. 25 мая 2024 14:28
Можно в параметр КлассОкна передать регулярку, т.е. "V8TopLevelFrameSDIsec|V8NewLocalFrameBaseWnd"? Или может вообще без класса окна сделать (PID я добыл надежно)?
#37, ред. 25 мая 2024 14:37
Получилось без класса окна. Обнови документацию параметра className. По факту он не обязательный.
Регулярка "V8TopLevelFrameSDIsec|V8NewLocalFrameBaseWnd" в качестве класса окна не сработала.
#38, 25 мая 2024 14:37
(37) tormozit, да, пустое значение класса - игнорируется и не проверяется. Сделал параметр необязательным.
#39, 25 мая 2024 15:24
(34) tormozit, да, в логе теперь вижу правильное закрытие оверлея.
#40, 26 мая 2024 22:12
Исправлено в 1.54
#41, 30 мая 2024 08:32
tormozit изменил статус на Закрыто