1С 8.3 Конвертация отчета на СКД в таблицу значений на табличном документе
Данные > Примеры кода 1С > 1С 8.3 Схема компоновки данных (СКД)
Перейти в раздел примеры кода 1С 8.3:
Иногда с отчетами удобнее (или быстрее) работать в MS Excel, например, когда необходимо связать несколько разных отчетов. Если отчеты выводятся с группировкой, то связать их бывает проблематично. Если у отчета нет своей формы, то можно применить такое универсальное решение. В общую форму ФормаОтчета, в контекстное меню добавим команду "Исходные данные", которая будет выгружать набор данных СКД с текущими значениями параметров и отборов сначала в таблицу значений, а потом в табличный документ, размещенный на общей форме. Если часть параметров или отборов заполняется в процедуре ПриКомпоновкеРезультата, то могут возникнуть ошибки.
Конвертация отчета на СКД в ТЗ на ТД в 1С 8.3:
&НаСервере
Процедура ВыгрузитьТаблицуНаСервере()
Результат = Новый ТаблицаЗначений;
Попытка
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
СхемаКомпоновкиДанных = ОтчетОбъект.СхемаКомпоновкиДанных;
НастройкиСКД = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорСКД.Инициализировать(МакетКомпоновки);
ВыводРезультатаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ВыводРезультатаКД.УстановитьОбъект(Результат);
ВыводРезультатаКД.Вывести(ПроцессорСКД, Истина);
ОтчетТабличныйДокумент.Очистить();
ПО_данные = Новый ПостроительОтчета;
ПО_данные.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
ПО_данные.Вывести(ОтчетТабличныйДокумент);
Исключение
Сообщить("Не удалось отобразить исходные данные, возможно выводятся несколько разнородных таблиц.
|Перейдите в настройки и оставьте только одну необходимую таблицу.");
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПлоскуюТаблицу(Команда)
ВыгрузитьТаблицуНаСервере();
КонецПроцедуры
Процедура ВыгрузитьТаблицуНаСервере()
Результат = Новый ТаблицаЗначений;
Попытка
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
СхемаКомпоновкиДанных = ОтчетОбъект.СхемаКомпоновкиДанных;
НастройкиСКД = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорСКД.Инициализировать(МакетКомпоновки);
ВыводРезультатаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ВыводРезультатаКД.УстановитьОбъект(Результат);
ВыводРезультатаКД.Вывести(ПроцессорСКД, Истина);
ОтчетТабличныйДокумент.Очистить();
ПО_данные = Новый ПостроительОтчета;
ПО_данные.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
ПО_данные.Вывести(ОтчетТабличныйДокумент);
Исключение
Сообщить("Не удалось отобразить исходные данные, возможно выводятся несколько разнородных таблиц.
|Перейдите в настройки и оставьте только одну необходимую таблицу.");
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПлоскуюТаблицу(Команда)
ВыгрузитьТаблицуНаСервере();
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник