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