|
Возможно ли отказаться от закрытия управляемой формы в режиме без модальности? |
☑ |
0
Gorr
23.06.22
✎
17:38
|
Как в режиме без использования модальности. Задать уточняющий вопрос и отказаться от закрытия формы?
Нечто наподобии Ответ = Ждать ВопросАсинх("Закрыть форму?"); в событии ПередЗакрытием формы?
|
|
1
lodger
23.06.22
✎
17:48
|
&НаКлиенте
Асинх Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Отказ = Истина;
ТекстПредупреждения = "Несохраненные данные будут потеряны. Закрыть форму?";
Иначе
Ответ = Ждать ВопросАсинх("Закрыть форму без сохранения данных?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
|
|
2
Gorr
23.06.22
✎
18:04
|
Этот вариант был практически первым. Сложность тут вот в чем: когда добавляется "Асинх" перед обработчиком события, форма успевает закрыться до того как происходит возврат из ВопросАсинх. Без "Асинх", использование внутри процедуры "Ждать" будет вызывать ошибку.
Есть подозрение что так будет с любым обработчиком события формы. т.е. "Подвесить любой обработчик события в режиме без модальности невозможно.
|
|
3
Gorr
23.06.22
✎
18:07
|
Таким образом использовать "Асинх" в обработчиках формы нельзя. хотя в командах формы вполне себе работает.
|
|
4
ChiginAV
24.06.22
✎
07:44
|
Тупое решение, но тем не менее...
Добавить параметр формы "ЗакрытиеФормыРазрешено" (по умолчанию ЛОЖЬ) и проверять его "ПередЗакрытием". Это не даст закрыть форму стандартными способами.
На форму добавить свою кнопку для закрытия. В ней реализовать все вопросы/обработчики и, если все ОК, то
ЗакрытиеФормыРазрешено = ИСТИНА;
Закрыть();
|
|
5
Irbis
24.06.22
✎
08:07
|
(4) когда-то очень похожим образом поступали в "клюшках". Всё новое — это хорошо забытое старое.
|
|
6
Gorr
27.06.22
✎
21:41
|
(4) суть как раз была в том, чтобы перехватить стандартный обработчик. но, так тоже можно.
Я сделал аналогично - добавил флаг "ЗакрыватьБезСохранения". Перед закрытием если не сохранили, Отказ + сообщение.
|
|