|
Как при программной компоновке СКД выводить выбранный пользователем вариант отчета? | ☑ | ||
---|---|---|---|---|
0
Aswed
09.12.22
✎
11:12
|
Есть отчёт который в зависимости от выбранной настройки выводит либо одну либо другую схему компановки данных.
В одной из схем есть три варианта отчета. Где и как при программной компановке указать какой из вариантов выводить? Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДокументРезультат.Очистить(); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТаблицаОстатков", ?(ЭтотОбъект.РежимОтчета = "Остатки", ПолучитьТаблицуОстатков(), ПолучитьТаблицуВзаиморасчетов())); // подготавливаем структуру с готовой таблицей Если ЭтотОбъект.РежимОтчета = "Остатки" Тогда Схема = ЭтотОбъект.ПолучитьМакет("СхемаКомпоновкиДанныхОстатки"); Иначе Схема = ЭтотОбъект.ПолучитьМакет("СхемаКомпоновкиДанныхВзаиморасчеты") КонецЕсли; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпановки = КомпоновщикМакета.Выполнить(Схема, Схема.НастройкиПоУмолчанию, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпановки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина); // вот тут происходит "соединение" таблицы с СКД грубо говоря строится отчет в соответствии с макетом компановки //Вывод результата ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.НачатьВывод(); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры |
|||
1
Kassern
09.12.22
✎
11:14
|
(0) Скорее всего нужно получить из хранилища настройки этого варианта отчета и загрузить их в макет компоновки
|
|||
2
Aswed
09.12.22
✎
11:19
|
(1) В макете компановки есть все эти варианты. Но он берёт всё время тот что был сделан первым.
|
|||
3
Kassern
09.12.22
✎
11:21
|
(2) В Схеме поищите в отладке, скорее всего Схема.НастройкиПоУмолчанию - тянет первый вариант.
|
|||
4
SleepyHead
гуру
09.12.22
✎
11:37
|
мКлючВарианта = "идентификатор вараинта отчета, как он задан в схеме";
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек[мКлючВарианта].Настройки); |
|||
5
Aswed
09.12.22
✎
11:49
|
(4) А можно больший кусок кода? Что то не поймаю в какой момент в компановщик закидывать выбранный вариант
|
|||
6
ass1c
09.12.22
✎
11:50
|
(0) Видел в конфе у себя какие то старые решения (доработки) по работе с вариантами отчетов СКД программно. Вроде как даже работает:
ВариантОтчета = ВариантыОтчетов.ВариантОтчета(Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя", "ВедомостьПоТоварамНаСкладах"), "06f7644a-4bb6-4d4d-9eb4-a60865224151"); ПараметрыИдентификации = Новый Структура; ПараметрыИдентификации.Вставить("СсылкаВарианта" , ВариантОтчета); ПараметрыИдентификации.Вставить("СсылкаОтчета" , Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя", "ВедомостьПоТоварамНаСкладах")); ПараметрыИдентификации.Вставить("КлючВарианта" , "06f7644a-4bb6-4d4d-9eb4-a60865224151"); ПараметрыИдентификации.Вставить("ИдентификаторФормы" , Неопределено); ПараметрыОтчета = ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки(ПараметрыИдентификации); //*СхемаКомпоновкиДанных СхемаКомпоновкиДанных = ПараметрыОтчета.Объект.СхемаКомпоновкиДанных; //*НастройкиКомпоновкиДанных НастройкиКД = ПараметрыОтчета.НастройкиКД; //*КомпоновщикНастроек КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных(); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД , , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ТабРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТабРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |