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

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

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

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

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

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

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

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

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

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

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

Интерфейс консоли: что где находится

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

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

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

Первый запрос: пошаговый порядок

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

Порядок действий
  1. 1
    Откройте консоль запросов через «Файл → Открыть» в режиме Предприятия
  2. 2
    Введите текст запроса или соберите его конструктором
  3. 3
    Заполните значения параметров во вкладке «Параметры», если они есть
  4. 4
    Нажмите «Выполнить» и дождитесь результата
  5. 5
    Проверьте количество строк и содержимое колонок — сопоставьте с ожиданием
  6. 6
    При необходимости сохраните запрос в файл через кнопку сохранения

Пример простейшего запроса к справочнику:

ВЫБРАТЬ ПЕРВЫЕ 100

Номенклатура.Ссылка КАК Ссылка,

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

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

ИЗ

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

ГДЕ

НЕ Номенклатура.ПометкаУдаления

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

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

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

Отдельный тип — параметр-список (массив или список значений), который используется с оператором В (&СписокСкладов). В консоли такой параметр заполняется как список значений: добавьте нужные элементы по одному. Проверить, что список передался корректно, можно временным запросом ВЫБРАТЬ с выводом самого параметра.

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

ВЫБРАТЬ

Продажи.Номенклатура КАК Номенклатура,

СУММА(Продажи.Количество) КАК Количество

ПОМЕСТИТЬ ВТ_Продажи

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

;

ВЫБРАТЬ

ВТ_Продажи.Номенклатура КАК Номенклатура,

ВТ_Продажи.Количество КАК Количество

ИЗ

ВТ_Продажи КАК ВТ_Продажи

ГДЕ

ВТ_Продажи.Количество > 0

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

Отладка запросов из кода конфигурации

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

Многие расширенные версии консоли поддерживают «отладочный» перенос: в коде вместо Запрос.Выполнить() временно вставляют вызов, который сохраняет текст запроса и параметры в файл, а затем этот файл открывают в консоли одной кнопкой. Если такой функции нет, достаточно скопировать текст запроса из свойства Запрос.Текст и вручную заполнить параметры значениями из табло отладчика.

После воспроизведения проблемы в консоли меняйте запрос по частям: убирайте соединения, упрощайте условия, пока не найдёте конкретное место ошибки. Затем переносите исправленный текст обратно в код. Такой цикл «код → консоль → код» занимает минуты против десятков минут отладки вслепую.

Риски при работе на продуктивной базе

Хотя консоль запросов не изменяет данные, неосторожный запрос способен надолго заблокировать работу пользователей. Запрос к виртуальной таблице остатков без отбора по периоду, соединение больших таблиц без условий или выборка всех движений документов за несколько лет на серверной базе создадут тяжёлую нагрузку и могут вызвать блокировки и тайм-ауты у других сеансов.

Безопасная практика: любой новый запрос сначала выполняйте с ограничением ПЕРВЫЕ и узкими отборами, оценивайте время выполнения, и только потом снимайте ограничения. Для тяжёлой аналитики используйте копию базы или выполняйте запросы в нерабочее время. Помните, что у пользователя без административных прав видны только те данные, к которым есть доступ по ролям — результат в консоли может отличаться от того, что вернёт код под другим пользователем.

Типичные ошибки
01
Запрос без ПЕРВЫЕ и отборов на большой таблице — зависание сеанса и блокировки у пользователей
02
Незаполненный параметр даты — запрос возвращает пустой результат, и это принимают за отсутствие данных
03
Соединение по неиндексированным полям — резкое падение скорости выполнения
04
Отладка на копии базы, а проверка результата в коде на продуктиве — расхождение данных из-за разных периодов
05
Игнорирование прав доступа: запрос в консоли под администратором работает, а в коде под пользователем падает с ошибкой доступа

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

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

Сравнение инструментов

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

Гибкая отладка любых запросов с параметрами и временными таблицами; требует знания языка запросов

Конструктор в конфигураторе

Визуальная сборка текста запроса; не выполняет запрос и не показывает данные

Универсальный отчёт (БСП)

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

Отчёт на СКД

Аналитика для пользователей с отборами и группировками; дольше в настройке, чем разовый запрос в консоли

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

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

Стандартная консоль запросов выполняет только запросы на выборку — язык запросов 1С в принципе не содержит операторов изменения данных. Однако существуют консоли кода и обработки «групповое изменение реквизитов», которые данные меняют. Не путайте инструменты и будьте внимательны, какую именно обработку запускаете.

Почему консоль не открывается в тонком клиенте?

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

Как передать в запрос список значений?

Объявите в тексте условие вида «Номенклатура В (&СписокНоменклатуры)», а в таблице параметров консоли установите тип «СписокЗначений» и добавьте нужные элементы через кнопку заполнения. Если консоль не даёт выбрать тип списка, используйте версию консоли с расширенным редактором параметров.

Запрос в консоли работает, а в коде возвращает пустоту. Почему?

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

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

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

Чем консоль запросов отличается от консоли кода?

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

Итог

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

Консоль запросов — безопасный инструмент чтения данных для написания и отладки запросов: открывается через «Файл → Открыть», поддерживает параметры, временные таблицы и конструктор. На продуктивной базе всегда начинайте с ограничения выборки и узких отборов, а тяжёлые запросы проверяйте на копии. Основной сценарий ценности — перенос проблемного запроса из кода в консоль, пошаговая отладка и возврат исправленного текста обратно.