Сохранение данных при закрытии приложения
Методические рекомендации
В платформе “1С:Предприятие” версии 8.3.8 и выше без использования режима совместимости изменилась модель завершения работы приложения.
Прежняя модель не поддерживала корректную работу в веб-клиенте в связи с имеющимися ограничениями браузеров.
При работе в рамках новой модели, в процессе завершения работы приложения запрещено открытие окон и выполнение серверных вызовов в следующих обработчиках:
- ПередЗавершениемРаботыСистемы(<Отказ>, <ТекстПредупреждения>),
- ПриЗавершенииРаботыСистемы(),
- ПередЗакрытием(<Отказ>, <ЗавершениеРаботы>, <ТекстПредупреждения>, <СтандартнаяОбработка>),
- ПриЗакрытии(<ЗавершениеРаботы>).
Согласно новой модели работы все несохраненные данные следует сохранять сразу, а не накапливать их до момента завершения работы системы. Если сохранение данных сразу невозможно, то предлагается следующий подход. Для каждой формы в обработчике ПередЗакрытием предупреждаем пользователя о наличии несохраненных данных. Если пользователь выбирает продолжить работу в приложении, сохраняем данные автоматически (или предлагаем сохранить вручную, нажатием кнопки Сохранить или аналогичной). В противном случае – приложение закрывается, а данные не сохраняются.
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЕстьНесохраненныеДанные Тогда
Если Не ЗавершениеРаботы = Истина Тогда
СохранениеНесохраненныхДанныхНаСервере();
Иначе
Отказ = Истина;
ТекстПредупреждения = "Закрытие формы приведёт к потере несохранённых данных!";
ПодключитьОбработчикОжидания("СохранениеНесохраненныхДанных", 1, Истина);
КонецЕсли
КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура СохранениеНесохраненныхДанных() Экспорт
ЕстьНесохраненныеДанные = Ложь;
СохранениеНесохраненныхДанныхНаСервере();
КонецПроцедуры
&НаСервере
Процедура СохранениеНесохраненныхДанныхНаСервере()
Сообщить("Данные сохранены.");
КонецПроцедуры