Разработка и Конфигурация · 10 мин
SQL-конструктор запросов как в 1С: как работает и чем его заменить
Как устроен конструктор запросов в 1С, как собирать SQL-подобные запросы без кода, какие есть аналоги и ограничения. Пошаговые инструкции и примеры.
Конструктор запросов в 1С — это визуальный инструмент, который позволяет собрать запрос к базе данных без ручного написания текста на встроенном языке запросов. Пользователь выбирает таблицы, поля, условия и группировки мышью, а платформа сама формирует синтаксически корректный текст. Такой подход снижает порог входа: даже специалист без глубокого знания синтаксиса может получить нужную выборку данных.
При этом язык запросов 1С лишь напоминает классический SQL: он похож по структуре (SELECT, WHERE, JOIN, GROUP BY), но работает не с физическими таблицами СУБД, а с объектами метаданных — справочниками, документами, регистрами. Платформа сама транслирует запрос в SQL для конкретной СУБД (MS SQL Server, PostgreSQL, Oracle, IBM Db2), поэтому прямой доступ к «сырым» таблицам не требуется и не рекомендуется.
Многие разработчики и аналитики, работая вне 1С, ищут похожие визуальные конструкторы SQL-запросов — чтобы так же собирать выборки мышью. В этой статье разберём, как устроен штатный конструктор 1С, как им пользоваться пошагово, какие существуют аналоги для обычных баз данных и какие ограничения стоит учитывать.
Как устроен конструктор запросов в 1С
Конструктор вызывается из модуля объекта, формы или консоли запросов и представляет собой диалог с несколькими вкладками. На вкладке «Таблицы и поля» выбираются источники данных и нужные реквизиты. На вкладке «Связи» настраиваются соединения таблиц (внутренние, левые, правые). Далее идут вкладки «Условия», «Порядок», «Группировка», «Итоги» и «Объединения/Псевдонимы».
Ключевая особенность: конструктор оперирует именами объектов конфигурации, а не физическими таблицами СУБД. Например, вы выбираете «Документ.РеализацияТоваровУслуг», а платформа сама определяет, в каких таблицах базы хранятся эти данные. Это защищает от изменений структуры хранения при обновлении платформы.
Результат работы конструктора — текст запроса на встроенном языке, который вставляется в модуль. Далее запрос выполняется программно через объект «Запрос» с установкой параметров и обходом результата.
Пошаговая сборка запроса в конструкторе 1С
Рассмотрим типовую задачу: получить список номенклатуры с остатками по складу. Откройте модуль, где нужен запрос, поставьте курсор в место вставки текста и вызовите конструктор через контекстное меню или из консоли запросов.
- 1Откройте конструктор запроса из модуля или консоли запросов
- 2На вкладке «Таблицы и поля» добавьте источник, например РегистрНакопления.ТоварыНаСкладах.Остатки
- 3Перенесите нужные поля: Номенклатура, Склад, КоличествоОстаток
- 4На вкладке «Условия» задайте отбор, например Склад = &Склад
- 5На вкладке «Порядок» укажите сортировку, например по наименованию номенклатуры
- 6Нажмите «ОК» и проверьте сформированный текст запроса
- 7Выполните запрос в консоли с тестовыми параметрами и сверьте результат с данными в базе
После вставки текста в модуль заполните параметры программно. Пример обращения к запросу в коде:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Склад", ВыбранныйСклад);
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Результат = Запрос.Выполнить().Выгрузить();
Признак правильно собранного запроса — он выполняется без ошибок синтаксиса, возвращает ожидаемое число строк, а итоги сходятся с данными стандартных отчётов по тем же регистрам.
Виртуальные таблицы и параметры: что учитывать
Регистры в 1С имеют виртуальные таблицы: «Остатки», «Обороты», «СрезПервых», «СрезПоследних». Конструктор позволяет задать их параметры визуально — период, условия отбора. Это критично для производительности: отбор, заданный в параметрах виртуальной таблицы, выполняется на уровне СУБД до соединения, а отбор в секции «Условия» — уже после выборки.
Частая ошибка — фильтровать по измерениям регистра в секции ГДЕ вместо параметров виртуальной таблицы. На больших объёмах данных это даёт кратное замедление. Всегда переносите условия по измерениям в параметры виртуальной таблицы через кнопку настройки в конструкторе.
Визуальные конструкторы SQL вне 1С
Если нужен похожий инструмент для обычных реляционных баз, варианты делятся на три группы. Первая — построители запросов в составе IDE и менеджеров БД: графический Query Designer в SQL Server Management Studio, визуальный редактор в DBeaver, построитель в pgAdmin. Они позволяют перетаскивать таблицы, связывать их линиями и отмечать поля галочками.
Вторая группа — BI-инструменты (Power BI, Tableau, различные web-построители отчётов), где пользователь вообще не видит SQL: система сама генерирует запрос по выбранной модели данных. Третья группа — библиотеки и фреймворки для разработчиков (например, программные query builder'ы в ORM), где запрос собирается вызовами методов в коде.
Сравнение вариантов
Работает с объектами метаданных, не требует знания схемы СУБД. Ограничение — только внутри платформы 1С.
Подходит для прямой работы с таблицами MS SQL, PostgreSQL и других СУБД. Требует понимания физической схемы данных.
Дают визуальную сборку для аналитиков без SQL. Ограничение — нужна предварительно настроенная модель данных.
Гибкость и контроль в коде приложения. Требуют навыков программирования, визуального режима нет.
При выборе исходите из задачи. Для разовой аналитической выборки достаточно визуального построителя в менеджере БД. Для регулярных отчётов бизнес-пользователей разумнее настроить BI-модель. Для прикладного кода — программный построитель запросов.
Консоль запросов и отладка
Консоль запросов — внешняя обработка (есть типовые варианты и наработки сообщества), которая объединяет конструктор, редактор текста и просмотр результата. Это основной инструмент отладки: вы пишете или собираете запрос, подставляете параметры и сразу видите выборку.
Практический порядок отладки: сначала упростите запрос до одной таблицы и убедитесь, что она возвращает данные. Затем добавляйте соединения по одному, проверяя число строк после каждого шага. Резкое «размножение» строк — признак соединения без достаточного условия (декартово произведение).
Как проверить результат
Соответствует ожидаемому количеству записей по смыслу задачи
Строк в разы больше — вероятно, соединение без условия
Сходятся со стандартным отчётом по тому же регистру
Расхождения — проверьте период, отборы и виртуальные таблицы
Запрос отрабатывает за приемлемое время на тестовых данных
Многоминутное выполнение — перенесите отборы в параметры виртуальных таблиц
Типичные ошибки и ограничения
Конструктор не избавляет от понимания логики данных. Он гарантирует синтаксическую корректность, но не смысловую: можно собрать формально правильный запрос, который вернёт неверные данные из-за неправильного типа соединения или пропущенного отбора по периоду.
Отдельное ограничение касается переносимости: текст запроса 1С нельзя выполнить напрямую в СУБД, а SQL из внешнего конструктора нельзя без переработки вставить в модуль 1С — различаются имена сущностей, функции и правила работы с параметрами.
Что важно запомнить
Конструктор запросов 1С собирает запросы к объектам метаданных визуально и защищает от синтаксических ошибок, но не от логических. Отборы по измерениям задавайте в параметрах виртуальных таблиц, результат всегда сверяйте со стандартными отчётами, а для работы вне 1С используйте визуальные построители в менеджерах БД или BI-инструментах.
Частые вопросы
Можно ли выполнить запрос 1С напрямую в SQL Server Management Studio?
Нет. Текст запроса 1С адресован объектам метаданных, а не физическим таблицам. Платформа транслирует его в SQL сама. Чтобы увидеть фактический SQL, используйте трассировку на стороне СУБД или технологический журнал, но выполнять его как замену запроса 1С не следует.
Чем консоль запросов отличается от конструктора?
Конструктор — визуальный диалог сборки текста запроса. Консоль запросов — более широкий инструмент: она включает конструктор, редактор текста, задание параметров и просмотр результата выполнения. Для отладки удобнее консоль, для быстрой сборки с нуля — конструктор.
Обязательно ли знать синтаксис языка запросов, если есть конструктор?
Базовое понимание нужно. Конструктор не покрывает всех сценариев: сложные вложенные запросы, тонкая настройка итогов, ручная оптимизация часто требуют правки текста руками. Кроме того, без понимания логики соединений легко собрать формально верный, но смыслово неправильный запрос.
Какой визуальный конструктор SQL выбрать для PostgreSQL вне 1С?
Подойдёт визуальный построитель в DBeaver или pgAdmin: они позволяют добавлять таблицы на диаграмму, связывать их и отмечать поля, генерируя текст SQL. Для бизнес-пользователей без знания схемы данных лучше настроить модель в BI-инструменте, где запрос строится автоматически.
Безопасно ли обращаться к таблицам базы 1С напрямую через SQL?
Чтение через прямые запросы технически возможно, но не рекомендуется: структура таблиц не документирована и может меняться при обновлениях. Запись в таблицы в обход платформы недопустима — она нарушает целостность данных и условия поддержки. Используйте штатные механизмы: запросы, COM-соединение, веб-сервисы.
Почему запрос, собранный в конструкторе, возвращает задвоенные строки?
Чаще всего причина — соединение таблиц по полю, которое не уникально в одной из них, либо соединение без достаточного условия. Проверьте вкладку «Связи»: добавьте недостающие условия связи, а если дубли нужны осознанно, убедитесь, что итоговые суммы рассчитываются с учётом детализации.