584 документа
← К списку

Просмотр результата запроса в режиме отладки

страница

Просмотр результата запроса в режиме отладки

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

Конечно, вы всегда можете воспользоваться консолью запросов в прикладном решении – скопировать в нее текст запроса из 1C:EDT, выполнить его и увидеть результат. Однако это не всегда удобно. Если запрос содержит большое количество параметров, которые вычисляются на разных этапах выполнения алгоритма, вам будет трудно указать все эти параметры в консоли запросов и не ошибиться.

В этом случае вы можете воспользоваться простым приемом, который позволит вам увидеть результат запроса прямо в 1C:EDT, остановившись в отладчике. Этот прием демонстрирует еще одну возможность, которая обозначена на схеме (рис. 11.64) как шестой этап – выгрузка результата в таблицу значений или дерево значений.

В качестве примера вы можете использовать запрос, полученный в предыдущем разделе. В него надо добавить всего одну строку: ТЗ = РезультатЗапроса.Выгрузить() (листинг 11.58).

Листинг 11.5****8. Вывод результата запроса в таблицу значений

МенеджерВТ = Новый МенеджерВременныхТаблиц;

Запрос = Новый Запрос;

Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос.Текст = "ВЫБРАТЬ

|    ПриходнаяНакладнаяМатериалы.Материал,

|    ПриходнаяНакладнаяМатериалы.Ссылка.Дата,

|    ПриходнаяНакладнаяМатериалы.Ссылка.Номер

|ПОМЕСТИТЬ НакладнаяМатериалы

|ИЗ

|    Документ.ПриходнаяНакладная.Материалы КАК ПриходнаяНакладнаяМатериалы

|ГДЕ

|    ПриходнаяНакладнаяМатериалы.Ссылка.Номер = &НомерНакладной";

Запрос.УстановитьПараметр("НомерНакладной", "000000001");

Запрос.Выполнить();

 

Запрос2 = Новый Запрос;

Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос2.Текст = "ВЫБРАТЬ

|    Номенклатура.ЭтоГруппа КАК ЭтоГруппа,

|    Номенклатура.Наименование КАК Наименование,

|    ЕСТЬNULL(НакладнаяМатериалы.Дата, 0) КАК Дата,

|    ЕСТЬNULL(НакладнаяМатериалы.Номер, 0) КАК Номер

|ИЗ

|    Справочник.Номенклатура КАК Номенклатура

|         ЛЕВОЕ СОЕДИНЕНИЕ НакладнаяМатериалы КАК НакладнаяМатериалы

|         ПО Номенклатура.Ссылка = НакладнаяМатериалы.Материал

|

|УПОРЯДОЧИТЬ ПО

|    Номенклатура.Ссылка ИЕРАРХИЯ

|АВТОУПОРЯДОЧИВАНИЕ";

 

РезультатЗапроса = Запрос2.Выполнить();

ТЗ = РезультатЗапроса.Выгрузить();

 

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.ЭтоГруппа Тогда

Сообщить("Группа: " + Выборка.Наименование);

ИначеЕсли Выборка.Дата = 0 Тогда

Сообщить("Материал: " + Выборка.Наименование + " – поступлений нет");

Иначе    

Сообщить("Материал: " + Выборка.Наименование + " Дата: " + Выборка.Дата + " Номер: " + Выборка.Номер);

 

КонецЕсли;

 

КонецЦикла;

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

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

В панели Переменные вы увидите переменную ТЗ. Выделите ее и перейдите в панель Значения. В панели вы увидите содержимое этой таблицы значений в удобном для анализа виде (рис. 11.67).

Рис. 11.67. Просмотр результата запроса в отладчике

Если результат запроса вас устраивает и ваш дальнейший алгоритм не предполагает выгрузку результата запроса в таблицу значений или в дерево значений, не забудьте удалить строку ТЗ = РезультатЗапроса.Выгрузить() из модуля.