А как в восьмерке отлаживают запросы?

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Вопрос 1
Конструктор запроса создал текст запроса.
А как-то увидеть результат его выполнения (т е выборку данных в табличном виде) можно ?

Вопрос 2
Запрос состоит из большого количества вложенных запросов.
Конструктор запроса показывает мне состав только самого наружного запроса
Я вижу вложенные поля, а не весь вложенный запрос как целое


Как профи отлаживают такие сложные конструкции - только силой мысли ?
 
G

Guest

#2
1. Запрос.Выполнить().Выгрузить() - возвращает переменную типа ТаблицаЗначений. Если написать Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) То получим ДеревоЗначений. Ставим точку останова после этой строчки и смотрим то вышло.
Альтернативный вариант- если умеешь работать с обработкой КонсольОтчетов, то бросаешь туда запрос и смотришь что получилось. Если не умеешь- советую научиться. Обработка запускается в предприятии.

2. Вложенный запрос можно в тексте запроса найти по ключевому слову "Выбрать". Если, к примеру, у тебя присоединяется таблица вложенного запроса, то ты увидешь примерно такое
ЛЕВОЕ СОЕДИНЕНИЕ ( Выбрать <Вложенный запрос>) ПО <Связи>

МОгу сказхать про себя. Если нужно добавить доп поле или условие- чаще делаю руками, потому что большие запросы либо составляются из нескольких текстов(получить напрямую текст запроса нелья) либо в отчетах. А там верняк есть строчки для категорий. Конструктов сотрет "// Категории" и подобное.
 
G

Guest

#3
1. Запрос.Выполнить().Выгрузить() - возвращает переменную типа ТаблицаЗначений. Если написать Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) ...
Спасибо, Найлло!
Этот вариант сработал: Результат.Строки - [Показать значение в отдельном поле] и
дал мне искомую таблицу

С консолью отчетов тоже нормально, хотя в моем случае там в запросе очень
много параметров и заполнять их руками утомительно.

По вложенным запросам - в моем запросе много вложений с левым либо внутренним соединением и какое-то из них ,вероятно, гадит, задваивая результат.
Я и искал, можно ли каждое вложение выделить отдельно и протестировать результат
его выборки. Сейчас приходится кромсать текст программы, последовательно исключая
каждое вложение.
 
G

Guest

#4
попробуй поймать итоговый текст запроса, если он сразу не открывается конструктором. Это можно сделать просто определив значение ЗАпрос.Текст перед выполнением.
Если запрос таки открвается конструктором, то открой каждый вложенный запрос и там слева внизу буит кнопка "Запрос"- там копируешь текст и в консоль. Посмотри сколько строк возвращает этот запрос. Если возвращает только одну, а у тебя в итоге задваивает- удали из полей все, кроме тех по которым идет объединение таблиц.
Хотя метод исключения чем то хорошь =)
 
G

Guest

#5
попробуй поймать итоговый текст запроса ...
Спасибо, Найлло!
Метод возьму на вооружение
Ошибку нашел и она естественно оказалась не в запросе, а в предыдущем коде
Хотя до этого все куски запроса пришлось прогнать через консоль.