Разработка и Конфигурация · 9 мин
Как вызвать конструктор запросов в 1С
Как вызвать конструктор запросов в 1С: горячие клавиши, контекстное меню, вызов из модуля и консоли запросов. Разбор ошибок и практические приёмы.
Конструктор запросов — встроенный визуальный инструмент конфигуратора 1С, который позволяет собирать текст запроса на встроенном языке без ручного набора синтаксиса. Он вызывается прямо из редактора модуля и доступен в любой типовой или самописной конфигурации, где используется объект «Запрос».
Чаще всего конструктор открывают при написании процедур в модулях объектов, форм и общих модулей: разработчик ставит курсор в нужное место кода, вызывает конструктор и визуально выбирает таблицы, поля, условия и группировки. Результат конструктор вставляет в модуль в виде готового текста запроса.
Ниже разобраны все способы вызова конструктора: через контекстное меню, сочетание клавиш, при работе с уже готовым текстом запроса, а также ограничения инструмента и типичные ошибки начинающих разработчиков.
Где доступен конструктор запросов
Конструктор запросов работает только в конфигураторе 1С:Предприятие и только внутри редактора программного модуля. В пользовательском режиме «1С:Предприятие» его нет — там для анализа данных используются отчёты и консоль запросов из внешних обработок.
Инструмент доступен в модулях форм, модуле объекта, модуле менеджера, общих модулях, модуле приложения и внешних обработок. Требование одно: курсор должен находиться внутри строкового литерала (текста в кавычках) либо в пустой строке, где будет создан новый запрос.
Вызов через контекстное меню
Основной способ — контекстное меню редактора модуля. Откройте нужный модуль в конфигураторе, установите курсор внутрь пустых кавычек строки запроса (например, между кавычками в выражении Запрос.Текст = "") или на пустую строку. Нажмите правую кнопку мыши и выберите пункт «Конструктор запроса...».
Если курсор стоит в пустой строке, конструктор откроется для создания нового текста запроса и после нажатия «ОК» вставит результат в позицию курсора. Если курсор находится внутри существующего текста запроса, конструктор загрузит этот текст для редактирования — удобно при доработке уже написанных запросов.
- 1Откройте модуль в конфигураторе и поставьте курсор внутрь строки запроса или на пустую строку
- 2Нажмите правую кнопку мыши и выберите «Конструктор запроса...»
- 3На закладке «Таблицы и поля» выберите источник данных и перенесите нужные поля
- 4Настройте условия, соединения, группировки и итоги на соответствующих закладках
- 5Нажмите «ОК» и проверьте, что текст запроса появился в модуле
Вызов сочетанием клавиш и через меню «Текст»
Быстрее всего конструктор вызывается горячими клавишами. В большинстве версий платформы 8.3 действует сочетание Ctrl+Q при установленном курсоре в тексте запроса. Альтернатива — главное меню конфигуратора: «Текст» → «Конструктор запроса...».
Если сочетание Ctrl+Q не срабатывает, проверьте, что курсор действительно находится внутри строкового литерала, а не в обычном коде. Вне строки с текстом запроса команда неактивна — это частая причина, почему «не вызывается конструктор».
Как понять, что курсор стоит правильно
Признак корректной позиции: текст запроса подсвечен как строка (обычно красным или коричневым цветом в стандартной цветовой схеме), а пункт «Конструктор запроса» в контекстном меню активен. Если пункт серый — курсор вне строки либо строка оформлена с синтаксической ошибкой (например, незакрытая кавычка).
Вызов конструктора для существующего запроса
Конструктор умеет не только создавать, но и редактировать готовые запросы. Поставьте курсор в любое место текста запроса в кавычках и вызовите конструктор — он распарсит текст и откроет его в визуальном виде: таблицы, поля, связи и условия появятся на своих закладках.
Ограничение: конструктор понимает не весь синтаксис языка запросов. Запросы с некоторыми сложными конструкциями (например, определённые варианты вложенных запросов в условиях соединений или специфические выражения) он может открыть с предупреждением или отказаться редактировать. В таком случае текст придётся править вручную.
Конструктор запроса с обработкой результата
В контекстном меню есть второй пункт — «Конструктор запроса с обработкой результата...». Он делает больше: помимо текста запроса формирует готовый фрагмент кода — создание объекта «Запрос», установку параметров, выполнение и обход выборки в цикле.
Этот вариант удобен начинающим: на выходе получается работающий шаблон, который остаётся доработать под свою задачу. На закладке «Обработка результата» можно выбрать тип обхода (прямой, по группировкам, по иерархии) и даже сгенерировать код вывода в табличный документ.
Два конструктора — что выбрать
Подходит, когда нужен только текст запроса: вы уже знаете, как выполнить его в коде, и пишете обработку результата самостоятельно.
Подходит для быстрого старта: генерирует полный фрагмент кода с выполнением запроса и циклом обхода выборки. Код получается шаблонным и часто требует упрощения.
Консоль запросов как альтернатива
Для отладки запроса на реальных данных удобнее консоль запросов — внешняя обработка, которая выполняет запрос в пользовательском режиме и показывает результат. Многие консоли имеют собственный встроенный конструктор запросов, вызываемый кнопкой на панели инструментов консоли.
Типовой сценарий: запрос собирается и отлаживается в консоли на реальных данных базы, затем готовый текст переносится в модуль конфигурации. Это снижает число циклов «изменил модуль — запустил предприятие — проверил».
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Товар,
| Номенклатура.Код КАК Код
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ПометкаУдаления = ЛОЖЬ";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Сообщить(Результат.Товар);
КонецЦикла;Типичные ошибки при вызове конструктора
Самая частая проблема — неактивный пункт меню. Причины: курсор стоит вне строкового литерала, строка содержит синтаксическую ошибку (незакрытая кавычка, пропущен символ «|» в начале строки), либо модуль открыт в режиме только для чтения.
Вторая ошибка — попытка вызвать конструктор в тонком или веб-клиенте пользовательского режима. Конструктор существует только в конфигураторе; в режиме «Предприятие» его нет и не будет. Третья ошибка — ожидание, что конструктор исправит логику: он строит синтаксически правильный запрос, но корректность выбранных таблиц и связей остаётся на разработчике.
Проверка результата после вставки
После нажатия «ОК» убедитесь, что текст запроса вставился целиком: первая строка начинается с «ВЫБРАТЬ», последняя заканчивается корректно, все строки имеют символ «|». Затем выполните синтаксическую проверку модуля (кнопка с галочкой на панели или Ctrl+F7) — она выявит ошибки оформления строки.
Полная проверка возможна только при выполнении: запустите отладку (F5) и убедитесь, что запрос выполняется без исключений и возвращает ожидаемые данные. Пустая выборка без ошибки — тоже результат, который стоит проверить: часто это признак избыточного условия в секции ГДЕ.
Как проверить результат
Все строки начинаются с «|», кавычки закрыты, модуль проходит проверку синтаксиса
Ошибка компиляции, строки съехали, часть текста потеряна
Запрос выполняется без исключения и возвращает ожидаемые записи
Ошибка «Поле не найдено» или пустой результат при наличии данных
Все параметры из текста установлены через УстановитьПараметр до выполнения
Исключение «Не задано значение параметра» при выполнении
FAQ
Какой горячей клавишей вызывается конструктор запросов в 1С 8.3?
Стандартное сочетание — Ctrl+Q при курсоре внутри текста запроса. Если оно не работает, используйте контекстное меню правой кнопки мыши или главное меню «Текст» → «Конструктор запроса...».
Почему пункт «Конструктор запроса» серый и не нажимается?
Курсор находится вне строкового литерала с текстом запроса либо строка содержит синтаксическую ошибку. Поставьте курсор между кавычками текста запроса или на пустую строку — пункт станет активным.
Можно ли вызвать конструктор запросов в режиме 1С:Предприятие?
Нет, конструктор доступен только в конфигураторе. В пользовательском режиме для построения и отладки запросов применяют внешние обработки — консоли запросов, многие из которых содержат собственный конструктор.
Чем отличается конструктор запроса от конструктора с обработкой результата?
Первый формирует только текст запроса. Второй дополнительно генерирует код создания объекта «Запрос», установки параметров, выполнения и обхода выборки — готовый шаблон для доработки.
Конструктор не открывает мой запрос и выдаёт предупреждение. Что делать?
Запрос содержит конструкции, которые конструктор не умеет разбирать. Сохраните текст запроса отдельно и редактируйте такой запрос вручную, либо упростите проблемную конструкцию до вида, понятного конструктору.
Можно ли вызвать конструктор для вложенного запроса?
Да, если поставить курсор внутрь текста вложенного запроса, конструктор откроет именно его. Однако глубоко вложенные и сложные структуры конструктор может обрабатывать с ограничениями.
Что важно запомнить
Конструктор запросов вызывается в конфигураторе из редактора модуля: правой кнопкой мыши, Ctrl+Q или через меню «Текст». Курсор должен стоять внутри текста запроса или на пустой строке. Для сложных запросов перед редактированием делайте копию текста, а результат всегда проверяйте выполнением на реальных данных.