Имя: Пароль:
1C
1С v8
1С 8.3.18.1779 (УТ 11) Не работает ПередЗакрытием, программу все равно можно закрыть
0 DJ Anthon
 
12.10.22
09:39
&НаКлиенте
&Вместо("ПередЗакрытием")
Процедура А_ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    Если Модифицированность = Истина И ТекущийВид = "ЧекККМ" Тогда
        Отказ = Истина;
        ТекстПредупреждения = "Внимание, не закрыт чек! Необходимо либо удалить строки чека, либо отложить его, либо пробить.";
        ЗавершениеРаботы = Ложь;
        ПодключитьОбработчикОжидания("ЗакрытиеПрограммыПользователем", 1, Истина);
        Возврат;
    КонецЕсли;
    ПродолжитьВызов(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка);
КонецПроцедуры

В СП написано:
<ТекстПредупреждения>
Тип: Строка.
Если параметру <Отказ> установлено значение Истина и <ТекстПредупреждения> содержит непустую строку, то:
Если <ЗавершениеРаботы> установлено в Истина, окно сообщения со строкой текста предупреждения будет выведено на экран и пользователю будет предложено на выбор - остаться или покинуть окно без сохранения изменений.
Если <ЗавершениеРаботы> установлено в Ложь, текст предупреждения игнорируется и процесс закрытия формы прерывается.

У меня почему-то процесс закрытия формы не прерывается. Я получаю два вопроса (хотя мне нужно предупреждение с кнопкой ОК) и программу всё равно можно закрыть. Как отменить закрытие программы?
Да пофиг, пусть закрывается, но я уже не могу вызвать серверные методы. Как тогда их вызвать? В ожидание захода уже нет.
1 ДедМорроз
 
12.10.22
19:25
Завершение работы - это флаг,который ставит система,предупреждая,что отказ не сработает и нужно заполнить текст предупреждения.
То,что вы сбрасываете его в Ложь уже ни на что не влияет.
2 DJ Anthon
 
12.10.22
22:47
а как отменить закрытие в принципе? я ведь хочу отменить закрытие, а не принудительное закрытие.
или как сделать запись в базу, если придурок все-таки выбрал закрытие в тот момент, когда это запрещено?
3 DJ Anthon
 
12.10.22
22:48
и самое главное, какой тогда смысл в "Если <ЗавершениеРаботы> установлено в Ложь, текст предупреждения игнорируется и процесс закрытия формы прерывается"??
4 DJ Anthon
 
12.10.22
22:48
установлено изначально или установлено мной?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший