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

03.01.14

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

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

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

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

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122136    670    389    

714

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5746    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6284    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1742    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5388    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16183    skovpin_sa    14    

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

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(Результат);
ТД = Новый ТабличныйДокумент;
Построитель.Вывести(ТД);
ТД.Показать();
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; +31 Ответить
5. Dmitryiv 161 03.01.14 17:20 Сейчас в теме
(1) ssn1978, тоже хорошо, если оформление не требуется.
adhocprog; +1 Ответить
13. kiruha 388 06.03.17 16:32 Сейчас в теме
(1)Вариант распространенный, но так себе. Если использовать не только для отладки, а например для показа пользователю - достаточно этому пользователю попросить поменять хоть одну колонку - и придется переделывать все заново. Например на вариант (12).
2. ssn1978 70 03.01.14 15:49 Сейчас в теме
А еще проще, как я обычно отлаживаю запросы....

Результат.Выгрузить().ВыбратьСтроку()
sunset333; Krio2; rabota.v8.1c; 3762515; +4 Ответить
4. Dmitryiv 161 03.01.14 17:11 Сейчас в теме
(2) ssn1978, хороший способ если количество строк не очень большое.
8. Yashazz 4709 14.01.14 19:00 Сейчас в теме
(2) В тонком клиенте уже не прокатит, к сожалению.
3. ssn1978 70 03.01.14 15:54 Сейчас в теме
А еще удобнее подхватить запрос с параметрами в процессе отладки и передать в 1с Предприятие, вот эта консолько дает такую возможность http://infostart.ru/public/19577/
6. пользователь 08.01.14 11:47
Сообщение было скрыто модератором.
...
7. DAnry 8 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 65 27.03.15 14:48 Сейчас в теме
Ааааа не экономьте на пробелах!!

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

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

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

//  ТД.Показать();
Показать
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; +21 Ответить
14. soldatkin 11 22.03.19 14:37 Сейчас в теме
Во вложении обработка для 1С83
Прикрепленные файлы:
ЗамерПроизводительности.epf
15. srt2020 11.09.20 14:28 Сейчас в теме
16. Dmitryiv 161 13.09.20 14:21 Сейчас в теме
(15) Для любой платформы 8.х
17. srt2020 14.09.20 05:51 Сейчас в теме
Спасибо!
А для 7,7 нет что нибудь подобного?
18. Zoltan_Black 2 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];
	ОбластьЗаполнения.ШиринаКолонки = СтрДлина(Колонка.Имя);
        ОбластьЗаполнения.Параметр = Колонка.Имя;
        ОбластьЗаполнения.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
        Заголовки.Вставить(Колонка.Имя, Колонка.Имя);
		
	КонецЦикла;
	ОбластьВывода.Параметры.Заполнить(Заголовки);
    ТД.Вывести(ОбластьВывода);
    Выборка=РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        ОбластьВывода.Параметры.Заполнить(Выборка);
        ТД.Вывести(ОбластьВывода);
    КонецЦикла;
Показать
rozer; Enziger; +2 Ответить
Оставьте свое сообщение