Как в отладке посмотреть временные таблицы 1с
Перейти к содержимому

Как в отладке посмотреть временные таблицы 1с

  • автор:

Как в отладке посмотреть временные таблицы 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), факт урезания таблицы отражается в результате функции

Получить данные временной таблицы

  • При добавлении данной функции в общий модуль, позволяет быстро и без внесения изменений в код получать данные из временных таблиц в запросе. Используется в случае, если МенеджерВременныхТаблиц = Неопределенно. Доступна с версии 8.3.8

    //Функция возвращает содержимое временной таблицы в запросе по индексу // // Параметры: // Запрос - Запрос - исполняемый запрос // ИндексПакета - Число – индекс временной таблицы // // Возвращаемое значение: // - Таблица значений - таблица значений с содержимым временной таблицы. // Функция ПолучитьДанныеВременнойТаблицы(Запрос, ИндексПакета) Экспорт Возврат Запрос.ВыполнитьПакетСПромежуточнымиДанными()[ИндексПакета].Выгрузить(); КонецФункции
    //Функция возвращает содержимое временной таблицы в запросе по индексу // // Параметры: // Запрос - Запрос - исполняемый запрос // ИндексПакета - Число – индекс временной таблицы // // Возвращаемое значение: // - Таблица значений - таблица значений с содержимым временной таблицы. // Функция ПолучитьДанныеВременнойТаблицы(Запрос, ИндексПакета) Экспорт Возврат Запрос.ВыполнитьПакетСПромежуточнымиДанными()[ИндексПакета].Выгрузить(); КонецФункции

    13 13 0 0 0 Скопировано.

    ред. 2 года назад

    Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Отладка временных таблиц

    Личный блог

    После достаточно долгого отсутствия по причине полной занятости все таки решил написать очередной пост.

    Отладка

    Отладка

    Недавно узнал что некоторые не знают что в платформу 1С 8.3 есть встроенный инструмент по отладке временных таблиц. Появился он относительно недавно, в одном из релизов редакции 1С 8.3.8 — «ПолучитьДанные» () применительно к МенеджеруВременныхТаблиц .

    Между тем данный инструмент значительно облегчает возможности при исследовании проблем, например при разборе типовых механизмов.

    Все достаточно просто.

    1. Получаем временные таблицы запроса

    Во время использования отладки для начала вычисляем список временных таблиц, Запрос.МенеджерВременныхТаблиц.Таблицы. Таким образом мы можем получить список таблиц, сформированный выполняемым запросом:

    2. Получаем временную таблицу для отладки

    Затем мы обращаемся к нужной нам для отладки временной таблице, добавляя Получить()

    3. Получаем непосредственно данные

    Использование метода ПолучитьДанные() позволяет получить коллекцию РезультатЗапроса непосредственно для выбранной временной таблицы.

    Далее, применяя метод Выгрузить() — получаем таблицу значений, содержащую непосредственно отлаживаемые данные.

    В случае отладки непосредственно таблицы с индексом 0 (как известно, индексы и нумерация в 1С начинается с нуля) получение данных выполняется с помощью вычисления следующей строки:

    Запрос.МенеджерВременныхТаблиц.Таблицы.Получить(0).ПолучитьДанные().Выгрузить()

    Отладка таким образом займет меньше времени, чем используя разные «костыли» ��

    На этом все, хороших Вам разработок и с прошедшими праздниками!

    PS. А для тех кто занимается поддержкой расчета зарплаты на предприятии (не только программисты), напоминаю что по этой тематике выделен отдельный ресурс Pro-Zup.info.

    Как посмотреть Временные таблицы в режиме Отладка

    Добрый день!
    Вот фрагмент запроса
    «ВЫБРАТЬ РАЗЛИЧНЫЕ
    | СотрудникиОрганизаций.Ссылка КАК Сотрудник,
    | СотрудникиОрганизаций.Физлицо
    |ПОМЕСТИТЬ ВТСписокРаботников
    |ИЗ
    | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |ГДЕ
    | СотрудникиОрганизаций.Ссылка В(&Сотрудники)

    В режиме Отладка при попытке Вычислить ВТСписокРаботников выдается сообщение Переменная не определена.
    Подскажите,пожалуйста,как проще посмотреть результат запроса в режиме Отладки.

    По теме из базы знаний

    • Открытие консоли запросов из режима отладки
    • Удобный просмотр результата запроса с большим количеством временных таблиц
    • Временные таблицы запроса
    • Как читать чужой код? Часть 3. Разбор и доработка запросов
    • Отладка СКД
    • Дата
    • Дата
    • Рейтинг всех уровней
    • Рейтинг 1-го уровня
    • Древо развёрнутое
    • Древо свернутое

    Свернуть все
    2. Anything 89 04.07.09 13:38 Сейчас в теме

    (1) Посмотреть временную таблицу можно только выбрав из нее данные запросом.

    "ВЫБРАТЬ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | СотрудникиОрганизаций.Физлицо |ПОМЕСТИТЬ ВТСписокРаботников |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка В(&Сотрудники); | ////////////////////////// | ВЫБРАТЬ * ИЗ ВТСписокРаботников КАК СписокРаботников"

    Думаю, исправить ошибку можно и не заглядывая во временную таблицу.
    На какой строке выдает сообщение об ошибке и что за сообщение?

    3. bogdan51 04.07.09 14:22 Сейчас в теме

    Спасибо. Да я с ошибкой разобрался,но часто в пакете запросов,возникает необходимость посмотреть временные таблицы,не исправляя запрос.

    4. Anything 89 04.07.09 15:24 Сейчас в теме

    (3) Только написав функцию типа:

    Функция ПолучитьВременнуюТаблицу(Запрос, ИмяТаблицы) Запрос.Текст = "Выбрать * ИЗ " + ИмяТаблицы + " КАК Таблица"; Возврат Запрос.Выполнить().Выгрузить(); КонецФункции

    Ну, а во время отладки, нажать Shift+F9 и вызвать эту функцию, передав ей переменную запроса и имя временной таблицы.

    Hamsik; SergeNsk; корум; Glodev; adhocprog; AleksR; + 6 – Ответить
    5. Ish_2 1102 04.07.09 20:39 Сейчас в теме

    (3) Писать дополнительную функцию для просмотра врем.таблиц или нет — дело вкуса разработчика.

    На мой взгляд , если используется пакет , то в прямо в тексте запроса нетрудно указать :

    | Выбрать * Из ВремТаблица1 как ВремТаблица1; | Выбрать * Из ВремТаблица2 как ВремТаблица2;

    Далее для запроса использовать не метод «Выполнить» , а «ВыполнитьПакет()»,
    который вернет Вам не результат последнего запроса в пакете , а массив результатов.
    При отладе нетрудно просмотреть этот массив и найти нужную временную таблицу.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *