К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как посмотреть результаты запроса в 1С

Как посмотреть результаты запроса в 1С: консоль запросов, отладка через точку останова, выгрузка в таблицу значений и проверка выборки в коде.

Запрос в 1С — это обращение к базе данных на встроенном языке запросов, и умение быстро посмотреть, что он вернул, нужно и разработчику, и внедренцу, и продвинутому аналитику. Результат запроса не отображается сам по себе: его нужно либо выполнить в специальном инструменте, либо выгрузить в таблицу значений, либо просмотреть в отладчике.

Существует несколько рабочих способов: консоль запросов, отладчик конфигуратора с просмотром значений, программная выгрузка результата в табличный документ или таблицу значений, а также методика пошагового обхода выборки. Выбор зависит от того, где вы работаете — в режиме предприятия, в конфигураторе или внутри кода модуля.

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

Где вообще «живёт» результат запроса в 1С

Когда вы вызываете Запрос.Выполнить(), платформа возвращает объект типа «РезультатЗапроса». Сам по себе он не является таблицей данных — это объект-обёртка, из которого нужно получить выборку методом Выбрать() или выгрузить данные методом Выгрузить() в таблицу значений или дерево значений.

Именно поэтому «просто посмотреть» результат нельзя: платформа не показывает его визуально. Необходимо либо использовать инструмент, который делает выгрузку за вас (консоль запросов), либо выполнить выгрузку программно и посмотреть полученную таблицу.

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

Способ 1. Консоль запросов в режиме 1С:Предприятие

Консоль запросов — самый удобный инструмент, когда нужно посмотреть результат без изменения кода. Это внешняя обработка, которая позволяет вставить текст запроса, задать параметры и выполнить его с отображением результата в виде таблицы. Консоли бывают встроенными в типовые инструменты разработчика или поставляются отдельно.

Порядок работы простой: откройте консоль в режиме предприятия, вставьте текст запроса, заполните параметры (если они есть), нажмите «Выполнить». Результат появится в табличном поле, его можно прокручивать, сортировать и при необходимости выгрузить.

Главное ограничение — консоль выполняет запрос изолированно от вашего кода. Если запрос в модуле использует временные таблицы или параметры вычисляются сложной логикой, придётся вручную воспроизвести эти условия в консоли.

Порядок действий в консоли запросов
  1. 1
    Откройте консоль запросов в режиме 1С:Предприятие
  2. 2
    Вставьте текст запроса из кода или напишите новый
  3. 3
    Заполните значения всех параметров запроса
  4. 4
    Нажмите «Выполнить» и просмотрите таблицу результата
  5. 5
    Проверьте количество строк и значения ключевых полей

Способ 2. Просмотр результата через отладчик

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

Затем откройте «Вычислить выражение» (Ctrl+F9 или Shift+F9 в зависимости от версии платформы) и введите выражение Результат.Выгрузить(). Платформа покажет таблицу значений, которую можно развернуть и просмотреть построчно. Альтернатива — проверить Результат.Пустой, чтобы быстро понять, вернул ли запрос хоть что-то.

Этот способ точнее консоли, потому что запрос выполняется с реальными параметрами и реальными временными таблицами. Минус — нужен доступ к конфигуратору и возможность запуска отладки, что не всегда есть на рабочей базе у пользователя.

bsl
Результат = Запрос.Выполнить();
// В отладчике вычислите выражение:
// Результат.Выгрузить()
Если Результат.Пустой() Тогда
    Сообщить("Запрос ничего не вернул");
КонецЕсли;

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

Когда отладчик недоступен, результат можно вывести программно. Самый простой вариант — выгрузить результат в таблицу значений и передать её в табличное поле на форме или в табличный документ для печати и просмотра.

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

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

Как проверить выборку при обходе результата

Частая задача — убедиться, что обход выборки через Выборка.Следующий() обрабатывает правильные данные. Для этого в отладчике поставьте точку останова внутри цикла обхода и смотрите поля текущей строки выборки через табло или «Вычислить выражение».

Если выборка иерархическая (запрос с итогами), помните, что Выбрать() по умолчанию возвращает линейную выборку, а для обхода по группировкам нужен параметр ОбходРезультатаЗапроса.ПоГруппировкам. Просматривая результат, проверьте тип обхода — от него зависит структура видимых строк.

Полезный приём — перед циклом проверить количество записей: у выгруженной таблицы значений есть метод Количество(). Если строк ноль, а вы ожидали данные, проблема в условиях запроса или параметрах, а не в логике обхода.

Контрольные точки

Как проверить результат запроса

Результат.Пустой()
Норма

Ложь — данные есть, можно обходить или выгружать

Тревожный признак

Истина — запрос ничего не вернул, проверяйте отборы и параметры

Количество строк после Выгрузить()
Норма

Соответствует ожидаемому числу записей

Тревожный признак

Строк больше или меньше — ошибка в соединениях или условиях

Значения ключевых полей
Норма

Совпадают с данными в базе при ручной проверке

Тревожный признак

NULL или неожиданные значения — ошибка в полях или соединении

Типичные ошибки при просмотре результатов запроса

Самая распространённая ошибка — попытка смотреть поля объекта «РезультатЗапроса» напрямую. В табло отладчика этот объект показывает служебные свойства, а не данные; данные появятся только после Выгрузить() или при обходе выборки.

Вторая частая проблема — пустой результат в консоли при рабочем запросе в коде. Причина почти всегда в параметрах: в коде они вычисляются динамически, а в консоли заданы вручную с ошибкой, например передана строка вместо ссылки или дата без времени.

Третья ошибка — вывод результата через Сообщить() в серверной процедуре и удивление, что сообщений не видно. Сообщения серверного контекста доходят до клиента, но при фоновом выполнении их стоит искать в журнале регистрации, а не на экране.

Типичные ошибки
01
Просмотр объекта РезультатЗапроса вместо выгрузки — в табло видны только служебные свойства, а не данные
02
Задание параметров в консоли не того типа — запрос возвращает пустой результат, хотя в коде работает
03
Игнорирование временных таблиц — запрос изолированно даёт пустоту, потому что менеджер временных таблиц не заполнен
04
Выгрузка миллионов строк в таблицу значений для проверки — лишняя нагрузка на память сервера

Что выбрать в разных ситуациях

Для разового анализа данных в рабочей базе консоль запросов удобнее всего: не требует изменения кода и прав на конфигуратор. Для поиска ошибки в конкретном алгоритме незаменим отладчик — только он показывает результат с реальными параметрами и контекстом выполнения.

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

Маршрут решения

Как выбрать способ просмотра

Нужно быстро проверить данные в рабочей базе без изменения кодаИспользуйте консоль запросов в режиме 1С:Предприятие
Запрос ведёт себя не так внутри алгоритмаПоставьте точку останова и вычислите Результат.Выгрузить() в отладчике
Нет доступа к конфигуратору и консолиДобавьте временный программный вывод первых строк через Сообщить() или в журнал регистрации
Нужно проверять результат автоматическиИспользуйте проверку Результат.Пустой() и Количество() после Выгрузить()
Итог

Что важно запомнить

Результат запроса в 1С — объект, который нужно выгрузить или обойти. Для ручного просмотра используйте консоль запросов, для диагностики в коде — отладчик с выражением Выгрузить(), для автоматики — проверки Пустой() и Количество().

Частые вопросы

Почему запрос возвращает пустой результат, хотя данные в базе есть?

Чаще всего причина в параметрах: неверный тип значения, дата без времени, ссылка не того вида документа. Также проверьте условия соединений таблиц — левое соединение с дополнительным условием в секции ГДЕ может отсечь все строки. Сравните параметры в коде и в консоли через отладчик.

Можно ли посмотреть результат запроса без конфигуратора?

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

Чем Выбрать() отличается от Выгрузить()?

Выбрать() возвращает выборку для последовательного обхода строк в цикле — экономно по памяти, но строки доступны только по очереди. Выгрузить() создаёт таблицу значений целиком в памяти — удобно для просмотра и произвольного доступа, но рискованно при большом объёме данных.

Как посмотреть результат пакетного запроса из нескольких выборок?

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

Почему в отладчике не видно данных в таблице значений?

Таблица значений в окне вычисления выражений отображается свёрнутой — её нужно развернуть двойным щелчком или кнопкой просмотра. Если строк ноль, проверьте, что запрос действительно выполнился до точки останова и что выгрузка вызвана у правильной переменной.

Безопасно ли выполнять запросы в консоли на рабочей базе?

Запросы на выборку данных (ВЫБРАТЬ) не изменяют базу и безопасны. Опасайтесь только очень тяжёлых запросов без ограничений — они могут надолго заблокировать ресурсы сервера. Для проверки добавляйте ПЕРВЫЕ и выполняйте анализ в часы низкой нагрузки.