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