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

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 2 апр 2008.

  1. Гость

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

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


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

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

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

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

    Спасибо, Найлло!
    Этот вариант сработал: Результат.Строки - [Показать значение в отдельном поле] и
    дал мне искомую таблицу

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

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

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

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

    рад что смог помочь. =)
     
Загрузка...

Поделиться этой страницей