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