Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сохранение\Восстановление настроек отбора списка документов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
AlexHummer
1С:Підприємство 8.3 (8.3.6.2449)
УНФ для Украины, редакция 1.6 (1.6.2.1)
Управляемые формы.

Добрый день.
Есть задача - сохранять и восстанавливать разные комбинации настроек отбора списка документов "Заказ покупателя"
Пытаюсь реализовать разными способами (как чтение\запись настроек, так и их хранение). Успешным результатом пока не могу похвастаться.
Подскажите пожалуйста, как лучше реализовать?

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

&НаСервере
Функция Д_СохранитьНастройку(СохраненнаяНастройка = Неопределено,СтруктураЗаменяемойНастройки = Неопределено) //Экспорт
    
    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Вставить("ИмяОбъекта", "СписокЗаказов");
    СтруктураНастройки.Вставить("НаименованиеНастройки", "СписокЗаказов1");
    СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
    
    Если ТипЗнч(СтруктураНастройки) <> Тип("Структура") Тогда
        
        Возврат Ложь;
        
    КонецЕсли;
    
//Тут непосредственно записывает структуру в добавленный РС. Резульат Ложь\Истина
    Возврат СохранитьДанныеНастройки(СтруктураНастройки, СтруктураЗаменяемойНастройки);
    

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

&НаСервере
Функция ПолучитьНастройку() //Экспорт
    
    СтруктураНастройки     = Новый Структура;
    СтруктураНастройки.Вставить("ИмяОбъекта", "СписокЗаказов");
    СтруктураНастройки.Вставить("НаименованиеНастройки", "СписокЗаказов1");
    
    Если ТипЗнч(СтруктураНастройки) <> Тип("Структура") Тогда
        
        Возврат Неопределено;
        
    КонецЕсли;
    
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    СохраненныеНастройки.Пользователь,
    |    СохраненныеНастройки.ИмяОбъекта,
    |    СохраненныеНастройки.НаименованиеНастройки КАК НаименованиеНастройки,
    |    СохраненныеНастройки.СохраненнаяНастройка,
    |    СохраненныеНастройки.ИспользоватьПриОткрытии,
    |    СохраненныеНастройки.СохранятьАвтоматически
    |ИЗ
    |    РегистрСведений.Д_СохраненныеНастройки КАК СохраненныеНастройки
    |ГДЕ
    |    СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
    |    И СохраненныеНастройки.НаименованиеНастройки = &НаименованиеНастройки");
    
    Запрос.УстановитьПараметр("ИмяОбъекта", СтруктураНастройки.ИмяОбъекта);
    Запрос.УстановитьПараметр("НаименованиеНастройки", СтруктураНастройки.НаименованиеНастройки);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если РезультатЗапроса.Пустой() Тогда
        
        Возврат Неопределено;
        
    Иначе
        
        ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
        ВыборкаИзРезультатаЗапроса.Следующий();
        
        СтруктураНастройки.Вставить("СохраненнаяНастройка", ВыборкаИзРезультатаЗапроса.СохраненнаяНастройка.Получить());
        СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", ВыборкаИзРезультатаЗапроса.ИспользоватьПриОткрытии);
        СтруктураНастройки.Вставить("СохранятьАвтоматически", ВыборкаИзРезультатаЗапроса.СохранятьАвтоматически);
        
    КонецЕсли;
    
    Возврат СтруктураНастройки.СохраненнаяНастройка;//Истина;
    
КонецФункции // ПолучитьНастройку()

КонецФункции


Выгрузка проходит вроде нормально. Сохраняется.
Далее выбирается тоже нормально. в процедуре Д_ОткрытьНастройкуОтбора переменная МассивОтборов получается и имеет вид:


Далее, массив обрабатывается, и Список.КомпоновщикНастроек.Настройки.Отбор.Элементы получается таким:


Потом делается обновление отображения - и на форме ничего не происходит (список не отобран, управляющие элементы фильтров справа - все пустые)
AlexHummer
Никто не сталкивался с подобным?
pablo
В варианте отчета есть предопределенные настройки отбора? Если они пересекаются с установленными Вами, то настройки из отбора переопределяют установленные программно при компоновке отчета. Если интересует детально, то необходимо зарегистрироваться для просмотра ссылки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.