Дано:
Стандартный отчёт основанный на СКД с стандартной формой сформированной конструктором.
Нужно при нажатии на Сформировать сформировать обычный отчет в соответствии с настройками пользователя и
получить данные этого отчета в виде коллекции значений.
ВАЖНО! Форму менять нельзя.
Решение:
Используем процедуру ПриКомпоновкеРезультата
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
СхемаКД = ЭтотОбъект.СхемаКомпоновкиДанных; //Можно без ЭтотОбъект т.к. процедура в модуле объекта.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки,,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений") );
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // т.к. стандартный обработчик включен и мы не меняли схему КД
// то отчет сформируется стандартным алгоритмом а в ТЗ будет коллекция
// в соответствии с настройками пользователя.
КонецПроцедуры
Сообщение отредактировал Vofka - 25.12.13, 17:31