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