HelpF.pro

Вывод результата запроса в табличный документ

Код 1C v 8.х
 
//Вых - ЭлементыФормы.РезультатТабличныйДокумент,
//ТЗЗ - Результат выполнения запроса
Процедура ПечатьРезвТаб(Вых,ТЗЗ) Экспорт
КоличествоКолонок = ТЗЗ.Колонки.Количество();
Выборка = ТЗЗ.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяСтрока = Вых.ПолучитьОбласть(1, , 1, );
ОбластьОбщихИтогов = Вых.ПолучитьОбласть(1, , 1, );
ОбластьОбщихИтогов.Область().Шрифт = Новый Шрифт(ОбластьОбщихИтогов.Область().Шрифт, , , Истина, , ,);
ОбластьИерархическихЗаписей = Вых.ПолучитьОбласть(1, , 1, );
ОбластьИерархическихЗаписей.Область().Шрифт = Новый Шрифт(ОбластьИерархическихЗаписей.Область().Шрифт, , , Истина, , ,);
ОбластьГрупповыхЗаписей = Вых.ПолучитьОбласть(1, , 1, );
ОбластьГрупповыхЗаписей.Область().Шрифт = Новый Шрифт(ОбластьГрупповыхЗаписей.Область().Шрифт, , , Истина, , ,);
ОбластьЗаголовка = Вых.ПолучитьОбласть(1, , 1, );

Для ТекущееПоле = 0 По КоличествоКолонок - 1 Цикл
Область = ОбластьЗаголовка.Область(1, ТекущееПоле + 1);
Область.Текст = ТЗЗ.Колонки[ТекущееПоле].Имя;
Область.ШиринаКолонки = ?(ТЗЗ.Колонки[ТекущееПоле].Ширина<3,3,ТЗЗ.Колонки[ТекущееПоле].Ширина);
КонецЦикла;
Вых.Вывести(ОбластьЗаголовка);
ОбластьЗаголовка = Вых.Область(1, 1, 1, КоличествоКолонок);

ОбластьЗаголовка.Шрифт = Новый Шрифт(ОбластьЗаголовка.Шрифт, , , Истина, , ,);
ОбластьЗаголовка.ЦветФона = Новый Цвет(234, 234, 234);
ОбластьЗаголовка.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);

Вых.НачатьАвтогруппировкуСтрок();
Пока Выборка.Следующий() Цикл
ОбработкаПрерыванияПользователя();
Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
ИсходнаяСтрока = ОбластьГрупповыхЗаписей;
ИначеЕсли Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
ИсходнаяСтрока = ОбластьИерархическихЗаписей;
ИначеЕсли Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ОбщийИтог Тогда
ИсходнаяСтрока = ОбластьОбщихИтогов;
Иначе
ИсходнаяСтрока = ДетальнаяСтрока;
КонецЕсли;

Для ТекущееПоле = 0 По КоличествоКолонок - 1 Цикл
Область = ИсходнаяСтрока.Область(1, ТекущееПоле + 1);
Область.Текст = Выборка[ТекущееПоле];
КонецЦикла;
Вых.Вывести(ИсходнаяСтрока, Выборка.Уровень());
КонецЦикла;
Вых.ЗакончитьАвтогруппировкуСтрок();
КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/209.html