База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вывести таблицу значений запросом без использования макетов?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 минута назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
21 сентября 2026 в 16:56 #38686
Как вывести таблицу значений или табличный документ если я в командке в процедуре вывел запрос, чтобы он сразу выходил такой какой он есть и показывался без макета и т д
-
21 сентября 2026 в 16:56 #38687
В обычной форме внешней обработки можно выполнить запрос, выгрузить результат в
ТаблицуЗначений, а затем автоматически вывести ее вТабличныйДокументбез макета.### Вариант 1. Вывести результат запроса в табличный документ без макета
Код можно разместить в процедуре команды обычной формы:
1С (Код)12345678910111213141516171819202122232425262728293031323334Процедура ВыполнитьЗапрос(Кнопка)Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Номенклатура,| Номенклатура.Код КАК Код,| Номенклатура.Наименование КАК Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| НЕ Номенклатура.ПометкаУдаления";РезультатЗапроса = Запрос.Выполнить();// Выгружаем результат запроса в таблицу значенийТаблицаРезультат = РезультатЗапроса.Выгрузить();// Создаем табличный документТабличныйДокумент = Новый ТабличныйДокумент;// Источником данных будет таблица значенийПостроитель = Новый ПостроительОтчета;Построитель.ИсточникДанных =Новый ОписаниеИсточникаДанных(ТаблицаРезультат);// Выводим таблицу в табличный документ без макетаПостроитель.Вывести(ТабличныйДокумент);// Показываем результат пользователюТабличныйДокумент.Показать("Результат запроса");КонецПроцедурыВ результате 1С сама сформирует колонки по колонкам таблицы значений. Макет, области и параметры не нужны.
—
### Вариант 2. Просто показать таблицу значений
Если форматирование и табличный документ не нужны, результат можно сразу показать как таблицу значений:
1С (Код)1234567891011121314151617Процедура ВыполнитьЗапрос(Кнопка)Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Номенклатура,| Номенклатура.Код КАК Код,| Номенклатура.Наименование КАК Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура";ТаблицаРезультат = Запрос.Выполнить().Выгрузить();ТаблицаРезультат.Показать("Результат запроса");КонецПроцедурыЕсли метод
Показать()дляТаблицаЗначенийв вашей версии платформы недоступен, используйте первый вариант сТабличныйДокумент.—
### Вариант 3. Вывести непосредственно результат запроса
Можно сначала получить таблицу значений из результата запроса:
1С (Код)12РезультатЗапроса = Запрос.Выполнить();ТаблицаРезультат = РезультатЗапроса.Выгрузить();А затем:
1С (Код)12345678ТабличныйДокумент = Новый ТабличныйДокумент;Построитель = Новый ПостроительОтчета;Построитель.ИсточникДанных =Новый ОписаниеИсточникаДанных(ТаблицаРезультат);Построитель.Вывести(ТабличныйДокумент);ТабличныйДокумент.Показать("Результат");Полный минимальный вариант:
1С (Код)123456789101112131415161718192021Процедура Команда1(Кнопка)Запрос = Новый Запрос("ВЫБРАТЬ| Товары.Номенклатура,| Товары.Количество,| Товары.Сумма|ИЗ| Документ.РеализацияТоваровУслуг.Товары КАК Товары");ТаблицаРезультат = Запрос.Выполнить().Выгрузить();ТабличныйДокумент = Новый ТабличныйДокумент;Построитель = Новый ПостроительОтчета;Построитель.ИсточникДанных =Новый ОписаниеИсточникаДанных(ТаблицаРезультат);Построитель.Вывести(ТабличныйДокумент);ТабличныйДокумент.Показать("Результат запроса");КонецПроцедуры### Если в запросе есть параметры
Параметры устанавливаются до выполнения запроса:
1С (Код)1234Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);ТаблицаРезультат = Запрос.Выполнить().Выгрузить();Например:
1С (Код)12345678910111213141516171819202122232425Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Продажи.Номенклатура,| Продажи.Количество,| Продажи.Сумма|ИЗ| РегистрНакопления.Продажи КАК Продажи|ГДЕ| Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания";Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала));Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания));ТаблицаРезультат = Запрос.Выполнить().Выгрузить();ТабличныйДокумент = Новый ТабличныйДокумент;Построитель = Новый ПостроительОтчета;Построитель.ИсточникДанных =Новый ОписаниеИсточникаДанных(ТаблицаРезультат);Построитель.Вывести(ТабличныйДокумент);ТабличныйДокумент.Показать("Продажи");### Если нужно вывести именно
РезультатЗапроса, не выгружая его в таблицу значенийМожно сформировать табличный документ вручную. Этот вариант удобен, если
ПостроительОтчетапо каким-либо причинам недоступен:1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061Процедура ВывестиРезультатЗапроса(РезультатЗапроса)ТабличныйДокумент = Новый ТабличныйДокумент;КоличествоКолонок = РезультатЗапроса.Колонки.Количество();Если КоличествоКолонок = 0 ТогдаСообщить("Запрос не вернул колонок");Возврат;КонецЕсли;// Создаем строку заголовковОбластьЗаголовок = ТабличныйДокумент.ПолучитьОбласть(1, 1, 1, КоличествоКолонок);Для НомерКолонки = 0 По КоличествоКолонок - 1 ЦиклИмяКолонки = РезультатЗапроса.Колонки[НомерКолонки].Имя;ОбластьЯчейки = ОбластьЗаголовок.Область(1,НомерКолонки + 1,1,НомерКолонки + 1);ОбластьЯчейки.Параметры.Значение = ИмяКолонки;КонецЦикла;ТабличныйДокумент.Вывести(ОбластьЗаголовок);// Вывод строк результатаВыборка = РезультатЗапроса.Выбрать();Пока Выборка.Следующий() ЦиклОбластьСтрока = ТабличныйДокумент.ПолучитьОбласть(1, 1, 1, КоличествоКолонок);Для НомерКолонки = 0 По КоличествоКолонок - 1 ЦиклИмяКолонки = РезультатЗапроса.Колонки[НомерКолонки].Имя;ОбластьЯчейки = ОбластьСтрока.Область(1,НомерКолонки + 1,1,НомерКолонки + 1);ОбластьЯчейки.Параметры.Значение =Выборка[ИмяКолонки];КонецЦикла;ТабличныйДокумент.Вывести(ОбластьСтрока);КонецЦикла;ТабличныйДокумент.Показать("Результат запроса");КонецПроцедурыНо для вашей задачи лучше использовать первый вариант:
1С (Код)123456789ТаблицаРезультат = Запрос.Выполнить().Выгрузить();ТабличныйДокумент = Новый ТабличныйДокумент;Построитель = Новый ПостроительОтчета;Построитель.ИсточникДанных =Новый ОписаниеИсточникаДанных(ТаблицаРезультат);Построитель.Вывести(ТабличныйДокумент);ТабличныйДокумент.Показать();Он автоматически выводит результат запроса без макета.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.