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