Имя: Пароль:
1C
 
Убрать вывод предупреждения "Работа в данном окне не завершена".
0 Сметанин
 
20.12.23
14:00
Доброго времени!

Сейчас код такой.

Модуль приложения.
Процедура ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)
    
    // СтандартныеПодсистемы
    СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения);
    // Конец СтандартныеПодсистемы
    
КонецПроцедуры

Модуль СтандартныеПодсистемыКлиент
Процедура ПередЗавершениемРаботыСистемы(Отказ = Ложь, ТекстПредупреждения = "") Экспорт
    
    Если ОтключенаЛогикаНачалаРаботыСистемы() Тогда
        Возврат;
    КонецЕсли;
    
    ПараметрыПриЗапускеПрограммы = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыПриЗапускеПрограммы"];
    
    Если ПараметрыПриЗапускеПрограммы.Свойство("СкрытьРабочийСтолПриНачалеРаботыСистемы") Тогда
        // Произошла попытка закрытия до окончания запуска.
    #Если ВебКлиент Тогда
        // В веб-клиенте это возможно в штатном случае (при закрытии страницы в целом),
        // поэтому закрытие блокируется, так как его все равно можно выполнить принудительно,
        // а в случае случайного закрытия у пользователя должна быть возможность остаться на странице.
        Отказ = Истина;
    #Иначе
        // Не в веб-клиенте это возможно в случае ошибок в немодальной последовательности запуска.
        // То есть нет ни одного окна блокирующего весь интерфейс. Закрытие нужно разрешить,
        // но без стандартных процедур перед завершение работы системы, так как они могут
        // привести к ошибке в процессе закрытия из-за незавершенного запуска.
    #КонецЕсли
        Возврат;
    КонецЕсли;
    
    // В режиме работы толстый клиент (обычное приложение) не выводится список предупреждений.
#Если ТолстыйКлиентОбычноеПриложение Тогда
    Возврат;
#КонецЕсли
    
    Если ПараметрыПриложения["СтандартныеПодсистемы.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы"] = Истина Тогда
        Возврат;
    КонецЕсли;
    
    Если Не ПараметрКлиента("ДоступноИспользованиеРазделенныхДанных") Тогда
        Возврат;
    КонецЕсли;
    
    Предупреждения = Новый Массив;
    ИнтеграцияПодсистемБСПКлиент.ПередЗавершениемРаботыСистемы(Отказ, Предупреждения);
    ОбщегоНазначенияКлиентПереопределяемый.ПередЗавершениемРаботыСистемы(Отказ, Предупреждения);
    
    Если Предупреждения.Количество() = 0 Тогда
        Если Не ПараметрКлиента("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы") Тогда
            Возврат;
        КонецЕсли;
        
        ТекстПредупреждения = НСтр("ru = 'Завершить работу с программой?'");
        Отказ = Истина;
    Иначе
        Если Не ПараметрКлиента("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы") Тогда
            Возврат;
        КонецЕсли;
        
        Отказ = Истина;
        МассивПредупреждений = Новый Массив;
        Для Каждого Предупреждение Из Предупреждения Цикл
            МассивПредупреждений.Добавить(Предупреждение.ТекстПредупреждения);
        КонецЦикла;
        Если Не ПустаяСтрока(ТекстПредупреждения) Тогда
            ТекстПредупреждения = ТекстПредупреждения + Символы.ПС;
        КонецЕсли;
        ТекстПредупреждения = ТекстПредупреждения + СтрСоединить(МассивПредупреждений, Символы.ПС);
        ПодключитьОбработчикОжидания("ПоказатьПредупрежденияПриЗавершенииРаботы", 0.1, Истина);
    КонецЕсли;
    УстановитьПараметрКлиента("ПредупрежденияПриЗавершенииРаботы", Предупреждения);
    
КонецПроцедуры
1 Сметанин
 
21.12.23
09:21
Сделал в процедуре СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы
сразу Возврат.
Предупреждение все равно появляется. Возможно ли вообще его убрать? Никто не сталкивался с такой задачей?
Ошибка? Это не ошибка, это системная функция.