Конструктор запросов в 1С:Предприятии: программист, администратор, аналитик и ключевой пользователь

· 10 мин

Содержание

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

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

Где живёт Конструктор запросов и как его открыть

Конструктор — это визуальный редактор текста на языке запросов 1С. Вы выбираете таблицы, поля, связи и условия мышкой, а он собирает текст ВЫБРАТЬ … ИЗ … ГДЕ …. Работает и в обратную сторону: открываете готовый текст — конструктор раскладывает его по вкладкам.

Точки входа зависят от того, кто вы и в каком режиме работаете:

ГдеКто обычноКак открыть
Конфигуратор, модуль объекта или формыпрограммистконтекстное меню в модуле → «Конструктор запроса…»
Конфигуратор, «с обработкой результата»программисттот же пункт меню с вариантом «с обработкой результата»
Схема компоновки данныхпрограммист, продвинутый пользовательнабор данных «Запрос» → кнопка «Конструктор запроса…»
1С:EDTпрограммистредактор модуля или схемы, команда конструктора в контекстном меню
Режим 1С:Предприятиеадминистратор, аналитик, key userвнешняя обработка «Консоль запросов»

💡 Если в модуле установить курсор внутрь строки с текстом запроса и вызвать конструктор, он откроет именно этот запрос. Пустое место в модуле — конструктор создаст новый текст.

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

Программистам 1С: основной рабочий инструмент

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

Что в нём делают каждый день

  • 🧩 Выбор полей и связей. Вкладки «Таблицы и поля», «Связи» — левое, внутреннее, полное соединение без опечаток в именах реквизитов.
  • 📊 Виртуальные таблицы регистров. Остатки, Обороты, ОстаткиИОбороты, СрезПоследних с параметрами периода и условиями прямо в параметрах таблицы.
  • 🗂 Пакеты и временные таблицы. Вкладка «Пакет запросов», помещение результата во временную таблицу, индексирование.
  • ➕ Объединения. «Объединения/Псевдонимы» — сводят продажи и возвраты в одну выборку.
  • 🧮 Группировки и итоги. Агрегатные функции, вкладка «Итоги» для иерархических отчётов.

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

Этот вариант генерирует не только текст запроса, но и код вокруг него: создание объекта Запрос, установку параметров, обход выборки или выгрузку в таблицу значений. Удобно, когда нужно быстро набросать процедуру в обработке. Сгенерированный код потом всё равно стоит причесать под стандарты проекта.

Пример того, что получается после доработки руками:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
|	ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
|	РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
|	ТоварыНаСкладахОстатки.КоличествоОстаток > 0";
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Остаток, "ЧГ=0"));
КонецЦикла;

Имя регистра ТоварыНаСкладах здесь условное: в каждой конфигурации свои регистры. Конструктор как раз и избавляет от необходимости помнить их точные имена — он показывает дерево метаданных.

В составе схемы компоновки данных

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

Администраторам и специалистам поддержки: диагностика данных

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

Типовые задачи поддержки:

  • 🔍 найти документы с битыми ссылками (<Объект не найден>) в реквизитах;
  • 📅 посчитать, сколько документов каждого вида создано за месяц, — понять, что раздувает базу;
  • 👤 найти, кто последним менял объект, если в конфигурации есть такие реквизиты или версионирование;
  • 📦 сверить остатки регистра с отчётом, когда пользователи жалуются на «неправильные цифры»;
  • 🧹 выбрать непроведённые или помеченные на удаление документы перед чисткой.

Запрос в консоли выполняется в рабочей базе. Тяжёлый запрос без отбора по периоду к большому регистру нагрузит сервер и замедлит работу всех пользователей. Начинайте с ВЫБРАТЬ ПЕРВЫЕ 100 и узкого периода, а большие выборки запускайте вне рабочего времени.

Язык запросов 1С умеет только читать данные. Конструктор не сформирует UPDATE или DELETE, и через консоль запросов нельзя «по-быстрому поправить» таблицу. Исправлять найденное придётся документами, обработками или программным кодом — с резервной копией и по регламенту.

Где взять консоль запросов

Консоль запросов — внешняя обработка (файл .epf). Её версию для управляемых форм распространяет фирма 1С среди пользователей с подпиской, есть и сторонние варианты. Внутри консоль вызывает платформенный объект КонструкторЗапроса, поэтому окно конструктора выглядит так же, как в Конфигураторе.

Запустить её можно двумя способами:

  1. Файл → Открыть в режиме 1С:Предприятие — нужен доступ к главному меню и право открывать внешние обработки.
  2. Подключить как дополнительную обработку: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Так её видят только те, кому вы разрешили.

Бизнес-аналитикам и архитекторам данных

Аналитик смотрит на базу 1С как на источник данных. Ему важно понять, где лежат нужные показатели и как таблицы связаны, а не писать прикладной код.

Для него конструктор решает три задачи:

  1. Разведка структуры. Дерево метаданных в конструкторе показывает справочники, документы, регистры и их реквизиты. Видно, какие поля ссылочные и на что ссылаются.
  2. Прототип выборки. Аналитик собирает запрос, проверяет результат в консоли и отдаёт текст программисту или в ТЗ на интеграцию.
  3. Выгрузка для BI. Результат консоли выгружается в табличный документ и дальше в Excel. Для регулярной выгрузки лучше заказать программисту обработку или HTTP-сервис: ручная консоль не годится как конвейер данных.

💡 Прямые SQL-запросы к таблицам СУБД под 1С — плохая идея для аналитики. Имена таблиц и полей там служебные (вида _Document123), структура меняется при обновлении конфигурации, а ограничения прав 1С не действуют. Запрос на языке 1С через конструктор работает с понятными именами объектов и не ломается от реструктуризации.

Архитектору данных конструктор полезен при проектировании отчётов: на прототипе видно, хватает ли индексов виртуальных таблиц и где придётся заводить новый регистр, а где достаточно запроса к документам.

Ключевые пользователи и бухгалтеры с расширенными правами

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

Чаще всего ему хватает не конструктора, а настроек отчёта:

  • в отчёте на СКД открыть «Настройки» и переключить вид на расширенный;
  • добавить поля, группировки, отборы, условное оформление;
  • сохранить свой вариант отчёта и поделиться им с коллегами;
  • в конфигурациях на БСП есть «Универсальный отчёт» — выборка по любому объекту без написания запроса.

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

Что учесть при выдаче доступа

Запрос в консоли выполняется с правами пользователя. Если в базе настроено ограничение доступа на уровне записей (RLS), пользователь увидит только «свои» данные — или получит ошибку, если запрос задевает закрытые таблицы. Это нормально и защищает базу.

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

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

Сравнение возможностей конструктора для разных ролей

РольГде работаетЧто делает с конструкторомТипичный результат
ПрограммистКонфигуратор, EDT, СКДпишет запросы в код, отчёты, обработкимодуль, схема отчёта
Администратор, поддержкаконсоль в режиме Предприятияразовые проверки, диагностикасписок проблемных объектов
Бизнес-аналитикконсоль, иногда СКДразведка структуры, прототипы выбороктекст запроса для ТЗ, выгрузка в Excel
Ключевой пользовательнастройки отчётов, иногда консольотборы, группировки, свои вариантысохранённый вариант отчёта
Рядовой бухгалтерготовые отчётыс конструктором не работаетсформированный отчёт
Вам нужен Конструктор запросов или хватит настроек отчёта?

Технические ограничения и тонкие места конструктора

Конструктор не всесилен. Вот что регулярно удивляет тех, кто начинает с ним работать.

  • ✂️ Пропадают комментарии. Если открыть в конструкторе запрос с комментариями // и нажать «ОК», конструктор пересоберёт текст заново — комментарии и ручное форматирование исчезнут.
  • 🔁 Переписывает текст по-своему. Порядок полей, псевдонимы, расстановка скобок в условиях могут измениться. Для ревью кода это шум в сравнении версий.
  • 🧷 Не всё выражается мышкой. Сложные выражения ВЫБОР КОГДА, вложенные условия и функции часто проще дописать на вкладке «Условия» вручную или прямо в тексте.
  • 🐢 Не следит за скоростью. Конструктор с готовностью соберёт запрос, который обращается к полям через точку на три уровня вглубь. Каждая точка по ссылочному полю — неявное соединение, и на большой базе это тормоза.
  • 📍 Условие в параметрах или в «ГДЕ». Для виртуальной таблицы Остатки отбор по складу в параметрах таблицы работает быстрее, чем то же условие в ГДЕ, потому что отбор применяется до расчёта остатков. Конструктор позволяет и так, и так — выбирать вам.
  • 🚫 Только чтение. Запись в базу запросом невозможна, как уже говорилось выше.

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

Как научиться работать с конструктором запросов

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

Порядок, который работает на практике:

  1. Учебная база. Разворачивайте демо-базу вашей конфигурации или копию рабочей. Запросы на живой базе — не для первых экспериментов.
  2. Простая выборка. Один справочник, несколько полей, отбор по условию. Сравните результат консоли с тем, что видите в списке.
  3. Связь двух таблиц. Например, документ и его табличная часть. Разберитесь, чем левое соединение отличается от внутреннего на реальных данных.
  4. Группировка и агрегаты. Сумма продаж по контрагентам за месяц.
  5. Виртуальные таблицы регистров. Остатки на дату, обороты за период, срез последних цен.
  6. Пакет и временные таблицы. Сначала собрать промежуточный результат, потом использовать его во втором запросе.
  7. Чтение текста. Открывайте сгенерированный конструктором текст и разбирайте его построчно. Цель — уметь написать такой же запрос без конструктора.

Для программистов есть сертификация фирмы 1С по платформе («1С:Специалист», «1С:Профессионал»); язык запросов там — одна из основных тем. Ключевым пользователям достаточно курсов по настройке отчётов на СКД.

Проверьте себя: базовые навыки работы с конструктором
Выполнено: 0 / 7

Частые вопросы о Конструкторе запросов

Можно ли открыть Конструктор запросов в 1С:Бухгалтерии без Конфигуратора?
Да, через внешнюю обработку «Консоль запросов» в режиме 1С:Предприятие. Нужно право на открытие внешних обработок или подключение консоли как дополнительной обработки.
Увидит ли пользователь в консоли данные, к которым у него нет доступа?
Нет. Запрос выполняется с правами пользователя, ограничения на уровне записей действуют. Обойти их можно только привилегированным режимом в коде, а не из консоли.
Работает ли конструктор в веб-клиенте и тонком клиенте?
Консоли для управляемых форм рассчитаны на тонкий клиент. Поведение в веб-клиенте зависит от конкретной обработки, поэтому проверяйте вашу версию консоли.
Чем конструктор в СКД отличается от обычного?
Он такой же, но с вкладкой «Компоновка данных»: там настраивают, какие поля и условия будут доступны пользователю в настройках отчёта.
Почему после конструктора запрос стал выглядеть иначе?
Конструктор не редактирует текст, а собирает его заново из своих вкладок. Поэтому меняется форматирование и пропадают комментарии.