1С 8.3 Просмотр данных временных таблиц запроса — Программист 1С Минск. Автоматизация бизнеса.
ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:

Пример №1: Получить содержимое временных таблиц запросов в 1С 8.3:
&НаСервере
Функция ПросмотрДанныхВременныхТаблицЗапроса_1 ( Запрос , НомерВременнойТаблицы ) // НомерВременнойТаблицы с 0
Возврат Запрос . МенеджерВременныхТаблиц . Таблицы [ НомерВременнойТаблицы ]. ПолучитьДанные (). Выгрузить ();
//Возвращает таблицу значений с данными временной таблицы
Пример №2: Получить содержимое временных таблиц запросов в 1С 8.3:
&НаСервере
Функция ПросмотрДанныхВременныхТаблицЗапроса_2 ( Запрос , НомерВременнойТаблицы ) // НомерВременнойТаблицы с 0
Возврат Запрос . ВыполнитьПакетСПромежуточнымиДанными ()[ НомерВременнойТаблицы ]. Выгрузить ();
//Возвращает таблицу значений с данными временной таблицы
Пример №3: Получить содержимое временных таблиц запросов в 1С 8.3:
&НаСервере
Функция ПросмотрДанныхВременныхТаблицЗапроса_3 ( Запрос , НаименованиеВременнойТаблицы ) // по имени ВТ
Возврат Запрос . МенеджерВременныхТаблиц . Таблицы . Найти ( НаименованиеВременнойТаблицы ). ПолучитьДанные (). Выгрузить ();
//Возвращает таблицу значений с данными временной таблицы
Дополнительные возможности по работе с временными таблицами
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в 8.3.25
Добавление данных в существующую временную таблицу
Как известно, временная таблица создается при выполнении запроса с помощью предложения ПОМЕСТИТЬ, идущего после перечисления полей в инструкции ВЫБРАТЬ. Имя временной таблицы идет после ПОМЕСТИТЬ, а её структура определяется структурой самого запроса.
Номенклатура.Код КАК Код,
Номенклатура.Наименование КАК Наименование
Справочник.Номенклатура КАК Номенклатура
создаст временную таблицу ВТ_Товары с полями Код и Наименование.
Добавить данные в уже созданную временную таблицу нельзя. Если мы захотим сложить в ВТ_Товары ещё и содержимое справочника Услуги:
Номенклатура.Код КАК Код,
Номенклатура.Наименование КАК Наименование
Справочник.Номенклатура КАК Номенклатура
Услуги.Код КАК Код,
Услуги.Наименование КАК Наименование
Справочник.Услуги КАК Услуги
мы получим ошибку «Временная таблица уже существует».
В версии 8.3.25 появится возможность добавлять данные в уже существующую временную таблицу с помощью предложения ДОБАВИТЬ (ADD):
Номенклатура.Код КАК Код,
Номенклатура.Наименование КАК Наименование
Справочник.Номенклатура КАК Номенклатура
Услуги.Код КАК Код,
Услуги.Наименование КАК Наименование
Справочник.Услуги КАК Услуги
;
Структура запросов, добавляющих данные в существующую временную таблицу (состав колонок и их типы) должны совпадать со структурой временной таблицы, иначе возникнет ошибка «Структура существующей временной таблицы не соответствует структуре добавляемых данных».
Возможность добавлять данные в существующую временную таблицу позволит в ряде сценариев сократить количество «однотипных» временных таблиц в запросе, сделать текст запроса более читаемым, а исполнение запроса – более эффективным.
Создание нескольких индексов для временной таблицы
Для временной таблицы можно будет создавать несколько индексов для ускорения поиска по временной таблице. Для предложения ИНДЕКСИРОВАТЬ ПО будет реализовано расширение НАБОРАМ (SETS):
ИНДЕКСИРОВАТЬ ПО НАБОРАМ ((НаборПолей1)[ ,(НаборПолей2)[,…]])
Номенклатура.Код КАК Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
1с как посмотреть временную таблицу в запросе
Коллеги, добрый день!
Где-то на мисте видел код по просмотру временных таблиц напрямую в отладке. Можете, пожалуйста, поделиться еще раз? Я потерял этот код
(0) для этого у меня в общем модуле есть функция которая выбирает все записи из менеджера временных таблицы по переданному имени таблицы.
В окне вычисления выражения я просто вызываю эту функцию.
Где-то в типовых тоже встречал такое, но не вспомню
Запрос.Текст = «ВЫБРАТЬ * ИЗ ВТ»
вычислить Запрос.Выполнить().Выгрузить()
(0) лови: Запрос.ВыполнитьПакетСПромежуточнымиДанными()
+3 Работает с версии 8.3.8
(3) Спасибо, но мы еще на 8.2 живем(
(5) И что вам мешает обновить платформу?
(6) Руководство)
Ясно. Ищи консоль запросов, которая умеет показывать содержимое временных таблиц.
ИР не предлагали ещё?
ДА я видел какую-то строчку кода, где создавалась обработка консоли запросов программно, и в какой-то метод обработки текст запроса передавался и этот метод возвращал временные таблицы, а вспомнить метод не могу
Точняк! Качай ИР. Там консоль запросов умеет смотреть временные таблицы.
(10) чем тебе метод в (2) не устраивает?
1. Ставишь точку останова после выполнения запроса.
2. Шифт + Ф9 (твой запрос)
3. В реквизит «текст» пишешь то, что хочешь вытащить из ВТ
4. В поле выражение пишешь: Запрос.Выполнить().Выгрузить()
5. кн. Расчитать
Все на лету, конфа на замке. И не надо изобретать лисапед.
обновись и
ВременнаяТаблицаЗапроса.ПолучитьДанные (QueryTempTable.GetData)
ВременнаяТаблицаЗапроса (QueryTempTable)
ПолучитьДанные (GetData)
Синтаксис:
ПолучитьДанные()
Возвращаемое значение:
Возвращает содержимое временной таблицы.
Сервер, толстый клиент, внешнее соединение.
http://catalog.mista.ru/public/173803/ 15 сек гугления
Функция Отладка(МенеджерВременныхТаблиц,Порядок = «») Экспорт
Если Ложь Тогда
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
КонецЕсли;
Структура = новый Структура;
Для каждого Элемент Из МенеджерВременныхТаблиц.Таблицы Цикл
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
«ВЫБРАТЬ
| *
|ИЗ
| ВремТаб КАК ВремТаб
|
|УПОРЯДОЧИТЬ ПО Порядок»;
Запрос.Текст = СтрЗаменить(Запрос.Текст,»ВремТаб»,Элемент.ПолноеИмя);
Если Порядок = «» тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,»УПОРЯДОЧИТЬ ПО Порядок»,»»);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст,»Порядок»,Порядок);
КонецЕсли;
(2) Так разве не только последний пакет вернет?
(15) (14) Так тут надо менеджер ВТ подключать. Хотя да, вариант рабочий, спасибо, его использовал
(16) Еще раз: в свойство «текст» пишешь руками запрос к данным которые хочешь вытащить.
Вот как это делается через ИР https://www.youtube.com/watch?v=hiw_aYVOvFc
так на последних вресиях 1с временные можно и через отладчик посмотреть
(0)>> код по просмотру временных таблиц напрямую в отладке
Вызываешь прямо в табло из внешней обработки:
ВнешниеОбработки.Создать().ЛукВТ(Запрос, ИмяВременнойТаблицы)
//——-
Функция ЛукВТ(Запрос, ИмяВременнойТаблицы) Экспорт
Перем ЗапросТМП, Р;
//Получаем таблицу из менеджера временных таблиц запроса
ЗапросТМП=Новый Запрос(«ВЫБРАТЬ * ИЗ «+ИмяВременнойТаблицы);
ЗапросТМП.МенеджерВременныхТаблиц=Запрос.МенеджерВременныхТаблиц;
Р=ЗапросТМП.Выполнить().Выгрузить();
Возврат Р;
КонецФункции
(20) в отладке есть кнопочка для изменения переменных на лету. Меняешь текст запроса : запрос.текст = «выбрать * из вт», далее запрос.выполнить().выгрузить()
вычисление входящих в запрос временных таблиц — ПолВТ(ЗапросИлиМенеджерВременныхТаблиц, ИмяВременнойТаблицы = «», ДопустимоеЧислоСтрок = 500000)
варианты использования
ПолВТ(Запрос) — получает структуру всех входящих в запрос временных таблиц
ПолВТ(МенеджерВременныхТаблиц, «Ставки») — получает таблицу значений из временной таблицы «Ставки» переданного менеджера временных таблиц
доступна на сервере
но вот это круче:
открытие специализированных консолей — От(Объект, НастройкаКомпоновки=, ВнешниеНаборыДанных=)
варианты использования
От(Запрос) — открывает запрос в консоли запросов
От(ПостроительЗапроса) — открывает результирующий запрос построителя запросов в консоли запросов
От(ПостроительОтчета) — открывает построитель отчета в консоли построителей отчетов, откуда можно открыть результирующий запрос построителя отчета в консоли запросов
От(СхемаКомпоновки, НастройкаКомпоновки=, ВнешниеНаборыДанных=) — открывает схему компоновки в консоли компоновки данных, откуда можно открыть результирующие (из макета компоновки) запросы в консоли запросов
От(МакетКомпоновки) — открывает запросы макета компоновки в консоли запросов
при вызове на сервере выполняется только сохранение копий переданных объектов для отложенной отладки в новый элемент справочника «Объекты для отладки»; вместе с запросам сохраняются и их временные таблицы с ограничением числа строк (по умолчанию 500000), факт урезания таблицы отражается в результате функции
Просмотр временных таблиц запроса 1С
Допустим у вас есть запрос с несколькими временными таблицами и вам нужно в отладке посмотреть содержимое каждой из них. Обычно такие задачи решаются использованием консоли запросов, но если это невозможно(например в запрос передаются списки значений, таблицы и т.п.), используйте приведенный ниже способ.
Добавляем к себе в модуль следующую функцию(серверную, если это управляемое приложение):
Функция ДанныеВнутреннейТаблицыЗапроса(Запрос, ИмяВнутреннейТаблицы) Запрос.Текст=" |ВЫБРАТЬ | * |ИЗ | "+ИмяВнутреннейТаблицы+" КАК Таблица"; Возврат Запрос.Выполнить().Выгрузить(); КонецФункции
Вызовем ее после текста запроса, например:
запрос.Текст = "ВЫБРАТЬ |ТЗИтоговая.Наименование |ПОМЕСТИТЬ Итоговая |ИЗ |&ТЗИтоговая КАК ТЗИтоговая |; |////////////////////////////////////////////////////////// |ВЫБРАТЬ |* |ПОМЕСТИТЬ Ном |ИЗ |Справочник.Номенклатура КАК Номенклатура |; |////////////////////////////////////////////////////////// |ВЫБРАТЬ |* |ИЗ |Итоговая КАК Итоговая | ЛЕВОЕ СОЕДИНЕНИЕ Ном КАК Ном | ПО Итоговая.Наименование = Ном.Наименование"; МВТ = новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МВТ; Запрос.выполнить(); Табл = ДанныеВнутреннейТаблицыЗапроса(Запрос, "Итоговая");
Теперь в переменной Табл содержится временная таблица Итоговая, ее можно просмотреть в отладке или вывести в табличный документ.
