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

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

Как работает консоль запросов в 1С

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

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

Инструмент не входит в типовую поставку конфигурации: это внешняя обработка (файл с расширением .epf), которую открывают через меню «Файл → Открыть» в режиме предприятия или через конфигуратор. Существуют разные версии консоли — для обычных форм и для управляемого приложения, а также консоль, встроенная в подсистему «Инструменты разработчика». Принцип работы у всех одинаковый: вы пишете текст запроса, задаёте параметры, нажимаете «Выполнить» и получаете таблицу результата.

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

Где взять консоль запросов и как её запустить

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

Запуск выполняется в режиме 1С:Предприятие через «Файл → Открыть» с выбором файла обработки. В тонком клиенте и веб-клиенте файловый режим открытия может быть ограничен настройками безопасности — тогда обработку подключают через механизм дополнительных отчётов и обработок, если он есть в конфигурации. Для работы нужны права на открытие внешних обработок и на чтение тех таблиц, к которым обращается запрос.

Как устроено окно консоли: текст, параметры, результат

Рабочая область консоли обычно состоит из трёх логических частей. Верхняя — редактор текста запроса на языке запросов 1С. Средняя — список параметров, где каждому имени вида &Параметр из текста сопоставляется конкретное значение. Нижняя — таблица результата, куда выводятся строки выборки.

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

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

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

Начните с простого обращения к одной таблице. Например, чтобы посмотреть список контрагентов, достаточно текста ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Контрагенты. Нажатие кнопки «Выполнить» отправляет запрос в базу, и таблица результата заполняется строками. Если текст содержит синтаксическую ошибку, консоль покажет сообщение платформы с указанием позиции ошибки.

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

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

Работа с параметрами и временными таблицами

Параметры объявляются в тексте символом амперсанда: &ДатаНачала, &Организация. Перед выполнением каждому параметру нужно задать значение подходящего типа — дату, ссылку на элемент справочника, число. Частая ошибка — передать в параметр строку там, где запрос ожидает ссылку: сравнение Контрагент = &Контрагент со строковым параметром вернёт пустой результат без всякой ошибки.

Временные таблицы позволяют разбить сложный запрос на этапы: сначала вы отбираете данные во временную таблицу командой ПОМЕСТИТЬ ВТ, затем используете её в следующем запросе пакета. В консоли пакет выполняется целиком, а результат показывается по последнему запросу пакета. Это удобно для отладки: можно временно заменить последний запрос на выборку из промежуточной ВТ и посмотреть, что в неё попало.

bsl
ВЫБРАТЬ
	Остатки.Номенклатура,
	Остатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки
;
ВЫБРАТЬ * ИЗ ВТ_Остатки

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

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

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

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

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

Количество строк
Норма

Совпадает с ожидаемым объёмом данных

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

Неожиданный ноль или кратное задвоение строк

Типы параметров
Норма

Ссылки передаются как ссылки, даты как даты

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

Строка вместо ссылки — пустой результат без ошибки

Итоги по суммам
Норма

Сходятся с типовым отчётом за тот же период

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

Расхождение — проверяйте виртуальные таблицы и условия

Типичные ошибки и ограничения инструмента

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

Типичные ошибки
01
Параметр не заполнен или имеет неверный тип — запрос выполняется, но возвращает пустую таблицу без сообщения об ошибке
02
Левое соединение с условием в секции ГДЕ по правой таблице — соединение фактически превращается во внутреннее, строки теряются
03
Фильтр в ГДЕ вместо параметров виртуальной таблицы — запрос работает медленно и может давать неожиданные итоги
04
Тяжёлый запрос без отбора по периоду на большой рабочей базе — долгое выполнение и нагрузка на сервер
05
Отладка запроса с RLS: под администратором результат один, у пользователя с ограничениями — другой, и это принимают за ошибку запроса

Ограничения тоже стоит учитывать. Консоль не показывает план запроса на уровне СУБД — для глубокой оптимизации нужны средства СУБД или технологический журнал. В некоторых версиях нет конструктора запроса, и текст приходится писать вручную. Результат нельзя напрямую превратить в отчёт СКД — для этого запрос переносят в схему компоновки данных.

Альтернативы консоли: когда удобнее другой инструмент

Консоль запросов не всегда оптимальный выбор. Для разового просмотра данных пользователю без навыков языка запросов проще воспользоваться типовым отчётом или универсальным отчётом по регистру. Для постоянных аналитических задач правильнее построить отчёт на СКД, где запрос встроен в схему и доступны настройки отборов без правки текста.

Сравнение вариантов

Консоль запросов

Быстрая отладка и ad-hoc анализ для разработчика; требует знания языка запросов

Отчёт на СКД

Постоянная отчётность для пользователей с гибкими настройками; требует разработки и встраивания в конфигурацию

Консоль кода / отладчик

Проверка логики алгоритма и значений переменных; не заменяет анализ выборки целиком

Средства СУБД

План запроса и глубокая оптимизация; требуют доступа к серверу БД и учитывают специфику SQL

Итог

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

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

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

Можно ли через консоль запросов изменить данные в базе?

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

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

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

Чем консоль для управляемого приложения отличается от консоли обычных форм?

Функционально они близки, отличия в интерфейсе и совместимости: обработка на обычных формах не откроется в управляемом режиме и наоборот. Для современных конфигураций на управляемых формах берите соответствующую версию консоли, иначе обработка просто не запустится.

Как отладить запрос из типового отчёта, если он собирается динамически?

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

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

Сами по себе запросы на чтение данные не портят. Риск в другом: тяжёлый запрос без отборов на большой таблице может надолго загрузить сервер СУБД и замедлить работу пользователей. Поэтому объёмные проверки запускайте с ограничением периода, в нерабочее время или на копии базы.

Можно ли сохранить написанный запрос для повторного использования?

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