0
Fragster
гуру
11.03.15
✎
14:21
|
Вот такая штука валит платформу:
Если открыть форму в псевдомодальном режиме:
ОткрытьФорму(ИмяФормы, ПараметрыФормы, ЭтаФорма,,,,ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
И закрыть ее вот так (чтобы в любом случае передавать параметр владельцу, даже при закрытии крестиком):
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Закрыть(ПараметрЗакрытия); // ну, или ОповеститьОВыборе
КонецПроцедуры
То платформа падает. Пока обошел через обработчик ожидания и доп. переменную:
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Отказ = Не ВозможноЗакрытие;
ПодключитьОбработчикОжидания("ЗакрытьСоЗначением", 0.1, Истина);
КонецПроцедуры
Процедура ЗакрытьСоЗначением()
ВозможноЗакрытие = Истина;
ОповеститьОВыборе(ПараметрЗакрытия);
КонецПроцедуры
но это создает неприятную задержку. Возможно ли от нее избавится (доп кнопку сделал, но надо еще и стандартный крестик перехватить)?
|
|
3
crotnn
11.03.15
✎
15:32
|
(0) второй вариант немного изменить. Вот так работает:
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Если НЕ ВозможноЗакрытие Тогда
Отказ = Истина;
ЗакрытьСоЗначением();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьСоЗначением()
ВозможноЗакрытие = Истина;
Закрыть(Результат);
КонецПроцедуры
|
|
4
Fragster
гуру
11.03.15
✎
16:11
|
(2) рекурсия, или нет, но если не указывать РежимОткрытияОкнаФормы.БлокироватьОкноВладельца, то все работает
|
|