1c: сохранение настроек формы внешней обработки
Задача: при открытии внешней обработки, восстанавливать значения на форме которые были при предыдущем запуске обработки.
Решение: на события ПриОткрытииНаСервере и при ПриЗакрытииНаСервере навсеми обработчики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
&НаСервере Процедура СохранитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) Настройки = Новый Структура; Для Каждого Элем ИЗ Элементы Цикл Если ТипЗнч(Элем) = Тип("ПолеФормы") Тогда Если Объект.Свойство(Элем.Имя) Тогда Настройки.Вставить(Элем.Имя, Объект[Элем.Имя]); Иначе Настройки.Вставить(Элем.Имя, ЭтаФорма[Элем.Имя]); КонецЕсли; КонецЕсли; КонецЦикла; ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки,, Пользователь); КонецПроцедуры &НаСервере Процедура ВосстановитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) СтруктураНастроек = Неопределено; Попытка СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек, ,Пользователь); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Если СтруктураНастроек <> Неопределено Тогда Для Каждого Настройка Из СтруктураНастроек Цикл Если Объект.Свойство(Настройка.Ключ) Тогда Объект[Настройка.Ключ] = Настройка.Значение; Иначе ЭтаФорма[Настройка.Ключ] = Настройка.Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры &НаСервере Процедура УдалитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено) ХранилищеОбщихНастроек.Удалить(КлючОбъекта, КлючНастроек, Пользователь); Сообщить("Настройки " + КлючОбъекта + " для " + Пользователь + " удалены"); КонецПроцедуры &НаСервере Процедура ПриЗакрытииНаСервере() СохранитьНастройкиНаСервере("СохранениеНастроекПользователяФорма", "ВсеНастройки", ПользователиИнформационнойБазы.ТекущийПользователь()); КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) ПриЗакрытииНаСервере(); КонецПроцедуры &НаСервере Процедура ПриОткрытииНаСервере() ВосстановитьНастройкиНаСервере("СохранениеНастроекПользователяФорма", "ВсеНастройки", ПользователиИнформационнойБазы.ТекущийПользователь()); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры |