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