Как разбираться в больших запросах. Консоль запросов с временными таблицами. Как посмотреть, чем заполнены временные таблицы в запросе (1С: v8: Язык Запросов: просмотр Временных Таблиц) — 1c-h
 

Как разбираться в больших запросах. Консоль запросов с временными таблицами. Как посмотреть, чем заполнены временные таблицы в запросе (1С: v8: Язык Запросов: просмотр Временных Таблиц)

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Вопрос Как разбираться в больших запросах. Консоль запросов. Как посмотреть, чем заполнены временные таблицы в запросе?
Ответ
Довольно часто в типовых конфигурациях 1С встречаются очень большие сложные для восприятия запросы.
Например, запрос автозаполнения документа «Начисление зарплаты» содержит в себе порядка 3000 строк. И это далеко не предел.
В современных редакциях понимание запросов осложняется еще и тем, что запрос собирается из кусочков модулей, разбросанных процедур и функций по разным местам, с множественной вложенностью.
Кстати, в этом случае, т.е. когда текст запроса разбросан и не собирается с помощью стандартного встроенного конструктора запросов, прежде чем анализировать такой код, найдите место где запрос исполняется (Запрос.Выполнить()), поставьте на ней точку останова в отладчике и посмотрите/возьмите собранный текст запроса из конструкции «Запрос.Текст».
Благодаря использованию большого количества временных таблиц, запрос достаточно структурирован и прозрачен логически, однако, не смотря на это, разбираться в нем бывает довольно сложно из-за очень большого количества таблиц.

Есть 2 принципиально разных метода разбора таких запросов.

Первый метод – использование консоли запросов.
Стандартную консоль запросов можно взять на диске ИТС (просто выполните поиск по диску ИТС слов «Консоль запросов» и у вас появится сразу несколько ссылок на нее).
Более удобные версии встречаются на различных сторонних сайтах. Уже не помню точно, откуда предлагаемый тут вариант консоли, но нам он показался самым удобным.
Еще лучше использовать платную консоль запросов из инструментов разработчика (скачиваемую за «стратмани» с известного ресурса).

Здесь можно скачать неизвестную бесплатную версию:
(Доступ к ссылке на скачивание закрыт из соображений безопасности сайта. Если нужна консоль, пишите в комментарии к этой статье, вышлем)

Консоль запросов позволяет создавать и отлаживать запросы в режиме 1С:Предприятия, без запуска 1С:Конфигуратора. Скаченный файл нужно разархивировать и открыть через меню 1С:Предприятия «Файл — Открыть».

Чтобы разобраться в большом запросе с помощью консоли запросов, разбейте запрос на части. Тогда можно будет сразу отслеживать результат выполнения каждой части. При этом в запросе будет удобнее разбираться, если соблюдать древовидную структуру, соответствующую структуре самого запроса и давать имена этим подзапросам по наименованиям вложенных таблиц (или по наименованиям временных таблиц), разбираемых в этой части запроса. Достаточно большой минус консоли запросов: требуется передача параметров запроса, при этом иногда параметром запроса может оказаться список значений или еще хуже – таблица значений.

Второй метод – чтение промежуточных результатов запроса

В современных редакциях (по данным на 2019 год) для этого можно использовать специальный метод:

Вместо «ИмяВременнойТаблицы» напишите имя исследуемой временной таблицы.

В старых редакциях для этого можно использовать функцию вида

Эту функцию рекомендуем разместить во внешнем модуле. Тогда к ней можно будет обращаться из любого отлаживаемого запроса, встроив в нужное место модуля строку вида:

где

Запрос – это исследуемый нами запрос,

втИмя – имя внутренней таблицы исследуемого запроса, в которой находятся данные, которые мы хотим посмотреть.

Теперь, если в табло сообщений ввести это втИмя и нажать F2, то откроется окно со значениями этой временной таблицы.

Либо бывает удобнее не встраивать в модуль строку вызова функции, а прямо в табло отладки написать обращение вида:

ДанныеЗапроса(Запрос, «втИмя»)

Точно так же можно нажать F2, спозиционировавшись в табло на этом обращении, откроется содержимое таблицы.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Автор 1С

2 thoughts on “Как разбираться в больших запросах. Консоль запросов с временными таблицами. Как посмотреть, чем заполнены временные таблицы в запросе (1С: v8: Язык Запросов: просмотр Временных Таблиц)

  1. Вопрос: Почему бы в функцию не передавать не весь запрос, а только текст запроса? При этом саму функцию написать так:

    При этом передавать в качестве параметра не сам запрос, а только его текст.

    Ответ: Дело в том, что в запросе могут быть параметры. Если передавать только текст запроса, то придется в этой функции определять еще и параметры запроса, т.к. мы тут же его и «выполняем». Поэтому такой способ подходит только для простейших запросов без параметров.

    Прежний код функции (но он хуже, т.к. может выдавать ошибку, что такая ВТ уже существует):

    Примечание. В тексте функции запоминается и затем восстанавливается текст запроса. Дело в том, что если этого не сделать, то текст запроса переопределится, т.к. конструкция «Знач Запрос» защищает от переопределения объект «Запрос», но не защищает «Текст запроса».

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

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

Next Post

COM-соединение с принтером. Непосредственная быстрая печать с выбором принтера не по умолчанию (1C: v8: Программисту: COM-соединение со службой Microsoft WMI, )

Вт Ноя 9 , 2010
Вопрос Выбор принтера для быстрой непосредственной печати — как организовать в 1С:Предприятии. COM-соединение со службой WMI Ответ Обычно в 1С:Предприятии последовательность действий при печати документов бывает в двух вариантах: Вариант 1 – жмем на кнопку «печать», и на принтере сразу «вылезает» лист с распечатанным текстом. Вариант 2 – жмем на […]