1c: сохранение настроек формы внешней обработки

Задача: при открытии внешней обработки, восстанавливать значения на форме которые были при предыдущем запуске обработки.

Решение: на события ПриОткрытииНаСервере и при ПриЗакрытииНаСервере навсеми обработчики:

&НаСервере
Процедура СохранитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено)
    Настройки = Новый Структура;
    Для Каждого Элем ИЗ Элементы Цикл
        Если ТипЗнч(Элем) = Тип("ПолеФормы") Тогда
            Если Объект.Свойство(Элем.Имя) Тогда 
                Настройки.Вставить(Элем.Имя, Объект[Элем.Имя]);
            Иначе
                Настройки.Вставить(Элем.Имя, ЭтаФорма[Элем.Имя]);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;    
    ХранилищеОбщихНастроек.Сохранить(КлючОбъекта,  КлючНастроек, Настройки,, Пользователь);
КонецПроцедуры

&НаСервере
Процедура ВосстановитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено)   
    СтруктураНастроек = Неопределено;
    Попытка
        СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек, ,Пользователь);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;    
    Если СтруктураНастроек <> Неопределено Тогда
        Для Каждого Настройка Из СтруктураНастроек Цикл
            Если Объект.Свойство(Настройка.Ключ) Тогда 
                Объект[Настройка.Ключ] = Настройка.Значение;
            Иначе
                ЭтаФорма[Настройка.Ключ] = Настройка.Значение;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура УдалитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено)
    ХранилищеОбщихНастроек.Удалить(КлючОбъекта, КлючНастроек, Пользователь);
    Сообщить("Настройки " + КлючОбъекта + " для " + Пользователь + " удалены"); 
КонецПроцедуры

&НаСервере
Процедура ПриЗакрытииНаСервере()
	СохранитьНастройкиНаСервере("СохранениеНастроекПользователяФорма", "ВсеНастройки", ПользователиИнформационнойБазы.ТекущийПользователь());
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	ПриЗакрытииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
   ВосстановитьНастройкиНаСервере("СохранениеНастроекПользователяФорма", "ВсеНастройки", ПользователиИнформационнойБазы.ТекущийПользователь());
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
КонецПроцедуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.