Конструктор запросов в 1С:Предприятии: программист, администратор, аналитик и ключевой пользователь
Содержание
Конструктор запросов в 1С используется в первую очередь программистами: он встроен в Конфигуратор, в 1С:EDT и в конструктор схемы компоновки данных. Вторая группа — администраторы и аналитики. Они открывают тот же конструктор в режиме 1С:Предприятие через внешнюю обработку «Консоль запросов», если у них есть право открывать внешние обработки.
Бухгалтер и другие пользователи обычно работают с результатом чужого запроса: меняют отборы, группировки и поля в настройках отчёта. Сам текст запроса им доступен только через консоль, и выдавать такой доступ стоит с оглядкой.
Где живёт Конструктор запросов и как его открыть
Конструктор — это визуальный редактор текста на языке запросов 1С. Вы выбираете таблицы, поля, связи и условия мышкой, а он собирает текст ВЫБРАТЬ … ИЗ … ГДЕ …. Работает и в обратную сторону: открываете готовый текст — конструктор раскладывает его по вкладкам.
Точки входа зависят от того, кто вы и в каком режиме работаете:
| Где | Кто обычно | Как открыть |
|---|---|---|
| Конфигуратор, модуль объекта или формы | программист | контекстное меню в модуле → «Конструктор запроса…» |
| Конфигуратор, «с обработкой результата» | программист | тот же пункт меню с вариантом «с обработкой результата» |
| Схема компоновки данных | программист, продвинутый пользователь | набор данных «Запрос» → кнопка «Конструктор запроса…» |
| 1С:EDT | программист | редактор модуля или схемы, команда конструктора в контекстном меню |
| Режим 1С:Предприятие | администратор, аналитик, key user | внешняя обработка «Консоль запросов» |
💡 Если в модуле установить курсор внутрь строки с текстом запроса и вызвать конструктор, он откроет именно этот запрос. Пустое место в модуле — конструктор создаст новый текст.
Важное отличие режимов: в Конфигураторе вы пишете запрос в код, он выполнится позже, у пользователя. В консоли запрос выполняется сразу, на живых данных, с правами того, кто его запустил.
Программистам 1С: основной рабочий инструмент
Для разработчика конструктор — не костыль для новичков, а способ быстро получить правильный каркас. Даже опытные программисты набирают руками короткие запросы, а сложные собирают в конструкторе и затем правят текст.
Что в нём делают каждый день
- 🧩 Выбор полей и связей. Вкладки «Таблицы и поля», «Связи» — левое, внутреннее, полное соединение без опечаток в именах реквизитов.
- 📊 Виртуальные таблицы регистров.
Остатки,Обороты,ОстаткиИОбороты,СрезПоследнихс параметрами периода и условиями прямо в параметрах таблицы. - 🗂 Пакеты и временные таблицы. Вкладка «Пакет запросов», помещение результата во временную таблицу, индексирование.
- ➕ Объединения. «Объединения/Псевдонимы» — сводят продажи и возвраты в одну выборку.
- 🧮 Группировки и итоги. Агрегатные функции, вкладка «Итоги» для иерархических отчётов.
Конструктор с обработкой результата
Этот вариант генерирует не только текст запроса, но и код вокруг него: создание объекта Запрос, установку параметров, обход выборки или выгрузку в таблицу значений. Удобно, когда нужно быстро набросать процедуру в обработке. Сгенерированный код потом всё равно стоит причесать под стандарты проекта.
Пример того, что получается после доработки руками:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.КоличествоОстаток > 0";
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Остаток, "ЧГ=0"));
КонецЦикла;
Имя регистра ТоварыНаСкладах здесь условное: в каждой конфигурации свои регистры. Конструктор как раз и избавляет от необходимости помнить их точные имена — он показывает дерево метаданных.
В составе схемы компоновки данных
Большая часть отчётов в типовых конфигурациях построена на СКД. В её наборе данных тот же конструктор, но с дополнительной вкладкой «Компоновка данных»: там задают, какие поля пользователь сможет выбирать и по каким отбирать. Это мост между программистом и бухгалтером: программист пишет запрос, а пользователь потом сам настраивает отчёт.
Администраторам и специалистам поддержки: диагностика данных
Системный администратор 1С редко пишет код, но запросы ему нужны постоянно. Конструктор в консоли запросов позволяет проверить гипотезу за минуту, не открывая Конфигуратор и не выгоняя пользователей.
Типовые задачи поддержки:
- 🔍 найти документы с битыми ссылками (
<Объект не найден>) в реквизитах; - 📅 посчитать, сколько документов каждого вида создано за месяц, — понять, что раздувает базу;
- 👤 найти, кто последним менял объект, если в конфигурации есть такие реквизиты или версионирование;
- 📦 сверить остатки регистра с отчётом, когда пользователи жалуются на «неправильные цифры»;
- 🧹 выбрать непроведённые или помеченные на удаление документы перед чисткой.
Запрос в консоли выполняется в рабочей базе. Тяжёлый запрос без отбора по периоду к большому регистру нагрузит сервер и замедлит работу всех пользователей. Начинайте с ВЫБРАТЬ ПЕРВЫЕ 100 и узкого периода, а большие выборки запускайте вне рабочего времени.
Язык запросов 1С умеет только читать данные. Конструктор не сформирует UPDATE или DELETE, и через консоль запросов нельзя «по-быстрому поправить» таблицу. Исправлять найденное придётся документами, обработками или программным кодом — с резервной копией и по регламенту.
Где взять консоль запросов
Консоль запросов — внешняя обработка (файл .epf). Её версию для управляемых форм распространяет фирма 1С среди пользователей с подпиской, есть и сторонние варианты. Внутри консоль вызывает платформенный объект КонструкторЗапроса, поэтому окно конструктора выглядит так же, как в Конфигураторе.
Запустить её можно двумя способами:
Файл → Открытьв режиме 1С:Предприятие — нужен доступ к главному меню и право открывать внешние обработки.- Подключить как дополнительную обработку:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Так её видят только те, кому вы разрешили.
Бизнес-аналитикам и архитекторам данных
Аналитик смотрит на базу 1С как на источник данных. Ему важно понять, где лежат нужные показатели и как таблицы связаны, а не писать прикладной код.
Для него конструктор решает три задачи:
- Разведка структуры. Дерево метаданных в конструкторе показывает справочники, документы, регистры и их реквизиты. Видно, какие поля ссылочные и на что ссылаются.
- Прототип выборки. Аналитик собирает запрос, проверяет результат в консоли и отдаёт текст программисту или в ТЗ на интеграцию.
- Выгрузка для BI. Результат консоли выгружается в табличный документ и дальше в Excel. Для регулярной выгрузки лучше заказать программисту обработку или HTTP-сервис: ручная консоль не годится как конвейер данных.
💡 Прямые SQL-запросы к таблицам СУБД под 1С — плохая идея для аналитики. Имена таблиц и полей там служебные (вида _Document123), структура меняется при обновлении конфигурации, а ограничения прав 1С не действуют. Запрос на языке 1С через конструктор работает с понятными именами объектов и не ломается от реструктуризации.
Архитектору данных конструктор полезен при проектировании отчётов: на прототипе видно, хватает ли индексов виртуальных таблиц и где придётся заводить новый регистр, а где достаточно запроса к документам.
Ключевые пользователи и бухгалтеры с расширенными правами
Ключевой пользователь (key user) — опытный бухгалтер, экономист или кладовщик, которого компания назначила ответственным за участок учёта. Он лучше программиста знает, какие цифры должны получиться, и часто сам строит выборки.
Чаще всего ему хватает не конструктора, а настроек отчёта:
- в отчёте на СКД открыть «Настройки» и переключить вид на расширенный;
- добавить поля, группировки, отборы, условное оформление;
- сохранить свой вариант отчёта и поделиться им с коллегами;
- в конфигурациях на БСП есть «Универсальный отчёт» — выборка по любому объекту без написания запроса.
Консоль запросов с конструктором ключевому пользователю выдают, когда стандартных отчётов не хватает. Например, найти все поступления от контрагента без счёта-фактуры или сравнить цены закупки по двум складам.
Что учесть при выдаче доступа
Запрос в консоли выполняется с правами пользователя. Если в базе настроено ограничение доступа на уровне записей (RLS), пользователь увидит только «свои» данные — или получит ошибку, если запрос задевает закрытые таблицы. Это нормально и защищает базу.
Опасность в другом: внешняя обработка — это код. Право интерактивно открывать внешние обработки позволяет запустить не только консоль, но и любой другой .epf. Поэтому надёжнее подключить консоль как дополнительную обработку и выдать доступ к ней конкретным людям, чем открывать всем право на внешние файлы.
Не выдавайте пользователям полные права ради одной консоли запросов — для этого достаточно отдельного профиля с доступом к нужной обработке.
Сравнение возможностей конструктора для разных ролей
| Роль | Где работает | Что делает с конструктором | Типичный результат |
|---|---|---|---|
| Программист | Конфигуратор, EDT, СКД | пишет запросы в код, отчёты, обработки | модуль, схема отчёта |
| Администратор, поддержка | консоль в режиме Предприятия | разовые проверки, диагностика | список проблемных объектов |
| Бизнес-аналитик | консоль, иногда СКД | разведка структуры, прототипы выборок | текст запроса для ТЗ, выгрузка в Excel |
| Ключевой пользователь | настройки отчётов, иногда консоль | отборы, группировки, свои варианты | сохранённый вариант отчёта |
| Рядовой бухгалтер | готовые отчёты | с конструктором не работает | сформированный отчёт |
Технические ограничения и тонкие места конструктора
Конструктор не всесилен. Вот что регулярно удивляет тех, кто начинает с ним работать.
- ✂️ Пропадают комментарии. Если открыть в конструкторе запрос с комментариями
//и нажать «ОК», конструктор пересоберёт текст заново — комментарии и ручное форматирование исчезнут. - 🔁 Переписывает текст по-своему. Порядок полей, псевдонимы, расстановка скобок в условиях могут измениться. Для ревью кода это шум в сравнении версий.
- 🧷 Не всё выражается мышкой. Сложные выражения
ВЫБОР КОГДА, вложенные условия и функции часто проще дописать на вкладке «Условия» вручную или прямо в тексте. - 🐢 Не следит за скоростью. Конструктор с готовностью соберёт запрос, который обращается к полям через точку на три уровня вглубь. Каждая точка по ссылочному полю — неявное соединение, и на большой базе это тормоза.
- 📍 Условие в параметрах или в «ГДЕ». Для виртуальной таблицы
Остаткиотбор по складу в параметрах таблицы работает быстрее, чем то же условие вГДЕ, потому что отбор применяется до расчёта остатков. Конструктор позволяет и так, и так — выбирать вам. - 🚫 Только чтение. Запись в базу запросом невозможна, как уже говорилось выше.
Перед тем как открыть ценный запрос в конструкторе, скопируйте исходный текст в буфер или в комментарий за пределами строки. Если результат не понравится, вернуть оригинал будет просто.
Как научиться работать с конструктором запросов
Порог входа разный для разных ролей. Ключевому пользователю хватит пары вечеров, программисту — нескольких недель практики до уверенной работы с пакетами и виртуальными таблицами.
Порядок, который работает на практике:
- Учебная база. Разворачивайте демо-базу вашей конфигурации или копию рабочей. Запросы на живой базе — не для первых экспериментов.
- Простая выборка. Один справочник, несколько полей, отбор по условию. Сравните результат консоли с тем, что видите в списке.
- Связь двух таблиц. Например, документ и его табличная часть. Разберитесь, чем левое соединение отличается от внутреннего на реальных данных.
- Группировка и агрегаты. Сумма продаж по контрагентам за месяц.
- Виртуальные таблицы регистров. Остатки на дату, обороты за период, срез последних цен.
- Пакет и временные таблицы. Сначала собрать промежуточный результат, потом использовать его во втором запросе.
- Чтение текста. Открывайте сгенерированный конструктором текст и разбирайте его построчно. Цель — уметь написать такой же запрос без конструктора.
Для программистов есть сертификация фирмы 1С по платформе («1С:Специалист», «1С:Профессионал»); язык запросов там — одна из основных тем. Ключевым пользователям достаточно курсов по настройке отчётов на СКД.