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