Если не используются стандартные механизмы сохранения СКД отчетами с использованием модулей общего назначения. А так же процедура для заполнения реквизитов формы по переданной настройке компоновки данных (например, восстановленных из хранилища). _ничего сложного, но вспоминать или искать каждый раз, когда это иногда требуется, это сложно_
Процедура СохранитьНастройкиСКД(КомпоновщикНастроекНастройки)
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(КлючОбъектаСтрокой(), КлючНастроекСтрокой(), КомпоновщикНастроекНастройки);
КонецПроцедуры
Функция ВосстановитьНастройкиСКД()
КомпоновщикНастроекНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(КлючОбъектаСтрокой(), КлючНастроекСтрокой());
Возврат КомпоновщикНастроекНастройки;
КонецФункции
// Процедура - Заполнить реквизиты формы из настроек компановщика
// Заполняет одноименные реквизиты формы из переданной настройки компоновщика (можно дополнить заполнение по структуре или соответствию)
//
// Параметры:
// КомпоновщикНастроекНастройки - НастройкиКомпоновкиДанных - Настройка компоновки данных (например, сохраненная ранее и восстановленная/прочитанная)
// по которой требуется заполнить реквизиты формы обработки
//
Процедура ЗаполнитьРеквизитыФормыИзНастроекКомпановщика(КомпоновщикНастроекНастройки, НеЗаполняемыеПоля = "")
НеЗаполняемыеПоля_ = Новый Массив;
Если ТипЗнч(НеЗаполняемыеПоля) = Тип("Строка") Тогда
НеЗаполняемыеПоля_ = СтрРазделить(НеЗаполняемыеПоля, ",");
Иначе
НеЗаполняемыеПоля_ = НеЗаполняемыеПоля;
КонецЕсли;
Для Н = 0 По НеЗаполняемыеПоля_.Количество() - 1 Цикл
НеЗаполняемыеПоля_[Н] = СокрЛП(НеЗаполняемыеПоля_[Н])
КонецЦикла;
Если ТипЗнч(КомпоновщикНастроекНастройки) = Тип("НастройкиКомпоновкиДанных") Тогда
СтруктураПараметров = Новый Структура;
Для Каждого ТекПараметр Из КомпоновщикНастроекНастройки.ПараметрыДанных.Элементы Цикл
ИмяПараметра = Строка(ТекПараметр.Параметр);
Если НеЗаполняемыеПоля_.Найти(ИмяПараметра) <> Неопределено Тогда Продолжить КонецЕсли;
ЗначениеПараметра = ТекПараметр.Значение;
СтруктураПараметров.Вставить(ИмяПараметра, ЗначениеПараметра);
КонецЦикла;
МассивРеквизитовФормы = ЭтаФорма.ПолучитьРеквизиты();
ИменаРеквизитовФормы = Новый Массив;
Для Каждого ТекРеквизит Из МассивРеквизитовФормы Цикл
ИменаРеквизитовФормы.Добавить(ТекРеквизит.Имя);
КонецЦикла;
Для Каждого ТекПараметр Из СтруктураПараметров Цикл
Если ИменаРеквизитовФормы.Найти(ТекПараметр.Ключ) <> Неопределено Тогда
Если ТипЗнч(ТекПараметр.Значение) = Тип("СписокЗначений") Тогда
ЭтаФорма[ТекПараметр.Ключ].ЗагрузитьЗначения(ТекПараметр.Значение.ВыгрузитьЗначения());
Для Каждого ТекЗнч Из ЭтаФорма[ТекПараметр.Ключ] Цикл
ТекЗнч.Пометка = Истина
КонецЦикла;
Иначе
ЭтаФорма[ТекПараметр.Ключ] = ТекПараметр.Значение;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
// Можно добавить обработку структуры или соответствия, но пока не нужно
Возврат
КонецЕсли;
КонецПроцедуры
ПриПолученииПрочихНастроекПользователя (БСП)
ПриПолученииПрочихНастроек (БСП)
ПриСохраненииПрочихНастроек (БСП)
ПриУдаленииПрочихНастроек (БСП)
СохранитьНастройкиОбновленияКонфигурации (БСП)