Разработка и Конфигурация · 12 мин
1С: как посмотреть результат запроса
Как посмотреть результат запроса в 1С: консоль запросов, отладчик, метод Выгрузить(), типовые инструменты СКД. Пошаговые инструкции, ошибки и проверка результата.
Результат запроса в 1С можно посмотреть несколькими способами: через консоль запросов в режиме предприятия, через отладчик в конфигураторе, через выгрузку в таблицу значений с последующим выводом на форму или через систему компоновки данных. Выбор способа зависит от того, где вы работаете — в режиме разработки или в пользовательском сеансе — и есть ли у вас доступ к конфигуратору.
Чаще всего разработчику нужно быстро проверить, что возвращает запрос: какие строки, какие значения полей, не пустой ли результат. Для этого не обязательно писать обработку вывода — достаточно выполнить запрос и вызвать метод Выгрузить(), а затем посмотреть содержимое таблицы значений в отладчике или в консоли запросов.
Ниже разобраны основные рабочие способы: от простейшего просмотра в отладчике до использования типовой консоли запросов и проверки результата на стороне пользователя без прав разработчика.
Что возвращает запрос и в каком виде его можно посмотреть
Метод Выполнить() объекта «Запрос» возвращает объект типа «РезультатЗапроса». Сам по себе он не показывает данные визуально — это промежуточный объект, из которого данные нужно извлечь одним из трёх способов:
Выгрузить()— возвращает таблицу значений, которую удобно просматривать и обходить;Выбрать()— возвращает выборку для построчного обхода в цикле;Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)— возвращает дерево значений при наличии итогов и группировок.
Для визуального просмотра почти всегда используют таблицу значений: её можно открыть в отладчике как обычную таблицу с колонками и строками. Выборка же предназначена для программного обхода и в отладчике показывает только текущую строку.
Также у результата запроса есть полезное свойство Пустой — проверка Результат.Пустой() позволяет сразу понять, вернул ли запрос хотя бы одну строку, не выгружая данные.
Просмотр результата запроса в отладчике
Отладчик — основной инструмент, когда запрос выполняется внутри программного кода и нужно проверить его на реальных данных в момент выполнения.
Порядок действий стандартный:
- Установите точку останова на строке после выполнения запроса (например, после строки
Результат = Запрос.Выполнить();). - Запустите отладку (F5) и дождитесь остановки.
- Выделите выражение
Запрос.Выполнить().Выгрузить()или переменную с таблицей значений и нажмите Shift+F9 («Вычислить выражение»). - В окне выражений откройте таблицу значений двойным щелчком — откроется отдельное окно со строками и колонками.
Если таблица уже лежит в переменной (например, ТЗ = Результат.Выгрузить();), достаточно вычислить саму переменную. В окне просмотра таблицы значений доступны сортировка по колонкам и прокрутка, что удобно при сотнях строк.
- 1Поставьте точку останова после выполнения запроса
- 2Запустите отладку и дождитесь остановки
- 3Нажмите Shift+F9 и вычислите выражение Запрос.Выполнить().Выгрузить()
- 4Двойным щелчком по таблице значений откройте окно просмотра
- 5Проверьте количество строк, значения колонок и типы данных
Просмотр выборки без выгрузки
Если запрос обходится выборкой, в отладчике можно вычислить отдельные поля текущей строки: Выборка.Номенклатура, Выборка.Количество и так далее. Чтобы увидеть всю строку целиком, вычислите саму переменную выборки — отладчик покажет список полей со значениями текущей позиции.
Консоль запросов в режиме предприятия
Консоль запросов — внешняя обработка, которая позволяет написать и выполнить запрос прямо в пользовательском режиме и сразу увидеть результат в табличном виде, без конфигуратора и отладки. Это самый удобный способ, когда нужно проверить данные в рабочей базе.
Консоль запросов входит в состав стандартных подсистем БСП (Библиотека стандартных подсистем) и часто встроена в типовые конфигурации как сервисная обработка. Также существуют распространённые свободные версии консоли, которые запускаются через «Файл → Открыть».
Типовой сценарий работы:
- Откройте консоль запросов в режиме предприятия.
- Вставьте текст запроса или соберите его конструктором.
- Заполните параметры запроса, если они есть (консоль показывает список параметров отдельно).
- Нажмите «Выполнить» — результат появится в таблице под текстом запроса.
Многие версии консоли дополнительно показывают временные таблицы пакетного запроса, позволяют выгрузить результат в Excel или табличный документ и сохранить запрос в файл для повторного использования.
Вывод результата на форму или в табличный документ
Когда результат нужно показать пользователю, а не разработчику, таблицу значений выводят на управляемую форму или в табличный документ.
На управляемой форме создают реквизит типа «ТаблицаЗначений» с нужными колонками, добавляют связанный элемент формы и заполняют реквизит программно:
Результат = Запрос.Выполнить().Выгрузить();
ТаблицаНаФорме.Загрузить(Результат);
Для печатного или аналитического представления используют табличный документ: метод Вывести() с макетом либо построение через построитель отчёта. Построитель отчёта (ПостроительОтчета) умеет автоматически формировать табличный документ по тексту запроса — это быстрый способ получить печатную форму результата без ручной разработки макета.
В толстом клиенте (обычные формы) таблицу значений можно было показать напрямую методом Показать() — этот приём до сих пор встречается в старых конфигурациях, но в управляемом приложении он не работает.
Проверка запроса через СКД и типовые отчёты
Если запрос является частью отчёта на системе компоновки данных, результат проще всего посмотреть, сформировав сам отчёт. Но когда нужно увидеть «сырой» набор данных до настроек СКД, есть два пути.
Первый — в схеме компоновки данных (закладка «Наборы данных») скопировать текст запроса и выполнить его в консоли запросов, подставив значения параметров. Так видно, что именно возвращает набор данных до группировок и отборов отчёта.
Второй — использовать консоль СКД или отладку: в модуле отчёта поставить точку останова после программной компоновки и вычислить результат. Это полезно, когда данные в отчёте отличаются от ожидаемых и нужно понять, на каком этапе они «теряются» — в запросе или в настройках компоновки.
Сравнение способов просмотра
Подходит при разработке и поиске ошибок в коде. Требует доступа к конфигуратору и возможности запуска отладки.
Оптимальна для проверки данных в рабочей базе без изменения кода. Требует прав на внешние обработки.
Нужен, когда результат должен видеть пользователь. Требует доработки конфигурации или внешней обработки.
Подходит, когда запрос уже часть отчёта. Показывает данные после настроек компоновки, а не сырой результат.
Типичные ошибки при просмотре результата
Наиболее частая ситуация — запрос выполняется без ошибок, но результат пустой. Причины обычно такие: не заполнен обязательный параметр (например, период или организация), в параметр передано значение не того типа, либо условия отбора взаимно исключают друг друга. Проверяйте параметры в отладчике до выполнения запроса.
Вторая группа ошибок связана с виртуальными таблицами: запрос к остаткам регистра без указания периода, срез последних без даты — такие запросы могут вернуть не те данные, которые ожидались, либо работать неоправданно медленно.
Третья типичная проблема — попытка посмотреть результат, который обходится выборкой, после завершения цикла: выборка уже пройдена, и в отладчике видны только последние значения. В таком случае ставьте точку останова внутри цикла или временно замените выборку на Выгрузить().
Как проверить, что результат корректен
После того как данные получены, полезно выполнить несколько контрольных проверок, прежде чем использовать запрос в рабочем коде.
Как проверить результат
Совпадает с ожидаемым по прикладному смыслу (например, числу документов за период)
Ноль строк при заведомо существующих данных или задвоения при соединениях
Суммы и количества сходятся с данными в формах документов или типовых отчётах
Расхождения кратны числу строк соединения — признак лишнего LEFT JOIN
Ссылочные поля содержат ссылки, числовые — числа
NULL в полях, которые должны быть заполнены, — признак незаполненных данных или левого соединения
Запрос выполняется за приемлемое время на реальном объёме данных
Заметное «подвисание» — проверьте индексацию и условия по виртуальным таблицам
Надёжный приём — сверить результат запроса с типовым отчётом по тому же регистру за тот же период. Если итоговые суммы совпадают, запрос с высокой вероятностью корректен; расхождение указывает на ошибку в соединениях, отборах или параметрах виртуальной таблицы.
Ограничения и меры предосторожности
Выгрузка результата в таблицу значений загружает все строки в память. Для запросов, возвращающих сотни тысяч записей, это может привести к заметному росту потребления памяти на сервере или клиенте. В прикладном коде большие результаты обходят выборкой, а Выгрузить() используют для отладки и умеренных объёмов.
Отладка на рабочем сервере может быть отключена администратором или работать в ограниченном режиме. Не запускайте отладку с остановкой на продуктивном сервере в часы активной работы пользователей без согласования — остановленный сеанс удерживает соединения и может мешать другим процессам.
Что важно запомнить
Результат запроса в 1С просматривается через Выгрузить() в таблицу значений — в отладчике по Shift+F9 или в консоли запросов в режиме предприятия. Для пользователя данные выводят на форму или в табличный документ. Всегда проверяйте параметры, количество строк и сверяйте итоги с типовыми отчётами.
Частые вопросы
Как посмотреть результат запроса без доступа к конфигуратору?
Используйте консоль запросов — внешнюю обработку, запускаемую в режиме предприятия через «Файл → Открыть», либо встроенный инструмент разработчика, если он есть в вашей конфигурации. Потребуются права на открытие внешних обработок.
Почему в отладчике результат запроса не показывает данные?
Вы, скорее всего, вычисляете только объект «РезультатЗапроса». Он не содержит визуального представления — добавьте к выражению вызов .Выгрузить(), тогда откроется таблица значений со строками и колонками.
Как увидеть результат пакетного запроса с временными таблицами?
Через выборку или выгрузку виден только последний результат пакета. Чтобы посмотреть промежуточную временную таблицу, добавьте в конец пакета запрос вида «ВЫБРАТЬ * ИЗ ИмяВременнойТаблицы» либо используйте консоль запросов с поддержкой временных таблиц.
Что делать, если запрос возвращает пустой результат, хотя данные есть?
Проверьте параметры: незаполненный параметр отбора чаще всего даёт пустой результат. Затем временно уберите условия ГДЕ по одному, чтобы найти условие, которое отсекает все строки. Также проверьте период виртуальной таблицы, если используете остатки или срезы.
Можно ли выгрузить результат запроса в Excel?
Да. Выгрузите результат в табличный документ и сохраните его в формате Excel штатными средствами платформы, либо используйте кнопку выгрузки в консоли запросов, если она поддерживает сохранение в файл. Прямого метода «запрос в Excel» в платформе нет.
Чем отличается Выгрузить() от Выбрать()?
Выгрузить() помещает весь результат в таблицу значений в памяти — удобно для просмотра и произвольного доступа к строкам. Выбрать() возвращает выборку для последовательного обхода в цикле — экономнее по памяти, но посмотреть можно только текущую строку.