Где открыть конструктор запроса: Конфигуратор, СКД и консоль

· 9 мин

Содержание

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

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

Подготовка: какой режим запуска нужен и где писать запрос

Конструктор — часть редактора текста модулей. Поэтому сначала нужен режим, в котором вы редактируете код или схему отчёта.

Что проверить до старта:

  • 🔑 Права. Для входа в Конфигуратор пользователю базы нужно право «Администрирование». Без него кнопка Конфигуратор в окне запуска пустит вас только до ошибки авторизации.
  • 🖥️ Режим. В окне запуска выберите базу и нажмите Конфигуратор, а не 1С:Предприятие.
  • 📂 Открытая конфигурация. Сразу после входа дерево объектов скрыто. Откройте его: Конфигурация → Открыть конфигурацию.
  • ✏️ Модуль, доступный для правки. Конструктор пишет текст в модуль. Если модуль только для чтения, команда станет недоступной (подробно — в разделе про ошибки).

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

"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор"

Для серверной базы вместо /F используют /S"сервер\имя_базы".

Учиться и экспериментировать удобнее во внешней обработке. В Конфигураторе выберите Файл → Новый → Внешняя обработка, откройте её модуль объекта и пишите запросы там. Конфигурацию базы вы при этом не трогаете, а обработку потом можно запускать в режиме Предприятия.

Как запустить конструктор запроса в Конфигураторе

Основной способ работает в любом модуле: модуле объекта, менеджера, формы, общем модуле, модуле внешней обработки.

Новый запрос с нуля

  1. Откройте модуль двойным щелчком по объекту или через контекстное меню объекта в дереве.
  2. Напишите заготовку, куда будет вставлен текст, например внутри процедуры:
Запрос = Новый Запрос;
Запрос.Текст = 
  1. Поставьте курсор после знака = или на пустую строку под ним.
  2. Нажмите правую кнопку мыши и выберите Конструктор запроса....
  3. Платформа сообщит, что текст запроса не найден, и спросит, создать ли новый. Ответьте Да.
  4. Соберите запрос в окне конструктора и нажмите ОК. Текст вставится в модуль строковым литералом с символами | в начале строк.

Правка существующего запроса

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

Конструктор удаляет комментарии внутри текста запроса и переформатирует его. Если у вас в запросе были пояснения через //, после нажатия ОК их не останется. Важные комментарии держите над строкой Запрос.Текст = ..., а не внутри литерала.

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

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

Когда что выбирать:

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

Вторую команду вызывают на пустой строке. Внутри уже готового текста запроса она бесполезна: продублирует код выполнения.

Через главное меню

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

Вызов конструктора запросов с клавиатуры

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

  • ⌨️ Контекстное меню с клавиатуры. Поставьте курсор в текст запроса и нажмите Shift+F10 или клавишу контекстного меню (справа от правого Alt на полноразмерных клавиатурах). Дальше стрелками до Конструктор запроса... и Enter.
  • ⌨️ Главное меню. Нажмите Alt, стрелками дойдите до пункта Текст, раскройте его и выберите конструктор.

Внутри самого конструктора тоже многое делается без мыши:

  • Enter на поле в списке доступных таблиц переносит его в выбранные (то же, что двойной щелчок);
  • Tab переключает фокус между списками;
  • Esc закрывает окно без сохранения изменений, ОК — с вставкой текста в модуль.

Перед тем как выйти из конструктора, нажмите кнопку Запрос в нижней части окна. Она покажет итоговый текст. Так проще поймать лишнее соединение или забытую группировку до того, как текст попадёт в модуль.

Конструктор запроса в схеме компоновки данных и динамическом списке

Запросы пишут не только в модулях. Ещё два места, где конструктор вызывается своей кнопкой.

Отчёт на СКД

  1. Откройте отчёт (или внешний отчёт) в Конфигураторе и перейдите к его схеме компоновки данных.
  2. На вкладке наборов данных добавьте набор данных типа «Запрос».
  3. Над полем текста запроса нажмите кнопку Конструктор запроса....

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

Динамический список на форме

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

Запуск конструктора в режиме 1С:Предприятие через консоль запросов

Если доступа к Конфигуратору нет или конфигурацию трогать нельзя, пользуйтесь консолью запросов. Это внешняя обработка, которая выполняет запрос прямо в пользовательском режиме и показывает результат таблицей. У неё есть кнопка вызова конструктора.

Порядок действий в интерфейсе «Такси»:

  1. Получите файл консоли. Его распространяет фирма 1С в составе инструментов разработчика для пользователей ИТС; файл обычно называется QueryConsole.epf. Также консоль поставляется внутри некоторых конфигураций и наборов инструментов.
  2. Запустите базу в режиме 1С:Предприятие.
  3. Откройте главное меню (значок с тремя полосками в левом верхнем углу) и выберите Файл → Открыть.
  4. Укажите файл обработки.
  5. Если конфигурация покажет предупреждение безопасности о внешней обработке, подтвердите открытие — при условии, что файл получен из надёжного источника.
  6. В форме консоли нажмите кнопку конструктора запроса на панели над текстом запроса.
  7. Соберите запрос, нажмите ОК, затем выполните его кнопкой выполнения в консоли.

Что нужно пользователю для такого запуска:

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

Консоль выполняет запрос на живых данных. Запрос по большим регистрам без отбора по периоду может грузить сервер несколько минут и тормозить работу других пользователей. На рабочей базе в разгар дня ставьте отбор по дате и ограничивайте выборку через ПЕРВЫЕ 1000.

Если кнопка конструктора в консоли не реагирует в тонком клиенте, запустите базу в толстом клиенте. В старых версиях платформы конструктор из пользовательского режима работал только там.

Сравнение способов:

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

Окно конструктора: вкладки и настройка под себя

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

ВкладкаЧто на ней делают
Таблицы и поляВыбирают таблицы из дерева базы данных и поля из них
СвязиЗадают соединения между таблицами и их тип
ГруппировкаУказывают поля группировки и ресурсы с агрегатными функциями
УсловияДобавляют отборы и параметры запроса
ДополнительноЗадают ПЕРВЫЕ N, РАЗЛИЧНЫЕ, блокировку, создание временной таблицы
Объединения/ПсевдонимыОбъединяют запросы и переименовывают поля
ПорядокЗадают сортировку
ИтогиНастраивают итоги по группировкам
Пакет запросовУправляют несколькими запросами в одном пакете

Начинать удобнее всего с вкладки «Таблицы и поля»: остальные вкладки заполняются по мере того, как вы выбираете таблицы. Связи между двумя таблицами конструктор часто предлагает сам, если находит подходящие поля-ссылки, но тип соединения всё равно проверьте вручную.

Часть вкладок появляется не всегда: например, «Компоновка данных» есть только при вызове из схемы компоновки.

Несколько приёмов, которые делают работу быстрее:

  • 🔍 Поиск таблицы. Дерево «База данных» длинное. Встаньте в него и начните набирать имя объекта — фокус перейдёт к совпадению.
  • 📐 Размер окна. Окно конструктора растягивается. На широком мониторе разверните его: длинные имена полей перестанут обрезаться. Размер запоминается между вызовами.
  • 🧩 Виртуальные таблицы. У регистров накопления и сведений в дереве есть виртуальные таблицы — «Остатки», «Обороты», «СрезПоследних». Параметры виртуальной таблицы задаются через контекстное меню выбранной таблицы, а не на вкладке «Условия». Условие, поставленное в параметры, работает быстрее.
  • 🗂️ Временные таблицы. На вкладке «Дополнительно» можно указать, что результат помещается во временную таблицу. Следующий запрос пакета выберет её из дерева, как обычную таблицу.
  • 👁️ Текст запроса. Кнопка Запрос внизу окна показывает текст целиком. Его можно скопировать и проверить в консоли.

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

Чаще всего проблема не в платформе, а в состоянии модуля или правах. Выберите свой симптом:

Диагностика: выберите симптом

Отдельно о конфигурации на поддержке. Типовую БП 3.0 или ЗУП 3.1 обычно держат на поддержке без права изменения, чтобы обновления ставились автоматически. Не включайте возможность изменения в рабочей типовой базе только ради того, чтобы открыть конструктор. Для экспериментов используйте внешнюю обработку, для доработок — расширение. Перед изменением настроек поддержки сделайте резервную копию через Администрирование → Выгрузить информационную базу.

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

Меняет ли конструктор запросов данные в базе?
Нет. Конструктор только формирует текст запроса. Данные читаются при выполнении запроса, а запросы языка 1С не изменяют записи.
Можно ли открыть конструктор запроса без Конфигуратора?
Да, через консоль запросов в режиме 1С:Предприятие. Нужно право на открытие внешних обработок.
Почему после конструктора пропали комментарии в запросе?
Конструктор пересобирает текст заново и не сохраняет комментарии внутри литерала. Пишите пояснения над строкой с текстом запроса.
Можно ли передать в конструктор запрос, собранный из частей?
Только по частям: конструктор разбирает один строковый литерал под курсором. Динамически склеенный текст он целиком не увидит.
Чем отличается конструктор запроса от конструктора с обработкой результата?
Первый вставляет только текст. Второй добавляет код выполнения запроса и обхода результата, его удобно вызывать на пустой строке новой процедуры.