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

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

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

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

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

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

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

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

Консоль запросов не входит в типовую поставку платформы. Наиболее распространённые варианты: консоль с диска ИТС (для подписчиков), консоли из состава инструментов разработчика, а также встроенная консоль в конфигурациях на базе БСП — там она доступна через раздел администрирования или «Все функции». Функционально они похожи: редактор текста запроса, список параметров, кнопка выполнения и таблица результата.

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

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

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

Обратите внимание на кнопки «Конструктор запроса», «Выполнить», «Заполнить параметры» и «Сохранить/Загрузить список запросов». Многие консоли дополнительно показывают план запроса, время выполнения и позволяют выгрузить результат в табличный документ. Перед началом работы найдите эти элементы — они понадобятся на каждом шаге отладки.

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

Начните с простого обращения к таблице, чтобы убедиться, что консоль работает. Например, выберите несколько полей из справочника номенклатуры с ограничением количества строк. Текст запроса пишется на языке запросов 1С — он похож на SQL, но использует имена объектов метаданных, а не физических таблиц СУБД.

bsl
ВЫБРАТЬ ПЕРВЫЕ 100
	Номенклатура.Код КАК Код,
	Номенклатура.Наименование КАК Наименование,
	Номенклатура.Артикул КАК Артикул
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	НЕ Номенклатура.ПометкаУдаления

Порядок действий при выполнении любого запроса одинаков, и его стоит довести до автоматизма.

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

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

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

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

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

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

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

Отладка: типичные ошибки и как их находить

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

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

Типичные ошибки
01
Передача строки вместо ссылки в параметр — запрос возвращает пустой результат без ошибки
02
ВНУТРЕННЕЕ соединение вместо ЛЕВОГО — теряются строки, у которых нет пары во второй таблице
03
Отбор по виртуальной таблице без параметров периода — запрос сканирует все данные и выполняется очень долго
04
Соединение по неуникальному полю — строки задваиваются, суммы в итоге завышены
05
Проверка запроса только на тестовой базе с малым объёмом — на рабочей базе запрос работает в разы медленнее

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

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

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

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

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

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

Совпадает с отбором в форме списка или типовом отчёте

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

Строк больше (задвоение при соединении) или меньше (лишний отбор, внутреннее соединение)

Суммы по регистрам
Норма

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

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

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

Время выполнения
Норма

Запрос отрабатывает за секунды на рабочем объёме данных

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

Десятки секунд и больше — нет параметров виртуальной таблицы или не используются индексы

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

Выбор консоли под свою задачу

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

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

Консоль с диска ИТС

Проверенный вариант для подписчиков; базовый функционал, подходит для отладки запросов

Консоль из инструментов разработчика

Расширенные возможности: план запроса, просмотр временных таблиц, обработка результата; требует аккуратности из-за функций изменения данных

Встроенная консоль в конфигурациях на БСП

Не требует внешнего файла и прав на открытие обработок; функционал зависит от версии библиотеки

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

Не требует ничего, кроме конфигуратора, но выполнить запрос и увидеть данные в нём нельзя — только собрать текст

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

Итог

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

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

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

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

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

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

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

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

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

Как отладить запрос, который выполняется слишком долго?

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

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

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