![]() |
![]() |
![]() |
|
v8: СКД: Сериализация настроек по отдельности. | ☑ | ||
---|---|---|---|---|
0
sima
09.12.09
✎
19:17
|
Предположим мне надо сохранить только настройки отборов. Вуаля:
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("D:\тест.xml"); ЗаписьXML.ЗаписатьОбъявлениеXML(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, КомпоновщикНастроек.Настройки.Отбор); ЗаписьXML.Закрыть(); //Теперь читаем ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\тест.xml"); Отбор = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); А как теперь эту настройку запулить в СКД? |
|||
1
sima
09.12.09
✎
19:38
|
чувствуется без перебора отдельных свойств никак не обойтись :( а жаль.
|
|||
2
IronDemon
09.12.09
✎
20:18
|
Можно. Ищи.
|
|||
3
IronDemon
09.12.09
✎
20:19
|
||||
4
sima
09.12.09
✎
20:27
|
(3) Да, я это прочитал. Меня интересовала именно отдельная загрузка свойств отбора, а не всей настройки.
Сделал вот так: Процедура Кнопка2Нажатие(Элемент) ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\test.xml"); Отбор = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить(); Для каждого ЭлементОтбора из Отбор.Элементы Цикл ЗагрузитьНастройки(ЭлементОтбора); КонецЦикла; НовыйИсточник = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); КомпоновщикНастроек.Инициализировать(НовыйИсточник); КонецПроцедуры Процедура ЗагрузитьНастройки(ЭлементОтбора) НЭлемент = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип(ЭлементОтбора)); ЗаполнитьЗначенияСвойств(НЭлемент,ЭлементОтбора); Если Тип(ЭлементОтбора)= Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Для каждого ЭлементОтбораГруппы из ЭлементОтбора.Элементы цикл ЗагрузитьНастройки(ЭлементОтбораГруппы); КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
5
sima
09.12.09
✎
22:09
|
Пардон, так как показал в (4), не учитывало вложенных групп. Правильный вариант, с указанием метода сохраниения настройки:
Процедура КнопкаСохранитьОтбор(Элемент) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("D:\text.xml"); ЗаписьXML.ЗаписатьОбъявлениеXML(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, КомпоновщикНастроек.Настройки.Отбор); ЗаписьXML.Закрыть(); КонецПроцедуры Процедура КнопкаОткрытьОтбор(Элемент) ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\text.xml"); Отбор = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить(); Для каждого ЭлементОтбора из Отбор.Элементы Цикл ЗагрузитьНастройкиОтбора(ЭлементОтбора); КонецЦикла; НовыйИсточник = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); КомпоновщикНастроек.Инициализировать(НовыйИсточник); КонецПроцедуры Процедура ЗагрузитьНастройкиОтбора(ЭлементОтбора, ГрЭлемент = Неопределено ,Группа = Ложь) Если НЕ Группа тогда НЭлемент = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип(ЭлементОтбора)); Иначе НЭлемент = ГрЭлемент.Элементы.Добавить(Тип(ЭлементОтбора)); КонецЕсли; ЗаполнитьЗначенияСвойств(НЭлемент,ЭлементОтбора); Если Тип(ЭлементОтбора)= Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Для каждого ЭлементОтбораГруппы из ЭлементОтбора.Элементы цикл ЗагрузитьНастройкиОтбора(ЭлементОтбораГруппы,НЭлемент,Истина); КонецЦикла; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |