Всем здравствуйте! Хочу программно закрыть модальное окно (в обычных формах - оповещение пользователя) и никак не найду решения, уже небольшой комод собрал, вот:

```1c
    //1. только управляйки
    //Для Каждого Запись Из АктивноеОкно().Содержимое Цикл
    // Сообщить(Запись.Заголовок);
    // Запись.Закрыть();
    //КонецЦикла;
    //2. Не работает
    //Оповестить("ИзменениеОповещенияПользователей");
    //3. Не работает
    //ФормаОповещения = ПолучитьОбщуюФорму("ДиалогОшибкаВопрос");
    //ФормаОповещения.Закрыть();
    //4. не работает с модальным также
    //Попытка
    // Shell= Новый COMОбъект("Wscript.Shell");
    // Shell.SendKeys("{ESC}");
    //Исключение
    //КонецПопытки;
```

Кто-нибудь знает решение? Отказаться от модальности здесь не реально
---
Отправляй оповещение с определенным именем.
Оповестить("ЗакрытьЭтоМодальноеОкно");
В форме в обработчике оповещения проверяй имя события, и если имя совпадает - закрывай.
---
ОткрытьМодально(<Таймаут>), Таймаут = 10 сек. Закроется через 10 секунд.
---
Спасибо, но таймер не подходит - нужно закрывать только при смене основного сообщения, а это может произойти или нет
---
Боюсь, тут проблема в точной формулировке задачи. Верно сформулированная задача на 50% и есть решение.
---
(4) В модуле обычного приложения раз в минуту (обработчик ожидания) запускается проверка оповещений пользователям. Поскольку имеем дело с обработчиком ожидания, то для запуска процедуры заново необязательно завершение предыдущего запуска, а при этом в ходе него может модально открыться окно формы. Я могу определить, закончилось ли выполнение предыдущей процедуры путем Сохранения значений в хранилище, однако, среагировать и закрыть открытое в предыдущей процедуре модальное окно я не в силах, оно не реагирует на мои попытки! Сохранять в хранилище дескриптор формы я даже не пытался, да, это не УФ, но думаю и здесь нелепо. Тысячу лет назад нам рассказывали об объектах Приложение или как-то так, может и в 8.3 есть подобный объект, от которого можно добраться даже до модального окна?
---
Отправляй оповещение с определенным именем.
Оповестить("ЗакрытьЭтоМодальноеОкно");
В форме в обработчике оповещения проверяй имя события, и если имя совпадает - закрывай.
---
не работает в модальном окне, проверял же (в теме есть)
---
Что именно не работает? В какой момент?
Оповещения не приходят, или что именно?
---
Оповещения не приходят, да - соответственно, команда закрытия не срабатывает
---
Оповещения должны отправляться в том же сеансе, где открыто окно.
Во вложении обработка - из одного окна по кнопке Выполнить открывается другое модальное, и по оповещению через 20 секунд закрывается.
---
Здесь работает, вижу, но видимо, модуль обычного приложения не совсем клиент, проверял - ОбработкаОповещения не срабатывает в принципе - такие дела8|
---
Приведите пример с кодом на пустой базе.
---
Стоит понимать, что когда вы открываете модально, код останавливается на этой строке, и далее выполнится только после того как окно будет закрыто.
---
Да, действительно - оповещения работают и в модуле обычного приложения, просто мой код в другом месте повлиял и оповещение не вызывалось. Так что извините!
---
best practice, от вендора: не использовать модальность. Тем более, что все современные конфигурации выпускаются уже с отключенной возможностью модальных окон.
---
Знаете другой способ показать окно поверх всех окон пользователя и затребовать (!) ответ, то есть, чтобы нельзя было переключиться, не отреагировав? При этом окно должно быть репрезентабельным, не мелким вопросом, который все равно читать никто не будет...
---
Вы можете определить некий признак завершения процесса. Осталось программно в модальной форме создать функцию. И закрывать модальное окно при условии, что эта функция вернет ИСТИНА (по обработчику ожидания).
---
Точняк! Так и сделаю! Класс!
---
У пользователя всегда должна быть возможность переключиться на другую задачу, а на вопрос ответить позже. А уже после его ответа пусть продолжит работать ваш код. Хотите вы того или нет, но ваш подход перестанет работать, поэтому его надо менять.
---
Не парьтесь, вы, видимо, с такими задачами не сталкивались, на УФ тоже старался отходить от них, но здесь -
1. пользователь не вернется - забудет, а оповещение важное (тех работы)
2. пользователь в списке окон может не найти окно, чтобы вернуться
3. если окно не модальное, может просто быстро ткнуть и даже не заметить, что что-то выскочило
4. не обдуманные мной случаи...
---
Конечно же не парюсь. А на вопросы вы сами себе должны ответить как это будет работать у вас в будущем.
---
использовать модальное окно(приложение) не от 1c, hta vbs
https://forum.script-coding.com/viewtopic.php?id=5835
---
Попробуй вызывать не модальное окно а обычное, с присоединением, и выводить там информацию... Как вариант...

Пример:
---
Ух-ты! Даже и не подумал об этом, а ведь для этого сценария прям ластится) Спасибо! Попробую