Modber Сообщество
профессионалов по 1С

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



Скачиваний: 4
Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, 1С:Предприятие 8.1
Конфигурации: Все конфигурации
2013-03-26
3821 

 
Довольно часто в типовых конфигурациях 1С встречаются очень большие и сложные для восприятия запросы. Например, запрос автозаполнения документа «Начисление зарплаты» может содержать в себе более 3000 строк. Не смотря на то, что благодаря использованию большого количества временных таблиц он достаточно структурирован и прозрачен логически, разбираться в нем довольно сложно из-за очень большого количества строк.

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

Метод первый – использование консоли запросов

Стандартную консоль запросов можно взять на диске ИТС. На различных сторонних сайтах встречаются более удобные версии.

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

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

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

Используется функция вида:

Функция ПолучитьДанные(Запрос, ИмяТаблицы)
     ДанныеТаблицы = Новый Запрос;
     ДанныеТаблицы.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
     ДанныеТаблицы.Текст =
     "Выбрать *
     |    Из "+ИмяТаблицы+"
     |";
     Возврат ДанныеТаблицы.Выполнить().Выгрузить();
КонецФункции


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

втИмя = ДанныеЗапроса(Запрос, "втИмя");

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

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

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

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

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

PS
Консоль запросов для 8.1 в файле.



Как установить отработку или отчет 1С


Скачивание доступно только зарегистрированным пользователям.
Зарегистрируйтесь или войдите под своим аккаунтом.


Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (0)