"1С:Предприятие" версии 8.3.8 и выше
07.06.2016

Сохранение данных при закрытии приложения

В платформе "1С:Предприятие" версии 8.3.8 и выше без использования режима совместимости изменилась модель завершения работы приложения.

Прежняя модель не поддерживала корректную работу в веб-клиенте в связи с имеющимися ограничениями браузеров.

При работе в рамках новой модели,  в процессе завершения работы приложения запрещено открытие окон  и выполнение серверных вызовов в следующих обработчиках:

Согласно новой модели работы все несохраненные данные следует сохранять сразу, а не накапливать их до момента завершения работы системы. Если сохранение данных сразу невозможно, то предлагается следующий подход. Для каждой формы в обработчике ПередЗакрытием предупреждаем пользователя о наличии несохраненных данных. Если пользователь выбирает продолжить работу в приложении, сохраняем данные автоматически (или предлагаем сохранить вручную, нажатием кнопки Сохранить или аналогичной). В противном случае – приложение закрывается, а данные не сохраняются.

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