Skip to content

Instantly share code, notes, and snippets.

@a-sitnikov
Created October 7, 2019 14:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save a-sitnikov/ff13d0a62e24640c1bfd9ce7c2122c54 to your computer and use it in GitHub Desktop.
Save a-sitnikov/ff13d0a62e24640c1bfd9ce7c2122c54 to your computer and use it in GitHub Desktop.
Вывести все таблицы запроса в табличный документ
Процедура ВывестиВсеТаблицыЗапроса(ТабДок, Запрос, ВременныеТаблицы, НеВыводитьПоУмолчанию) Экспорт
МассивРезультатов = Запрос.ВыполнитьПакет();
Макет = Новый ТабличныйДокумент;
Область = Макет.Область(1, 1,);
Область.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
Область.Параметр = "Имя";
Область.Шрифт = Новый Шрифт(,, Истина);
ОбластьИмя = Макет.ПолучитьОбласть(1,, 1);
ОбластьПустая = Макет.ПолучитьОбласть(2,, 2);
ИндекстВТ = 0;
ИндексРезультата = 1;
ВТПометки = Новый Соответствие;
Для каждого СтрокаТЗ из ВременныеТаблицы Цикл
ВТПометки.Вставить(СтрокаТЗ.Имя, СтрокаТЗ.Пометка);
КонецЦикла;
ВременныеТаблицы.Очистить();
Для каждого ВТ из Запрос.МенеджерВременныхТаблиц.Таблицы Цикл
НоваяСтрока = ВременныеТаблицы.Добавить();
НоваяСтрока.Имя = ВТ.ПолноеИмя;
Если ВТПометки[НоваяСтрока.Имя] = Неопределено Тогда
НоваяСтрока.Пометка = (НеВыводитьПоУмолчанию[ВТ.ПолноеИмя] <> Истина);
Иначе
НоваяСтрока.Пометка = ВТПометки[НоваяСтрока.Имя];
КонецЕсли;
КонецЦикла;
ТабДок.Очистить();
Для каждого Результат из МассивРезультатов Цикл
Если Результат.Колонки.Количество() = 1
И Результат.Колонки[0].Имя = "Количество" Тогда
ВТ = Запрос.МенеджерВременныхТаблиц.Таблицы[ИндекстВТ];
Имя = ВТ.ПолноеИмя;
ИндекстВТ = ИндекстВТ + 1;
НайденныеСтроки = ВременныеТаблицы.НайтиСтроки(Новый Структура("Имя", Имя));
Если НЕ НайденныеСтроки[0].Пометка Тогда
Продолжить;
КонецЕсли;
Таблица = ВТ.ПолучитьДанные().Выгрузить();
Иначе
Имя = "Результат " + ИндексРезультата;
Таблица = Результат.Выгрузить();
ИндексРезультата = ИндексРезультата + 1;
КонецЕсли;
ОбластьИмя.Параметры.Имя = Имя;
ТабДок.Вывести(ОбластьИмя);
ВывестиТаблицу(ТабДок, Таблица);
ТабДок.Вывести(ОбластьПустая);
КонецЦикла;
КонецПроцедуры
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment