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

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

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

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

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

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

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

Что такое конструктор запросов и когда он нужен

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

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

Как открыть конструктор запросов из модуля в конфигураторе

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

Порядок действий
  1. 1
    Откройте конфигуратор и нужный модуль (например, модуль документа или общий модуль).
  2. 2
    Напишите заготовку кода: Запрос = Новый Запрос; и добавьте строку Запрос.Текст = ""; — курсор поставьте внутрь кавычек.
  3. 3
    Нажмите правую кнопку мыши и выберите пункт «Конструктор запроса…».
  4. 4
    Платформа предложит создать текст запроса — подтвердите, откроется окно конструктора.
  5. 5
    Выберите таблицы и поля, настройте условия и нажмите «ОК» — текст запроса появится в модуле автоматически.

Если текст запроса уже написан, достаточно поставить курсор внутрь строки с текстом запроса, вызвать контекстное меню и выбрать «Конструктор запроса…». Конструктор разберёт существующий текст и откроет его для редактирования. Это удобно для доработки чужого кода.

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

Открытие конструктора в схеме компоновки данных (СКД)

При создании отчёта на СКД запрос задаётся на закладке «Наборы данных». Чтобы открыть конструктор, откройте схему компоновки данных отчёта (в конфигураторе: отчёт → «Основная схема компоновки данных» → кнопка «Открыть схему компоновки данных»), перейдите на закладку «Наборы данных», добавьте набор данных типа «Запрос» и нажмите кнопку «Конструктор запроса…» рядом с полем текста запроса.

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

Признак успешного открытия: появляется окно с закладками «Таблицы и поля», «Связи», «Группировка», «Условия», «Объединения/Псевдонимы», «Порядок», «Итоги» и, для СКД, «Компоновка данных». Если окно не открывается, проверьте, что курсор стоит именно в поле запроса набора данных, а не в другом поле формы.

Как открыть конструктор через консоль запросов в режиме предприятия

В пользовательском режиме штатного конструктора нет, но задачу решает внешняя обработка «Консоль запросов». Во многих типовых конфигурациях она встроена в раздел администрирования или входит в подсистему «Инструменты разработчика». Если её нет, используется отдельная внешняя обработка, которую открывают через «Файл → Открыть».

После запуска консоли запросов конструктор вызывается кнопкой на панели инструментов (обычно подписана «Конструктор запроса» или имеет соответствующую пиктограмму) либо через контекстное меню в поле текста запроса. Консоль позволяет не только собрать запрос, но и сразу выполнить его и посмотреть результат — это безопасно, так как запросы только читают данные.

Что делать, если конструктор запросов не открывается

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

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

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

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

Горячие клавиши и дополнительные способы вызова

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

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

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

Конструктор запроса

Только формирует текст запроса. Подходит, когда код выполнения уже написан или запрос нужен для СКД.

Конструктор запроса с обработкой результата

Создаёт текст запроса плюс заготовку кода: выполнение, выборка, цикл обхода. Подходит при написании новых процедур.

Консоль запросов в режиме предприятия

Позволяет собрать запрос и сразу увидеть результат на реальных данных без изменения конфигурации. Требует внешней обработки и соответствующих прав.

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

После нажатия «ОК» конструктор вставляет текст запроса в модуль. Первый шаг проверки — синтаксический контроль модуля (кнопка с галочкой на панели инструментов или пункт меню «Конфигурация → Проверка конфигурации» с включённой проверкой модулей). Ошибки в тексте запроса будут показаны в окне сообщений.

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

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

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

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

Запрос читается целиком, кавычки и вертикальные черты переносов строк расставлены корректно

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

Текст обрывается, платформа сообщает о синтаксической ошибке в строке

Выполнение запроса в консоли
Норма

Возвращается таблица с ожидаемыми полями и строками

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

Ошибка «Поле не найдено» или пустой результат при заведомо существующих данных

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

Все параметры объявлены и заполняются перед выполнением

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

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

Ограничения и безопасная практика работы

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

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

Итог

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

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

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

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

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

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

Пункт активен, только когда курсор находится внутри строкового литерала с текстом запроса. Поставьте курсор между кавычками в строке вида Запрос.Текст = "..."; и вызовите контекстное меню снова.

Чем отличается конструктор запроса от конструктора запроса с обработкой результата?

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

Опасно ли открывать консоль запросов в рабочей базе?

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

Конструктор предупреждает, что часть текста запроса будет утеряна. Что делать?

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

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

Напрямую — нет, конструктор работает с одной строковой константой. Временно соберите текст запроса в одну строку, отредактируйте в конструкторе, а затем верните динамическую сборку, перенеся изменения в нужные фрагменты.