|
Вывод вложенных схем СКД в разные таб. документы? | ☑ | ||
---|---|---|---|---|
0
SashaNox
09.12.12
✎
22:49
|
Доброго вечера! Столкнулся с проблемой при построении отчета на СКД.
Итак, имеется схема в которой 3 вложенных схемы. Хочу результат выполнения каждой схемы вывести в разные табличные документы. Пишу так: Процедура Сформировать(ЭлементыФормы) ТекСтраница = ЭлементыФормы.Панель1.ТекущаяСтраница; //Открываем закладки панели ЭлементыФормы.Панель1.ОтображениеЗакладок = ОтображениеЗакладок.Сверху; //Убираем видимость ЭлементыФормы.Панель1.Страницы.Страница1.Видимость = Ложь; ЭлементыФормы.Панель1.Страницы.Страница2.Видимость = Ложь; ЭлементыФормы.Панель1.Страницы.Страница3.Видимость = Ложь; //Получаем схему из макета СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Для каждого ВложеннаяСхема Из КомпоновщикНастроек.Настройки.Структура Цикл Если ВложеннаяСхема.Использование Тогда Если ВложеннаяСхема.ИдентификаторОбъекта = "СводнаяВедомостьПоДенежнымСредствам" Тогда ЭлементыФормы.Панель1.Страницы.Страница1.Видимость = Истина; Результат = ЭлементыФормы.Результат; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки1 = Новый ДанныеРасшифровкиКомпоновкиДанных; //Находим вложенную схему СхемаВложеннойСхемы = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти(ВложеннаяСхема.ИдентификаторОбъекта).Схема; //Из схемы возьмем настройки Настройки = ВложеннаяСхема.Настройки; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаВложеннойСхемы, Настройки, ДанныеРасшифровки1); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки1, Истина); ИначеЕсли ВложеннаяСхема.ИдентификаторОбъекта = "ПеремещенияДенежныхСредств" Тогда ЭлементыФормы.Панель1.Страницы.Страница2.Видимость = Истина; Результат = ЭлементыФормы.Результат2; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки2 = Новый ДанныеРасшифровкиКомпоновкиДанных; //Находим вложенную схему СхемаВложеннойСхемы = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти(ВложеннаяСхема.ИдентификаторОбъекта).Схема; //Из схемы возьмем настройки Настройки = ВложеннаяСхема.Настройки; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаВложеннойСхемы, Настройки, ДанныеРасшифровки2); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки2, Истина); ИначеЕсли ВложеннаяСхема.ИдентификаторОбъекта = "ВыручкаОплатыЗатраты" Тогда ЭлементыФормы.Панель1.Страницы.Страница3.Видимость = Истина; Результат = ЭлементыФормы.Результат3; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки3 = Новый ДанныеРасшифровкиКомпоновкиДанных; //Находим вложенную схему СхемаВложеннойСхемы = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти(ВложеннаяСхема.ИдентификаторОбъекта).Схема; //Из схемы возьмем настройки Настройки = ВложеннаяСхема.Настройки; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаВложеннойСхемы, Настройки, ДанныеРасшифровки3); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки3, Истина); КонецЕсли; //Очищаем поле табличного документа Результат.Очистить(); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецЕсли; КонецЦикла; ЭлементыФормы.Панель1.ТекущаяСтраница = ТекСтраница; КонецПроцедуры Все формируется, выводит, однако никак не могу разобраться с расшифровкой. Стандартная сразу же перестала работать. Поскольку свойство формы "ДанныеРасшифровки" содержит данные расшифровки последнего выполненного отчета, то я ввел 3 переменных для каждого отчета. Обработка расшифровки выглядит так: Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие; СтандартнаяОбработка = Ложь; ИсточникДоступныхНастроекКомпоновкиДанных = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки1, ИсточникДоступныхНастроекКомпоновкиДанных); Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка,ВыполненноеДействие); Если Настройки <> Неопределено Тогда КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ЭлементыФормы.Результат.Очистить(); СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки1); КонецЕсли; КонецПроцедуры Аналогично для других таб. документов. Но в момент расшифровке по какому либо полю настройки вложенных схем слетают, и ни одного поля система не находит, соответственно ругается. Если перейти в настройки после этого, то там также отображается одна группировка по расшифровываемому полю, не принадлежащая вложенной схеме, вложенных схем вообще там нет, а все поля отмечены удаленными. Подскажите, как быть, где я что не так делаю? |
|||
1
SashaNox
25.12.12
✎
02:37
|
Прием, народ, хэлп, тема еще актуальна!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |