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

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

Как вызвать конструктор запроса в 1С

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

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

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

Важно понимать, что конструктор запроса доступен только в конфигураторе и толстом клиенте. В тонком и веб-клиенте, а также в режиме «Предприятие» его нет — там для анализа запросов используют внешние инструменты вроде консоли запросов. Ниже разобраны все рабочие способы вызова и нюансы работы с инструментом.

Вызов конструктора через контекстное меню модуля

Основной способ — контекстное меню редактора кода. Откройте модуль объекта, формы или общий модуль, установите курсор в то место, где должен находиться запрос, и нажмите правую кнопку мыши. В меню выберите пункт «Конструктор запроса...». Если курсор стоит на пустой строке, откроется пустой конструктор для создания нового запроса.

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

Порядок действий
  1. 1
    Откройте нужный модуль в конфигураторе
  2. 2
    Поставьте курсор в пустую строку или внутрь текста запроса
  3. 3
    Нажмите правую кнопку мыши и выберите «Конструктор запроса...»
  4. 4
    Выберите таблицы и поля на закладке «Таблицы и поля»
  5. 5
    Нажмите «ОК» — текст запроса будет вставлен в модуль

Вызов через главное меню «Текст»

Альтернативный путь — верхнее меню конфигуратора. При активном окне редактора модуля откройте пункт «Текст» и найдите в нём команду «Конструктор запроса...». Рядом обычно расположены и другие конструкторы: конструктор форматной строки, конструктор движений документа, конструктор печати.

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

Вызов из схемы компоновки данных и макетов

В отчётах на СКД конструктор запроса вызывается из закладки «Наборы данных». Откройте схему компоновки данных отчёта, перейдите на закладку «Наборы данных», добавьте или выделите набор данных типа «Запрос» и нажмите кнопку «Конструктор запроса...» рядом с полем текста запроса. Это стандартный сценарий при создании отчётов без написания кода.

Аналогичная кнопка есть в конструкторе макета при создании области с запросом, в конструкторе движений документа и в свойствах произвольных алгоритмов. Везде логика одна: рядом с полем, где ожидается текст запроса, есть кнопка вызова конструктора.

Конструктор запроса в режиме «Предприятие»: консоль запросов

Штатного конструктора в пользовательском режиме нет, но задачу отладки запросов решает внешняя обработка «Консоль запросов». Она позволяет вставить текст запроса, заполнить параметры, выполнить запрос и посмотреть результат в виде таблицы. Многие версии консоли включают собственный визуальный конструктор или кнопку вызова конструктора толстого клиента.

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

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

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

Полный функционал: временные таблицы, пакеты, итоги, объединения. Требует прав на конфигурирование.

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

Подходит для отладки на реальных данных без изменения конфигурации. Нужен толстый клиент.

Ручное написание текста

Максимальный контроль и использование возможностей, недоступных конструктору. Требует знания синтаксиса языка запросов.

Настройка запроса внутри конструктора

После открытия конструктора работа идёт по закладкам. На закладке «Таблицы и поля» выбирают объекты базы данных из левого списка, переносят их в список таблиц и отмечают нужные поля. Двойной клик по таблице добавляет её в запрос, двойной клик по полю добавляет поле в выборку.

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

Закладки «Группировка», «Порядок», «Итоги» и «Объединения/Псевдонимы» отвечают за агрегацию, сортировку, итоговые записи и переименование полей. Кнопка «Запрос» внизу окна показывает итоговый текст — полезно сверить его с ожиданиями перед нажатием «ОК».

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

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Вызов конструктора вне текста запроса — платформа создаёт новый запрос и затирает выделенный фрагмент
02
Нажатие «ОК» после случайного открытия — ручное форматирование запроса теряется
03
Доверие автоматическим связям таблиц без проверки — запрос возвращает задвоенные или лишние строки
04
Попытка найти конструктор в тонком клиенте — он доступен только в конфигураторе и толстом клиенте

Проверка результата после работы конструктора

После нажатия «ОК» текст запроса вставляется в модуль. Убедитесь, что строка корректно оформлена: каждая строка текста начинается с символа «|», кавычки закрыты, присвоение идёт в свойство Запрос.Текст. Затем проверьте синтаксис модуля через меню «Конфигурация → Проверка конфигурации» или комбинацию Ctrl+F7 в модуле.

Финальная проверка — выполнение. Откройте базу в режиме «Предприятие», выполните код с запросом и убедитесь, что выборка возвращает ожидаемые строки. Для изолированной проверки удобно скопировать текст в консоль запросов и подставить реальные значения параметров.

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

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

Текст запроса в модуле
Норма

Строки начинаются с «|», кавычки закрыты, синтаксическая проверка проходит

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

Ошибка «Ожидается символ» или «Неверные символы» при проверке модуля

Результат выполнения
Норма

Выборка содержит ожидаемое число строк без дублей

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

Пустой результат при наличии данных или задвоение строк из-за связи

Параметры запроса
Норма

Все параметры &Параметр заполнены через УстановитьПараметр

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

Ошибка «Параметр не задан» при выполнении

Частые вопросы о конструкторе запроса

Почему пункт «Конструктор запроса» неактивен в меню?

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

Можно ли вызвать конструктор горячими клавишами?

Отдельного стандартного сочетания у конструктора запроса нет. Можно настроить своё сочетание через «Сервис → Параметры» на закладке «Модули» либо использовать меню «Текст» через клавишу Alt.

Конструктор не открывает мой запрос и пишет об ошибке. Что делать?

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

Есть ли конструктор запроса в тонком клиенте?

Нет, визуальный конструктор доступен только в конфигураторе и толстом клиенте. В тонком клиенте используйте консоль запросов с ручным редактированием текста и проверкой результата выполнением.

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

На закладке «Условия» в поле условия напишите выражение вида Поле = &ИмяПараметра. Конструктор автоматически распознает параметр. Не забудьте затем в коде задать его значение методом Запрос.УстановитьПараметр().

Почему после конструктора изменился формат моего запроса?

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

Итог

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

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