gifts2017

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

Опубликовал Дмитрий Иванчура (Dmitryiv) в раздел Программирование - Практика программирования

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

Неоднократно наблюдал и наблюдаю картину когда для отладки запроса его результат выводят в табличный документ. При этом  создают макет. Определяют области и параметры и т.п.  Ниже показан код с помощью которого можно выводить любой результат запроса в табличный документ не определяя макет.

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

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Сиренко (ssn1978) 03.01.14 15:42
Можно сделать проще, обойтись без всяких циклов и выборок :)

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(Результат);
ТД = Новый ТабличныйДокумент;
Построитель.Вывести(ТД);
ТД.Показать();
...Показать Скрыть
EMelihoff; AGLux; perepetulichka; Alien_job; azmon; izh; VNSh; Yashazz; bayce; DAnry; pepe; w-divin; +12 Ответить 1
2. Сергей Сиренко (ssn1978) 03.01.14 15:49
А еще проще, как я обычно отлаживаю запросы....

Результат.Выгрузить().ВыбратьСтроку()
3. Сергей Сиренко (ssn1978) 03.01.14 15:54
А еще удобнее подхватить запрос с параметрами в процессе отладки и передать в 1с Предприятие, вот эта консолько дает такую возможность http://infostart.ru/public/19577/
4. Дмитрий Иванчура (Dmitryiv) 03.01.14 17:11
(2) ssn1978, хороший способ если количество строк не очень большое.
5. Дмитрий Иванчура (Dmitryiv) 03.01.14 17:20
(1) ssn1978, тоже хорошо, если оформление не требуется.
7. DAnry (DAnry) 08.01.14 22:00
Еще один способ использовать стандартный конструктор отчетов или обработок - конструктор сам создаст и форму, и код, и макет
8. Яков Коган (Yashazz) 14.01.14 19:00
(2) В тонком клиенте уже не прокатит, к сожалению.
9. Дмитрий Денисов (SoulCast) 31.10.14 22:16
Спасибо большое за пример, сегодня пригодилось в работе :-)
Кстати одна строчка пропущена, надо бы добавить

Колонка = Результат.Колонки[Счетчик-1];
ОбластьЗаполнения.Параметр=Колонка.Имя;


А если еще добавить

ТД.ТолькоПросмотр = Истина;

и дальше
ОбластьЗаполнения.ПараметрРасшифровки = Колонка.Имя;


то даже расшифровка получается, вообще супер удобно

perepetulichka; eeeio; sskripatch; kraynev-navi; VachKirp; +5 Ответить
10. Марина Чирина (chmv) 11.02.15 13:31
11. Кирилл Морозов (Volfy) 27.03.15 14:48
Ааааа не экономьте на пробелах!!

	ТД = Новый ТабличныйДокумент;
	ОбластьВывода = ТД.ПолучитьОбласть(1, 1, 1, РезультатЗапроса.Колонки.Количество());
	
	Для Счетчик = 1 по Результат.Колонки.Количество() Цикл
		ОбластьЗаполнения = ОбластьВывода.Область(1, Счетчик, 1, Счетчик);
		ОбластьЗаполнения.Параметр = Колонка.Имя;
		ОбластьЗаполнения.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
	КонецЦикла;
	
	Выборка = Результат.Выбрать();
	Пока Выборка.Следующий() Цикл
		ОбластьВывода.Параметры.Заполнить(Выборка);
		ТД.Вывести(ОбластьВывода);
	КонецЦикла;
	
	ТД.Показать();
...Показать Скрыть
sskripatch; UPSoft; Steelvan; nihfalck; TeMochkiN; +5 Ответить
12. Павел (UPSoft) 17.09.15 19:24
Вариант без ошибок и с нормальными заголовками
ТД - реквизит формы.

//ТД = Новый ТабличныйДокумент;

	Рез   = Запрос.Выполнить();
	РезТз = Рез.Выгрузить();
	Заголовки = Новый Структура;
	ОбластьВывода = ТД.ПолучитьОбласть(1, 1, 1, РезТз.Колонки.Количество());
	Для Счетчик = 1 по РезТз.Колонки.Количество() Цикл
		ОбластьЗаполнения = ОбластьВывода.Область(1, Счетчик, 1, Счетчик);
		Колонка = РезТз.Колонки[Счетчик-1];
		ОбластьЗаполнения.Параметр = Колонка.Имя;
		ОбластьЗаполнения.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
		Заголовки.Вставить(Колонка.Имя, Колонка.Имя);
	КонецЦикла;
	ОбластьВывода.Параметры.Заполнить(Заголовки);
	ТД.Вывести(ОбластьВывода);
	Выборка=Рез.Выбрать();
	Пока Выборка.Следующий() Цикл
		ОбластьВывода.Параметры.Заполнить(Выборка);
		ТД.Вывести(ОбластьВывода);
	КонецЦикла;

//  ТД.Показать();
...Показать Скрыть
user608695_ygladysh; akkorn; klinval; u_n_k_n_o_w_n; gloomgld; +5 Ответить