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