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

03.01.14

Разработка - Запросы

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

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

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    184667    1029    403    

967

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

2 стартмани

06.02.2025    2198    17    XilDen    26    

36

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    5731    artemusII    11    

23

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    13135    sergey279    18    

66

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    8215    XilDen    36    

90

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3191    PROSTO-1C    0    

23

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    10797    user1840182    5    

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

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(Результат);
ТД = Новый ТабличныйДокумент;
Построитель.Вывести(ТД);
ТД.Показать();
Grehmin; krasivoe; ASVlasov; Forest_Owl; Serg O.; user1835472; user2010816; ixilimuse; POWone; Claus32; GreyTim; nano1c; digorec88; Ignatov_mu; ikalmykia; user1188623; MURzzz; request4t; 1Cynep4eJIoBek; AlexeyK1; frkbvfnjh; adhocprog; unknown181538; denis1590; EMelihoff; AGLux; perepetulichka; Alien_job; azmon; izh; VNSh; Yashazz; bayce; DAnry; pepe; w-divin; +36 Ответить
5. Dmitryiv 162 03.01.14 17:20 Сейчас в теме
(1) ssn1978, тоже хорошо, если оформление не требуется.
adhocprog; +1 Ответить
13. kiruha 388 06.03.17 16:32 Сейчас в теме
(1)Вариант распространенный, но так себе. Если использовать не только для отладки, а например для показа пользователю - достаточно этому пользователю попросить поменять хоть одну колонку - и придется переделывать все заново. Например на вариант (12).
2. ssn1978 71 03.01.14 15:49 Сейчас в теме
А еще проще, как я обычно отлаживаю запросы....

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

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


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

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

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


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

2PRV; provost_ua; digorec88; unknown181538; perepetulichka; eeeio; sskripatch; kraynev-navi; VachKirp; +9 Ответить
10. chmv 11.02.15 13:31 Сейчас в теме
11. Volfy 69 27.03.15 14:48 Сейчас в теме
Ааааа не экономьте на пробелах!!

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

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

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

//  ТД.Показать();
Показать
Svejeproduct; 2PRV; tolyan_ekb; NataliaZh; provost_ua; shunk; lexxmaster; user1116299; Gorus; Rustam10; KAV2; ajhedz; adhocprog; denis1590; Help-GROUP; rafaiil; kiruha; user608695_ygladysh; akkorn; klinval; u_n_k_n_o_w_n; gloomgld; +22 Ответить
14. soldatkin 12 22.03.19 14:37 Сейчас в теме
Во вложении обработка для 1С83
Прикрепленные файлы:
ЗамерПроизводительности.epf
15. srt2020 11.09.20 14:28 Сейчас в теме
16. Dmitryiv 162 13.09.20 14:21 Сейчас в теме
(15) Для любой платформы 8.х
17. srt2020 14.09.20 05:51 Сейчас в теме
Спасибо!
А для 7,7 нет что нибудь подобного?
18. Zoltan_Black 3 01.07.21 05:37 Сейчас в теме
(17) Это Вам, Спасибо!
Именно этот Ваш вопрос вдохновил меня на публикацию.
Вот, пожалуйста, способ, которым сам давно пользуюсь.
https://infostart.ru/1c/articles/1467310/?ID=1467310
19. lasermag 21.04.22 12:08 Сейчас в теме
Не верный код .
Вот верный проверено.

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

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

// Выведем заголовок 
    ОбластьВыводаЗаголовок = ТД.ПолучитьОбласть(1, 1, 1, ЧислоКолонокЗапроса);
    ОбластьЯчеекТД = ОбластьВыводаЗаголовок.Область();
    ОбластьЯчеекТД.Объединить();
    ОбластьЯчеекТД.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
    ОбластьЯчеекТД.ЦветТекста = WebЦвета.Синий; 
    ОбластьЯчеекТД.Шрифт = Новый Шрифт(, 14, Истина, , , );
    ОбластьЯчеекТД.Текст = "        "+"ТестЗаголовка";
    ТД.Вывести(ОбластьВыводаЗаголовок);
	
    ОбластьВывода.Область().СоздатьФорматСтрок();
    Для Счетчик = 1 по ЧислоКолонокЗапроса Цикл
        ОбластьЗаполнения = ОбластьВывода.Область(1, Счетчик, 1, Счетчик);
        //ОбластьЗаполнения.ЦветТекста = Новый Цвет(0, 255, 0);
        ОбластьЗаполнения.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
        ОбластьЗаполнения.ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
        ОбластьЗаполнения.ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
        ОбластьЗаполнения.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
		
	Колонка = РезультатЗапроса.Колонки[Счетчик-1];
	ОбластьЗаполнения.ШиринаКолонки = СтрДлина(Колонка.Имя);
        ОбластьЗаполнения.Параметр = Колонка.Имя;
        ОбластьЗаполнения.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
        Заголовки.Вставить(Колонка.Имя, Колонка.Имя);
		
	КонецЦикла;
	ОбластьВывода.Параметры.Заполнить(Заголовки);
    ТД.Вывести(ОбластьВывода);
    Выборка=РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        ОбластьВывода.Параметры.Заполнить(Выборка);
        ТД.Вывести(ОбластьВывода);
    КонецЦикла;
Показать
mikmike; rozer; Enziger; +3 Ответить
Оставьте свое сообщение