Как в режиме без использования модальности. Задать уточняющий вопрос и отказаться от закрытия формы?
Нечто наподобии Ответ = Ждать ВопросАсинх("Закрыть форму?"); в событии ПередЗакрытием формы?
Если ЗавершениеРаботы Тогда
Отказ = Истина;
ТекстПредупреждения = "Несохраненные данные будут потеряны. Закрыть форму?";
Иначе
Ответ = Ждать ВопросАсинх("Закрыть форму без сохранения данных?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Этот вариант был практически первым. Сложность тут вот в чем: когда добавляется "Асинх" перед обработчиком события, форма успевает закрыться до того как происходит возврат из ВопросАсинх. Без "Асинх", использование внутри процедуры "Ждать" будет вызывать ошибку.
Есть подозрение что так будет с любым обработчиком события формы. т.е. "Подвесить любой обработчик события в режиме без модальности невозможно.
Добавить параметр формы "ЗакрытиеФормыРазрешено" (по умолчанию ЛОЖЬ) и проверять его "ПередЗакрытием". Это не даст закрыть форму стандартными способами.
На форму добавить свою кнопку для закрытия. В ней реализовать все вопросы/обработчики и, если все ОК, то
(4) суть как раз была в том, чтобы перехватить стандартный обработчик. но, так тоже можно.
Я сделал аналогично - добавил флаг "ЗакрыватьБезСохранения". Перед закрытием если не сохранили, Отказ + сообщение.