Использование нескольких схем компоновки данных в одном отчете

Одному отчету может принадлежать несколько схем компоновки данных. Но по какой из них тогда он будет формироваться?

Имеем отчет по продажам:

Добавим в него еще один макет с типом Схема компоновки данных. В схеме опишем какой-нибудь произвольный набор данных и настройки. Ну допустим получение остатка на складах.

Откроем отчет в предприятии и сформируем. Что мы видим? Что отчет сформировался по основной схеме компоновки данных. Как же сделать чтобы отчет формировался по Схеме_2.

Откроем основную форму отчета и добавим кнопку Переключить схему.

Для данной кнопки напишем следующую процедуру-обработчик:

 

 

Список = Новый СписокЗначений;
Список.Добавить("ОсновнаяСхемаКомпоновкиДанных", 	"Продажи");
Список.Добавить("Схема_2", 							"Остатки");
 
ВыбЭлемент = Список.ВыбратьЭлемент();
Если ВыбЭлемент <> Неопределено Тогда
	СхемаКомпоновкиДанных = ПолучитьМакет(ВыбЭлемент.Значение);
КонецЕсли;
 
//Из схемы возьмем настройки по умолчанию    
Настройки 			= СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//Помещаем в переменную данные о расшифровке данных    
ДанныеРасшифровки 	= Новый ДанныеРасшифровкиКомпоновкиДанных;
//Формируем макет, с помощью компоновщика макета    
КомпоновщикМакета 	= Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки    
МакетКомпоновки 	= КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
//Выполним компоновку с помощью процессора компоновки    
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
//Очищаем поле табличного документа    
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Теперь при нажатии на кнопку открывается выбор схемы, после чего происходит формирование отчета.

Подписаться
Уведомить о
guest
13 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Головаченко Дима
Головаченко Дима
13 лет назад

Отличный пример!
Но все можно значительно упростить! Если, например, перед формированием отчета по выбраной СКД нужно установить параметры и/или отборы или на форме есть элементы управление, которые связаны с СКД, то можно переопределить предопределенные реквизиты отчета “СхемаКомпоновкиДанных” и “КомпоновщикНастроек” на новую СКД. При этом вывод отчета оставить стандартным.
СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет(“”);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
P.S. К тому же, если не переопределять “КомпоновщикНастроек”, то штатные механизмы “Конструктор настроек…” и “Настройки…” будут завязаны но основную СКД.

kahara
13 лет назад

Спасибо!
Очень важное дополнение – при подключении внешних источников компоновщик настроек сам не подхватывает настройки схемы.
Теперь понятно почему – и все заработало!

Buliga Alexandru
Buliga Alexandru
12 лет назад

а можно твой пример от а до я ?:)

John83
John83
13 лет назад

Как возможно сделать сохранение настроек, сделанных пользователем?
Т.е. для одной схемы установили такой-то отбор, сформировали отчет в другой схеме, вернулись в первую схему, а там этот отбор остался.

John83
John83
13 лет назад

Хотелось как проще, но видать не получится…

alex-pro
alex-pro
12 лет назад

Спасибо!
И тебе, Дима, тоже за ОЧЕНЬ важное дополнение.

Good
Good
12 лет назад

Добрый день!
Все это конечно замечательно, но при формировании отчета не по основной схеме компановки данных, расшифровка почему то пустая. Причем если смотреть в отладчике:
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); количество элементов в расшифровке становится больше, но в меню выбора действие “Открыть” неактивно.

Сергей
Сергей
12 лет назад

Очень замечательная статья, автору огромный респект. В эту статейку бы добавить: Как при выборе другой схемы компоновки переопределялись настройки параметры и прочее. А то схема меняется а настройки остаются схемы по умолчанию. Кто знает как это реализовать, подскажите.

Головаченко Дима
Головаченко Дима
12 лет назад

Смотри первый комментарий

SashaNox
SashaNox
10 лет назад

Но при расшифровке отчета используется схема установленная Основной, и выдает ошибку следующего содержания: “Поле “Поле1” не может использоваться в группировке “Поле2″”. В основной схеме просто даже нет этого поля. Подскажите как быть?

GLE
GLE
10 лет назад

Очень полезная статья! Нашла, как программно задавать нужный вариант настроек.