Одному отчету может принадлежать несколько схем компоновки данных. Но по какой из них тогда он будет формироваться?
Имеем отчет по продажам:
Добавим в него еще один макет с типом Схема компоновки данных. В схеме опишем какой-нибудь произвольный набор данных и настройки. Ну допустим получение остатка на складах.
Откроем отчет в предприятии и сформируем. Что мы видим? Что отчет сформировался по основной схеме компоновки данных. Как же сделать чтобы отчет формировался по Схеме_2.
Откроем основную форму отчета и добавим кнопку
Переключить схему.
Для данной кнопки напишем следующую процедуру-обработчик:
Список = Новый СписокЗначений;
Список.Добавить("ОсновнаяСхемаКомпоновкиДанных", "Продажи");
Список.Добавить("Схема_2", "Остатки");
ВыбЭлемент = Список.ВыбратьЭлемент();
Если ВыбЭлемент <> Неопределено Тогда
СхемаКомпоновкиДанных = ПолучитьМакет(ВыбЭлемент.Значение);
КонецЕсли;
//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки, ДанныеРасшифровки);
//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
ДанныеРасшифровки);
//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
ВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Теперь при нажатии на кнопку открывается выбор схемы, после чего происходит формирование отчета.
В дополнение к статье приведу один полезный, на мой взгляд, комент:
Отличный пример!
Но все можно значительно упростить! Если, например, перед формированием отчета по выбраной СКД нужно установить параметры и/или отборы или на форме есть элементы управление, которые связаны с СКД, то можно переопределить предопределенные реквизиты отчета ”СхемаКомпоновкиДанных” и ”КомпоновщикНастроек” на новую СКД. При этом вывод отчета оставить стандартным.
СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет(””);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
P.S. К тому же, если не переопределять ”КомпоновщикНастроек”, то штатные механизмы ”Конструктор настроек…” и ”Настройки…” будут завязаны но основную СКД.
[необходимо зарегистрироваться для просмотра ссылки]
Сообщение отредактировал Vofka - 11.12.12, 13:47