|
Сохранение настроек СКД в обработке | ☑ | ||
---|---|---|---|---|
0
badboychik
28.12.11
✎
14:14
|
Задача такая - есть обработка (не отчет) которая выступает как отчет, на основе СКД. И нужно сделать сохранение настроек вариантов отчета. Делаю на панели стандартные кнопки "Сохранить настройки" и "Восстановить настройки", ставлю галки у формы - Сохранять значения, т.е. все как надо. Для настроек СКД есть реквизит КомпоновщикНастроек.
Но прикол в том, что нифига не сохраняется! После открытия и восстановления настроек отчет вообще не выводится и настройки пустые. Какой тогда смысл в галочках, где автоматическое сохранение значений выбраных реквизитов?? Ладно, делаем руками: Процедура ПередСохранениемЗначений(Отказ) СохраненныеНастройки = Новый Структура; СохраненныеНастройки.Вставить("НастройкиСКД", КомпоновщикНастроек.ПолучитьНастройки()); КонецПроцедуры Процедура ПослеВосстановленияЗначений() Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда КомпоновщикНастроек.ЗагрузитьНастройки(СохраненныеНастройки.НастройкиСКД); КонецЕсли; КонецПроцедуры Та же картина - ничего не сохраняется. Посмотрел типовую, УниверсальныйОтчет, там вообще эти галочки не стоят и сохранение делается через РегистрСведений.СохраненныеНастройки КАК проще все таки сделать сохранение вариантов настроек СКД в своей обработке? |
|||
1
fimanich
28.12.11
✎
14:19
|
Тоже с аналогичной ситуацией сталкивался. Пришлось подключаться к механизму, аналогичному тому про который ты пишешь (РегистрСведений.СохраненныеНастройки)
Еще можно метод СохранитьЗначение() использовать, но мне это не подошло, хотелось, чтобы можно было сохранять разные варианты настроек, а не последний. |
|||
2
Axel2009
28.12.11
✎
14:22
|
//ПолучитьXMLДляСКД() - получает XML для СКД
//Параметры: //СхемаКомпоновкиДанных - Схема СКД //Возвращает XML для СКД Функция ПолучитьXMLДляСКД (Настройки) Экспорт Текст = ""; ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Настройки, "settingsComposition", "http://v8.1c.ru/8.1/data-composition-system/settings"); Текст = ЗаписьXML.Закрыть(); Возврат Текст; КонецФункции //ПолучитьСКДИзXML() - получает СКД из XML //Параметры: //СхемаКомпоновкиДанных - Схема СКД //Возвращает XML для СКД Функция ПолучитьСКДИзXML (ТекстXML) Экспорт ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекстXML); Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("НастройкиКомпоновкиДанных")); КонецФункции Процедура СохранитьНастройки(Отчет, Форма, ИмяОбъекта = Неопределено) Экспорт Перем СохраненнаяНастройка; СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта", ?(ИмяОбъекта = Неопределено, Строка(Отчет), ИмяОбъекта)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(Отчет.мТекущаяНастройка = Неопределено, Неопределено, Отчет.мТекущаяНастройка.НаименованиеНастройки)); СтруктураНастройки.Вставить("СохраненнаяНастройка", ПолучитьXMLДляСКД (Отчет.КомпоновщикНастроек.ПолучитьНастройки())); СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь); СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь); Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки); КонецПроцедуры // СохранитьНастройки() Функция ВосстановитьНастройки(Отчет, Форма, ИмяОбъекта = Неопределено) Экспорт Перем СохраненнаяНастройка; СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта", ?(ИмяОбъекта = Неопределено, Строка(Отчет), ИмяОбъекта)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(Отчет.мТекущаяНастройка = Неопределено, Неопределено, Отчет.мТекущаяНастройка.НаименованиеНастройки)); Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки); Если Результат <> Неопределено Тогда Отчет.мТекущаяНастройка = Результат; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПолучитьСКДИзXML (Результат.СохраненнаяНастройка)); Иначе Отчет.мТекущаяНастройка = СтруктураНастройки; КонецЕсли; КонецФункции // ВосстановитьНастройки() |
|||
3
badboychik
29.12.11
✎
05:51
|
охренеть... одно радует, что настройки хранящиеся в регистре можно быстро скопировать другому пользователю
|
|||
4
guitar_player
29.12.11
✎
07:17
|
Возьми какой нибудь типовой отчет и на основе него сделай свой
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |