Имя: Пароль:
1C
1С v8
Сохранение настроек отбора (КомпоновщикНастроекКомпоновкиДанных) в обработке
0 Sanchez777
 
08.08.18
10:50
Добрый день! Помогите пожалуйста решить данную проблему: в обработке есть возможность настройки отбора, нужно чтобы при закрытии формы настройки сохранялись, соответственно при открытии повторно считывались. Вот как реализовано:

Объект.ОтборПересчета - это реквизит обработки с произвольным типом данных, в него я потом записываю значения отбора с типом
КомпоновщикНастроекКомпоновкиДанных

&НаСервере
Процедура СохранитьНастройки()  

Объект.ОтборПересчета = ОтборПересчетаНаФорме;
        
КлючОбъекта = "ОтборПересчета";
КлючНастроек = "ОтборПересчета";
ОписаниеНастроек = "ОтборПересчета";
ИмяПользователя = "";
        
Настройки = Новый Структура("ЭтоНастройки", Объект.ОтборПересчета);    
    
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);
    
КонецПроцедуры

Возникает след. ошибка: Ошибка при вызове метода контекста (Сохранить)
    ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);
по причине:
Ошибка формата объекта настроек

Я понимаю, что например, если сохранить например реквизит "ДатаНачала" то будет работать. Но как сохранить именно данные Компановщика?
1 Tonik992
 
08.08.18
10:54
Четвертый параметр ОписаниеНастроек - надо использовать не строку, и тип ОписаниеНастроек
2 Sanchez777
 
08.08.18
11:21
Не помогло, ошибка осталась. Пробовал даже убрать параметр (т.к. он не обязательный)
3 Cyberhawk
 
08.08.18
11:22
Много букв. В трех словах давай.
4 Sanchez777
 
08.08.18
11:25
В трех словах: Как сохранить настройки отбора (КомпоновщикНастроекКомпоновкиДанных)?
5 youalex
 
08.08.18
11:41
попробуй Объект.ОтборПересчета.ПолучитьНастройки()
6 DrWatson
 
08.08.18
11:50
Есть реквизит ЭтотОбъект.КомпоновщикНастроек типа КомпоновщикНастроекКомпоновкиДанных. На форму выводится КомпоновщикНастроек.Настройки.Отбор.
Сохраняются настройки этого компоновщика Новый ХранилищеЗначения(ФормаОбъект.КомпоновщикНастроек.Настройки).
Но это же только часть вопроса. Нужно ещё инициализировать эти настройки через СхемаКомпоновкиДанных и загружать сохраненные настройки.
7 Cyberhawk
 
08.08.18
12:21
ИР в помощь
8 Tonik992
 
08.08.18
12:34
"В качестве настроек системное хранилище принимает любое значение, которое может быть помещено в хранилище значений."

а тип КомпоновщикНастроекКомпоновкиДанных не сериализуется.

Поэтому, надо в (5) делать.
9 Sanchez777
 
08.08.18
16:20
Всем спасибо! Решил проблему таким образом путем :

Настройки = ОтборПересчета.ПолучитьНастройки();    
    Объект.ЗначНастройки = ЗначениеВСтрокуВнутр(Настройки);
    
    КлючОбъекта = "ОтборПересчета";
    КлючНастроек = "ОтборПересчета";
    ИмяПользователя = "";
        
    Настройки = Новый Структура("ЭтоНастройки, ДатаНач, ДатаКон", Объект.ЗначНастройки, Объект.ДатаНач, Объект.ДатаКон);         
    ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, , ИмяПользователя);