Просмотр результата запроса в режиме отладки
страницаПросмотр результата запроса в режиме отладки
В процессе написания и отладки запросов часто возникает необходимость посмотреть результат запроса до того, как получена его выборка и написан алгоритм ее обработки.
Конечно, вы всегда можете воспользоваться консолью запросов в прикладном решении – скопировать в нее текст запроса из 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. Просмотр результата запроса в отладчике
Если результат запроса вас устраивает и ваш дальнейший алгоритм не предполагает выгрузку результата запроса в таблицу значений или в дерево значений, не забудьте удалить строку ТЗ = РезультатЗапроса.Выгрузить() из модуля.