Конструктор запроса в 1С. Большой гайд

Для чего нужен конструктор запросов

Среда разработки 1С предоставляет разработчикам мощные инструменты для экономии времени, среди которых особое место занимают конструкторы. Эти удобные средства автоматизации позволяют даже пользователям без опыта программирования создавать сложный код, следуя пошаговым инструкциям и отвечая на простые вопросы. Благодаря интуитивно понятному интерфейсу конструкторы облегчают процесс освоения 1С, помогая начинающим разработчикам делать первые шаги без глубокого изучения платформы. В этой статье речь пойдет про один из таких конструкторов – конструктор запросов. Поговорим, зачем он нужен, как им пользоваться, какие есть нюансы, и чем он опасен (да-да, есть и такой момент ;)).

Конструктор запросов в 1С – это удобный инструмент, предназначенный для упрощения работы с языком запросов (SQL-подобным синтаксисом, используемым в 1С). Он помогает разработчикам и пользователям без глубоких знаний программирования быстро формировать сложные выборки данных из базы. Конструктор запросов автоматизирует процесс формирования текста запроса, позволяя избежать необходимости вручную прописывать сложные конструкции. Визуальный интерфейс делает работу с таблицами более наглядной, упрощая выбор нужных объектов и связей между ними. Встроенные механизмы проверки помогают снизить количество синтаксических и логических ошибок, а удобные функции значительно ускоряют процесс работы, особенно при создании аналитических отчетов и сложных выборок. Благодаря этому инструменту работа с данными в 1С становится доступнее и удобнее, что особенно полезно для начинающих пользователей, которым важно быстро получать нужную информацию без глубокого изучения синтаксиса.

Как создать запрос в 1С

Конструктор запроса можно вызвать в любом модуле конфигурации, в режиме конфигуратора. В любом месте кода кликаем правой кнопкой, и в появившемся контекстном меню выбираем «Конструктор запроса». Если кликнуть в пустом месте, платформа предложит создать новый запрос, и если мы согласимся, создастся новый запрос, а если в существующем – он просто откроется для редактирования.

Конструктор запросов не найден текст запроса

Если текст запроса, на котором вы кликнули, содержит ошибки, конструктор не откроется. Отсюда полезный побочный эффект. Конструктор запросов полезен для проверки синтаксиса. Если запрос открылся, значит, синтаксических ошибок нет. Но увы, логические ошибки так не выявить. Кроме того, если запрос не открывается, это не всегда говорит об ошибке — иногда текст запроса может состоять из частей, динамически “склеиваться”, содержать фрагменты для замены текста, или работать с временными таблицами в менеджере временных таблиц. Но это совсем другая история.

Даже если мы создаем запрос в 1С с нуля, не обязательно бежать выбирать таблицы и настраивать связи, группировки и прочее. Мы можем вставить уже готовый текст запроса. Для этого в левом нижнем углу конструктора запроса нажимаем кнопку Запрос, и там откроется отдельное окно.  Нужно отжать кнопку с карандашом, которая называется “Редактировать запрос”. Поле с текстом запроса станет белым, т.е. активным, и в него можно будет вставить текст запроса, например из консоли, или скопированный откуда-то еще. После этого обратно нажимаем кнопку “Редактировать запрос”, поле снова станет неактивным, а весь текст волшебным образом разложится по вкладкам конструктора запросов.
Это окошко полезно и в обратном случае – чтобы получить чистый текст запроса, без вертикальных черточек и кавычек.
Теперь разберем вкладки конструктора запроса

Обзор вкладок конструктора запросов в 1С

Таблицы и поля

Мега важная вкладка! Без нее ничего не работает 🙂 Может не быть всего остального, но хотя бы одно поле в запросе должно быть выбрано.
Забавный пример. Текст “Выбрать 1” будет вполне рабочим текстом запроса.
На вкладке Таблицы и поля мы собираем все необходимое для нашего запроса. В левом поле “База данных” нам доступны все объекты (документы, справочники, регистры и т.п.), а также временные таблицы (о них ниже). Из этого поля мы выбираем нужные таблицы, и они попадают в поле “Таблицы”.

Конструктор запросов таблицы и поля

 Если ничего не выбрать в поля и нажать “ОК”, получим предупреждение “В запросе не выбрано ни одного поля”. Поэтому не торопимся, и из таблиц выбираем все нужные нам поля, которые попадают в поле  “Поля” (вот такой вот каламбур).

Не выбрано ни одного поля

Связи

Данная вкладка возникает только если выбрано больше одной таблицы. Потому как если выбрана только одна таблица, то и связывать нам нечего и не с чем. На этой вкладке построителя запроса мы задаем связи таблицы и условия этих связей. Вот эти самые Левое, Правое, Внутреннее и Полное соединения. Что это и как использовать соединения таблиц в запросе – тема для отдельной большой статьи. А пока идем дальше.

Конструктор запросов Связи

Группировка

На этой вкладке можно настроить агрегатные функции, поля группировки и агрегируемые поля. Объяснил так объяснил, да?
Попробуем проще.

Агрегатные функции в языке запросов 1С — это специальные команды, которые “говорят” платформе, как обработать строки таблицы, чтоб на выходе получить таблицу с теми же полями, но свернутую определенным образом.

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

Суммируемые поля – это те значения, которые нам надо обработать (посчитать сумму, среднее, и т.п.), в разрезе группировок.

Простыми словами, это как если бы мы попросили:

  • “Посчитай сумму всех чисел в разрезе товаров” (это функция СУММА, по группировке Номенклатура),
  • “Найди самое большое значение долга в разрезе контрагента и договора” (это МАКСИМУМ, по группировкам Контрагент и Договор),
  • “Найди самое маленькое значение остатка товара в разрезе склада” (это МИНИМУМ, по группировке Склад),
  • “Сосчитай, сколько всего продаж было за день” (это КОЛИЧЕСТВО, по группировке Дата),
  • “Посчитай средний чек по официантам” (это СРЕДНЕЕ по группировке Сотрудник).
Конструктор запросов Группировки

Условия

В этой вкладке конструктора запроса в 1С мы указываем, какие фильтры применить к входным данным, чтобы получить нужный результат. Например, отфильтровать продажи по контрагентам, документы больше определенной суммы, товары из определенной папки, и т.п.

Конструктор запросов Условия

Дополнительно

Уникальная вкладка, на которой собрано множество разнородных настроек, слабо связанных между собой, и не подходящих для других вкладок конструктора запросов.
Здесь можно наложить дополнительные ограничения на выбираемые строки – выбрать только первые N записей (Ну хорошо, N маловато, пусть будет M 🙂 ), отбросить повторяющиеся записи, выбирать только разрешенные с учетом ограничений прав.
Также можно повлиять на тип запроса – будет ли это обычная выборка данных, создание или удаление временной таблицы.
И здесь же можно установить свойство “Для изменения”.

Объединения/Псевдонимы

У этой вкладки конструктора запросов сразу два предназначения. Здесь можно задать псевдонимы полей – то как поля будут называться на выходе. Например, поле Реализация.Контрагент мы хотим называть Покупатель, а поле Поступление.Контрагент мы хотим называть Поставщик.
Кроме того, на этой вкладке можно создать объединение запросов и “состыковать” поля разных запросов при таком объединении.

Порядок

На вкладке Порядок полный порядок. тут все просто. Мы задаем порядок сортировки по перечисленным полям, причем расположение полей влияет на сортировку. Сперва таблица сортируется по первому полю, затем в пределах одного значения первого поля  – по второму полю, и т.д. Проще показать на примере. Исходная таблица с двумя полями: Контрагент и Номенклатура.
Петров, Авокадо
Иванов, Яблоко
Петров, Яблоко
Иванов, Авокадо

Сортировка Контрагент, Номенклатура
Иванов, Авокадо
Иванов, Яблоко
Петров, Авокадо
Петров, Яблоко

Сортировка Номенклатура, Контрагент
Иванов, Авокадо
Петров, Авокадо
Иванов, Яблоко
Петров, Яблоко

Итоги

Может показаться, что похожа на вкладку Группировка – тут ведь тоже можно указать агрегатные функции. Но это заблуждение. На вкладке Итоги мы можем в построителе запроса настроить древовидную иерархию записей, и для каждого “Узла” дерева вычислить агрегатные функции его вложенных строк. В общем случае, Группировка уменьшает количество строк в выходной таблице, а Итоги – увеличивает (за счет итоговых дополнительных строк, как ни удивительно ;)).
Например, мы хотим узнать, какие группы товара приносят больше всего выручки. Мы можем сделать запрос к регистру продаж, сделать итоги по иерархии номенклатуры, указать итоговое поле сумма, и на выходе получим дерево групп и элементов номенклатуры, и для группы будет выведена сумма продаж по всем товарам, входящим в эту группу.

Построитель

Рудимент, доставшийся нам со времен, когда еще не было системы компоновки данных. Примерно как аппендикс. Вроде нужен, но непонятно зачем.
На самом деле у построителя есть довольно специфичное применение при работе с табличным документом, но об этом как-нибудь в другой раз.

Пакет запросов

На этой вкладке можно увидеть все запросы пакета, добавить или удалить запрос, либо дважды кликнув на нем, перейти к его редактированию. Выборки данных, создание и удаление временных таблиц – все будет видно тут.

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

В схеме компоновки данных и в динамических списках, если указан флажок “Произвольный запрос”, мы также можем воспользоваться конструктором запросов. Но он там слегка модифицированный – нет вкладок Итоги и Построитель, зато добавляются вкладки Компоновка данных и Характеристики. Это вкладки специфичные именно для механизмов компоновки данных, поэтому в этой статье мы их не рассматриваем.

Конструктор запросов в СКД

Отличие конструктора запросов в пользовательском режиме

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

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

А в режиме 1С Предприятия в конструкторе запроса условие можно задать только в виде произвольного. Т.е. текстом.
И это очень мешает при настройке условий, при настройке связей таблиц, в  общем везде где есть поле с условиями. Печально, но не смертельно.

Конструктор запросов в пользовательском режиме

Заключение

Что ж, мы познакомились с построителем запроса в 1С и его вкладками, узнали, что построитель запроса нужен не только для создания запросов с нуля, но и редактирования существующих, а также для проверки корректности текста запроса.
А теперь ложку дегтя. В чем же опасность построителя запросов?

Здесь можно отметить следующие моменты
1. Легко привыкнуть собирать запросы в построителе, и при этом не уметь читать текст запроса. Тогда малейший “шаг влево – вправо” будет приводить к ступору. Особенно когда текст запроса собирается по частям и конструктором не открывается.

2. Конструктор иногда меняет правые соединения на левые. Например правое соединение таблицы Договоры с таблицей Контрагенты он может заменить на левое соединение таблицы Контрагенты с таблицей Договоры (т.е. поменять их местами)

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

На этом знакомство с конструктором запроса в 1С подходит к концу, а вот нюансы использования разных синтаксических конструкций языка запросов в 1С заслуживают множества отдельных статей. Так что заходите еще 🙂

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

14 − 7 =

К НАЧАЛУ