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

Обновлено: 08.05.2024

Работа построителя отчета и построителя запроса с произвольным источником данных

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

В качестве источника данных для вывода отчета могут быть использованы:

  • ТаблицаЗначений,
  • РезультатЗапроса,
  • ОбластьЯчеекТабличногоДокумента,
  • Табличная часть,
  • РегистрНакопленияНаборЗаписей ,
  • РегистрСведенийНаборЗаписей,
  • РегистрБухгалтерииНаборЗаписей,
  • РегистрРасчетаНаборЗаписей.

Для того чтобы построитель отчета выводил отчет для произвольного источника данных, достаточно установить описание источника данных в свойство построителя ИсточникДанных . Свойство построителя отчета ИсточникДанных может содержать значение типа ОписаниеИсточникаДанных . Объект ОписаниеИсточникаДанных содержит сам источник данных, а также содержит описание колонок источника данных. Каждое описание колонки источника данных содержит:

  • Имя - содержит имя колонки в источнике данных,
  • ПутьКДанным - содержит описание зависимости колонок друг от друга. Колонка, чей путь к данным получен через точку от пути к данным другого поля, считается реквизитом другой колонки. Если поле содержит через точку слово Представление, то данное поле считается представлением для колонки, от пути к данным которого получается представление. Примеры. Если колонка "Номенклатура" имеет путь к данным "Номенклатура", а колонка "Код" имеет путь к данным "Номенклатура.Код", то данная колонка будет считаться реквизитом колонки "Номенклатура". Колонка с путем к данным "Номенклатура.Представление" будет считаться представлением для колонки "Номенклатура",
  • Поле - признак того, что данная колонка может быть использована в качестве поля отчета,
  • Порядок - признак того, что по данной колонке возможно упорядочивание,
  • Отбор - признак того, что на данную колонку возможно накладывать отбор,
  • Измерение - признак того, что данная колонка может быть использовано как группировка отчета,
  • Итог - строка, содержащая выражение для расчета итога. Для построителя отчета выражение данной строки соответствует выражению для вычисления итога, используемому в языке запросов,

При установке источника данных объекту ОписаниеИсточникаДанных , описания колонок создаются и заполняются автоматически.

Объект ОписаниеИсточникаДанных имеет конструктор, в качестве параметра которого может быть передан источник данных, для которого создается описание, при этом свойство ИсточникДанных будет заполнено переданным источником данных, описания колонок будут заполнены информацией о колонках из источника данных.

Пример установки источника данных построителю отчета:

ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);

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

Работа построителя запроса с произвольным источником данных идентична работе с произвольным источником построителя отчета.

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

Конструктор или построитель запросов – это инструмент, позволяющий сформировать текст запроса при помощи интуитивно понятного интерфейса. Не обладая специализированными знаниями в области правильного синтаксиса запросов, пользователь может получить полностью корректный запрос к базе 1С.

Запросы применяются для быстрого получения необходимых данных из объектов информационной базы 1С, а конструктор запроса в 1С помогает описать правила получения этих данных технически и синтаксически правильно.

2. Как работает конструктор запросов в 1С?

Единственным обязательным элементом любого запроса к базе данных является предложение «ВЫБРАТЬ». Именно в нем перечисляются необходимые поля выборки, которые необходимо получить в составе результата запроса.

Язык запросов требует следования определенным правилам написания, чтобы текст запроса был правильно интерпретирован. С консолью запросов эти правила знать совершенно необязательно.

Пример 1. Создание запроса при помощи конструктора

Допустим, необходимо получить ссылки на все элементы справочника валюты и наименования этих элементов. При использовании конструктора запросов нужно выполнить следующие простые действия:

1. Раскрыть справочники, найти справочник «Валюты», перетащить в центральную панель конструктора (или дважды щелкнуть по нему). В результате выбранный справочник разместится в центральной панели.

Перемещение справочника в построителе запросов

Перемещение справочника в построителе запросов

2. Раскрыть выбранный справочник и так же перетащить необходимые поля (Ссылка «Наименование») в правую панель окна конструктора запросов. В результате в правой панели разместятся эти два выбранных реквизита справочника.

справочник в построителе запросов

Реквизиты справочника в окне конструктора запросов

Жмем «ОК» и вуаля – текст запроса готов! Построитель запросов сделает все остальное. В результате будет получен правильно написанный текст запроса, который можно использовать для получения данных, например, в консоли запросов или для создания отчета.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты"

* Символ «|» означает перенос строки текста, заключенного в кавычки, т.е. информирует о том, что на переводе строки этот текст не прерывается, а имеет продолжение.

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

Пример 2. Добавление в запрос условий

Допустим, необходимо получить все валюты за исключением какой-то одной. Для этого в конструкторе необходимо выполнить следующие действия для добавления условий в конструктор запросов:

1. Перейти на вкладку «Условия». В левой панели окна конструктора запросов будут размещены объекты, участвующие в выборке.

Вкладка условия построителя запросов

Вкладка условия построителя запросов

2. Раскрыть выбранный справочник – перетащить в правую панель реквизит «Ссылка» (или два раза щелкнуть по этому реквизиту). В результате в правой панели будет размещен выбранный реквизит, автоматически указаны вид сравнения «=» и имя параметра.

Окно конструктора запросов с выбранным реквизитом

Окно конструктора запросов с выбранным реквизитом

3. Так как по нашему условию требуется выбрать все валюты за исключением одной, мы должны поменять вид сравнения на «<>».

Окно конструктора запросов

Замена вида сравнения в построителе запросов

4. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты

Здесь важно, что добавилось предложение «ГДЕ», в котором указано условие, по которому необходимо отобрать элементы справочника «Валюты». Указав в качестве значения параметра ссылку на валюту, которая в результате не требуется, можно будет получить все остальные валюты. Так происходит добавление условий в конструктор запросов.

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

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

1. Убираем из выборки поле «Наименование», добавляем в выборку поле «СпособУстановкиКурса».

Добавления поля в окно конструктора запросов

Добавления поля в окно конструктора запросов

2. Переходим на вкладку «Группировка», перетаскиваем «Валюты.СпособУстановкиКурса» в правую верхнюю панель, а «Валюты.Ссылка» в правую нижнюю панель. Конструктор самостоятельно укажет агрегатную функцию в запросе «Количество различных».

Агрегатная функция в запросе «Количество различных»

3. Так как мы добавили способ установки курса после того, как ссылка уже фигурировала в выборке, после нажатия «Ок» порядок следования полей будет таким: «Ссылка» – «СпособУстановкиКурса». Нам удобнее, чтобы группировочное поле (наш показатель) располагалось первым по очереди, а его значение вторым. Поэтому, переходим на вкладку «Объединения/Псевдонимы».

Объединения/Псевдонимы в построителе запросов

Вкладка «Объединения/Псевдонимы» в построителе запросов

4. Синей стрелкой перемещаем поле «Ссылка» вниз под поле «СпособУстановкиКурса». А имена полей меняем на те, которые будут более наглядными: «СпособУстановкиКурса» оставляем (имя показателя соответствует тому, что мы в итоге хотим получить). «Ссылка» меняем на «Количество».

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

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

* Жирный шрифт означает, что для поля задан псевдоним.

5. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

· Порядок следования полей стал такой, какой нам нужен. Сначала идет показатель, затем его значение.

· Второе поле получило псевдоним «Количество» – это имя следует за «КАК».

· В тексте запроса появилась агрегатная функция «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ»

· В тексте запроса появилось предложение «СГРУППИРОВАТЬ ПО» для выбранного нами поля.

Пример 4. Добавление нестандартного условия через конструктор запросов.

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

1. Из созданного ранее текста запроса в поле конструктора запросов копируем агрегатную функцию в запросе. Полностью всю конструкцию до псевдонима: «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)».

2. Переходим в конструкторе на вкладку «Условия».

3. Нажимаем «+» (Добавить) в правой панели, у добавленного поля устанавливаем флаг в колонке «Произвольное», активируем содержимое поля «Условие» двойным щелчком, вставляем скопированный текст «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» и дополняем его следующим текстом: «=1».

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

«КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» в построителе запроса

4. Нажимаем «Ок» и смотрим, что получилось.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) = 1"

В запросе появилось еще одно предложение «ИМЕЮЩИЕ». Смысл его заключается в том, что условие на выборку накладывается уже после выполнения агрегатной функции. Что нам и требовалось.

3. Итоги

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

Специалист компании «Кодерлайн»

Вас могут заинтересовать следующие статьи:

Конструктор или построитель запросов – это инструмент, позволяющий сформировать текст запроса при помощи интуитивно понятного интерфейса. Не обладая специализированными знаниями в области правильного синтаксиса запросов, пользователь может получить полностью корректный запрос к базе 1С.

Запросы применяются для быстрого получения необходимых данных из объектов информационной базы 1С, а конструктор запроса в 1С помогает описать правила получения этих данных технически и синтаксически правильно.

2. Как работает конструктор запросов в 1С?

Единственным обязательным элементом любого запроса к базе данных является предложение «ВЫБРАТЬ». Именно в нем перечисляются необходимые поля выборки, которые необходимо получить в составе результата запроса.

Язык запросов требует следования определенным правилам написания, чтобы текст запроса был правильно интерпретирован. С консолью запросов эти правила знать совершенно необязательно.

Пример 1. Создание запроса при помощи конструктора

Допустим, необходимо получить ссылки на все элементы справочника валюты и наименования этих элементов. При использовании конструктора запросов нужно выполнить следующие простые действия:

1. Раскрыть справочники, найти справочник «Валюты», перетащить в центральную панель конструктора (или дважды щелкнуть по нему). В результате выбранный справочник разместится в центральной панели.

Перемещение справочника в построителе запросов

Перемещение справочника в построителе запросов

2. Раскрыть выбранный справочник и так же перетащить необходимые поля (Ссылка «Наименование») в правую панель окна конструктора запросов. В результате в правой панели разместятся эти два выбранных реквизита справочника.

справочник в построителе запросов

Реквизиты справочника в окне конструктора запросов

Жмем «ОК» и вуаля – текст запроса готов! Построитель запросов сделает все остальное. В результате будет получен правильно написанный текст запроса, который можно использовать для получения данных, например, в консоли запросов или для создания отчета.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты"

* Символ «|» означает перенос строки текста, заключенного в кавычки, т.е. информирует о том, что на переводе строки этот текст не прерывается, а имеет продолжение.

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

Пример 2. Добавление в запрос условий

Допустим, необходимо получить все валюты за исключением какой-то одной. Для этого в конструкторе необходимо выполнить следующие действия для добавления условий в конструктор запросов:

1. Перейти на вкладку «Условия». В левой панели окна конструктора запросов будут размещены объекты, участвующие в выборке.

Вкладка условия построителя запросов

Вкладка условия построителя запросов

2. Раскрыть выбранный справочник – перетащить в правую панель реквизит «Ссылка» (или два раза щелкнуть по этому реквизиту). В результате в правой панели будет размещен выбранный реквизит, автоматически указаны вид сравнения «=» и имя параметра.

Окно конструктора запросов с выбранным реквизитом

Окно конструктора запросов с выбранным реквизитом

3. Так как по нашему условию требуется выбрать все валюты за исключением одной, мы должны поменять вид сравнения на «<>».

Окно конструктора запросов

Замена вида сравнения в построителе запросов

4. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты

Здесь важно, что добавилось предложение «ГДЕ», в котором указано условие, по которому необходимо отобрать элементы справочника «Валюты». Указав в качестве значения параметра ссылку на валюту, которая в результате не требуется, можно будет получить все остальные валюты. Так происходит добавление условий в конструктор запросов.

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

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

1. Убираем из выборки поле «Наименование», добавляем в выборку поле «СпособУстановкиКурса».

Добавления поля в окно конструктора запросов

Добавления поля в окно конструктора запросов

2. Переходим на вкладку «Группировка», перетаскиваем «Валюты.СпособУстановкиКурса» в правую верхнюю панель, а «Валюты.Ссылка» в правую нижнюю панель. Конструктор самостоятельно укажет агрегатную функцию в запросе «Количество различных».

Агрегатная функция в запросе «Количество различных»

3. Так как мы добавили способ установки курса после того, как ссылка уже фигурировала в выборке, после нажатия «Ок» порядок следования полей будет таким: «Ссылка» – «СпособУстановкиКурса». Нам удобнее, чтобы группировочное поле (наш показатель) располагалось первым по очереди, а его значение вторым. Поэтому, переходим на вкладку «Объединения/Псевдонимы».

Объединения/Псевдонимы в построителе запросов

Вкладка «Объединения/Псевдонимы» в построителе запросов

4. Синей стрелкой перемещаем поле «Ссылка» вниз под поле «СпособУстановкиКурса». А имена полей меняем на те, которые будут более наглядными: «СпособУстановкиКурса» оставляем (имя показателя соответствует тому, что мы в итоге хотим получить). «Ссылка» меняем на «Количество».

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

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

* Жирный шрифт означает, что для поля задан псевдоним.

5. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

· Порядок следования полей стал такой, какой нам нужен. Сначала идет показатель, затем его значение.

· Второе поле получило псевдоним «Количество» – это имя следует за «КАК».

· В тексте запроса появилась агрегатная функция «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ»

· В тексте запроса появилось предложение «СГРУППИРОВАТЬ ПО» для выбранного нами поля.

Пример 4. Добавление нестандартного условия через конструктор запросов.

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

1. Из созданного ранее текста запроса в поле конструктора запросов копируем агрегатную функцию в запросе. Полностью всю конструкцию до псевдонима: «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)».

2. Переходим в конструкторе на вкладку «Условия».

3. Нажимаем «+» (Добавить) в правой панели, у добавленного поля устанавливаем флаг в колонке «Произвольное», активируем содержимое поля «Условие» двойным щелчком, вставляем скопированный текст «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» и дополняем его следующим текстом: «=1».

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

«КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» в построителе запроса

4. Нажимаем «Ок» и смотрим, что получилось.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) = 1"

В запросе появилось еще одно предложение «ИМЕЮЩИЕ». Смысл его заключается в том, что условие на выборку накладывается уже после выполнения агрегатной функции. Что нам и требовалось.

3. Итоги

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

Специалист компании «Кодерлайн»

Вас могут заинтересовать следующие статьи:

Конструктор или построитель запросов – это инструмент, позволяющий сформировать текст запроса при помощи интуитивно понятного интерфейса. Не обладая специализированными знаниями в области правильного синтаксиса запросов, пользователь может получить полностью корректный запрос к базе 1С.

Запросы применяются для быстрого получения необходимых данных из объектов информационной базы 1С, а конструктор запроса в 1С помогает описать правила получения этих данных технически и синтаксически правильно.

2. Как работает конструктор запросов в 1С?

Единственным обязательным элементом любого запроса к базе данных является предложение «ВЫБРАТЬ». Именно в нем перечисляются необходимые поля выборки, которые необходимо получить в составе результата запроса.

Язык запросов требует следования определенным правилам написания, чтобы текст запроса был правильно интерпретирован. С консолью запросов эти правила знать совершенно необязательно.

Пример 1. Создание запроса при помощи конструктора

Допустим, необходимо получить ссылки на все элементы справочника валюты и наименования этих элементов. При использовании конструктора запросов нужно выполнить следующие простые действия:

1. Раскрыть справочники, найти справочник «Валюты», перетащить в центральную панель конструктора (или дважды щелкнуть по нему). В результате выбранный справочник разместится в центральной панели.

Перемещение справочника в построителе запросов

Перемещение справочника в построителе запросов

2. Раскрыть выбранный справочник и так же перетащить необходимые поля (Ссылка «Наименование») в правую панель окна конструктора запросов. В результате в правой панели разместятся эти два выбранных реквизита справочника.

справочник в построителе запросов

Реквизиты справочника в окне конструктора запросов

Жмем «ОК» и вуаля – текст запроса готов! Построитель запросов сделает все остальное. В результате будет получен правильно написанный текст запроса, который можно использовать для получения данных, например, в консоли запросов или для создания отчета.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты"

* Символ «|» означает перенос строки текста, заключенного в кавычки, т.е. информирует о том, что на переводе строки этот текст не прерывается, а имеет продолжение.

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

Пример 2. Добавление в запрос условий

Допустим, необходимо получить все валюты за исключением какой-то одной. Для этого в конструкторе необходимо выполнить следующие действия для добавления условий в конструктор запросов:

1. Перейти на вкладку «Условия». В левой панели окна конструктора запросов будут размещены объекты, участвующие в выборке.

Вкладка условия построителя запросов

Вкладка условия построителя запросов

2. Раскрыть выбранный справочник – перетащить в правую панель реквизит «Ссылка» (или два раза щелкнуть по этому реквизиту). В результате в правой панели будет размещен выбранный реквизит, автоматически указаны вид сравнения «=» и имя параметра.

Окно конструктора запросов с выбранным реквизитом

Окно конструктора запросов с выбранным реквизитом

3. Так как по нашему условию требуется выбрать все валюты за исключением одной, мы должны поменять вид сравнения на «<>».

Окно конструктора запросов

Замена вида сравнения в построителе запросов

4. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.Ссылка КАК Ссылка,

| Валюты.Наименование КАК Наименование

| Справочник.Валюты КАК Валюты

Здесь важно, что добавилось предложение «ГДЕ», в котором указано условие, по которому необходимо отобрать элементы справочника «Валюты». Указав в качестве значения параметра ссылку на валюту, которая в результате не требуется, можно будет получить все остальные валюты. Так происходит добавление условий в конструктор запросов.

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

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

1. Убираем из выборки поле «Наименование», добавляем в выборку поле «СпособУстановкиКурса».

Добавления поля в окно конструктора запросов

Добавления поля в окно конструктора запросов

2. Переходим на вкладку «Группировка», перетаскиваем «Валюты.СпособУстановкиКурса» в правую верхнюю панель, а «Валюты.Ссылка» в правую нижнюю панель. Конструктор самостоятельно укажет агрегатную функцию в запросе «Количество различных».

Агрегатная функция в запросе «Количество различных»

3. Так как мы добавили способ установки курса после того, как ссылка уже фигурировала в выборке, после нажатия «Ок» порядок следования полей будет таким: «Ссылка» – «СпособУстановкиКурса». Нам удобнее, чтобы группировочное поле (наш показатель) располагалось первым по очереди, а его значение вторым. Поэтому, переходим на вкладку «Объединения/Псевдонимы».

Объединения/Псевдонимы в построителе запросов

Вкладка «Объединения/Псевдонимы» в построителе запросов

4. Синей стрелкой перемещаем поле «Ссылка» вниз под поле «СпособУстановкиКурса». А имена полей меняем на те, которые будут более наглядными: «СпособУстановкиКурса» оставляем (имя показателя соответствует тому, что мы в итоге хотим получить). «Ссылка» меняем на «Количество».

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

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

* Жирный шрифт означает, что для поля задан псевдоним.

5. Нажимаем «Ок» – получаем готовый тест запроса.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

· Порядок следования полей стал такой, какой нам нужен. Сначала идет показатель, затем его значение.

· Второе поле получило псевдоним «Количество» – это имя следует за «КАК».

· В тексте запроса появилась агрегатная функция «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ»

· В тексте запроса появилось предложение «СГРУППИРОВАТЬ ПО» для выбранного нами поля.

Пример 4. Добавление нестандартного условия через конструктор запросов.

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

1. Из созданного ранее текста запроса в поле конструктора запросов копируем агрегатную функцию в запросе. Полностью всю конструкцию до псевдонима: «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)».

2. Переходим в конструкторе на вкладку «Условия».

3. Нажимаем «+» (Добавить) в правой панели, у добавленного поля устанавливаем флаг в колонке «Произвольное», активируем содержимое поля «Условие» двойным щелчком, вставляем скопированный текст «КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» и дополняем его следующим текстом: «=1».

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

«КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка)» в построителе запроса

4. Нажимаем «Ок» и смотрим, что получилось.

| Валюты.СпособУстановкиКурса КАК СпособУстановкиКурса,

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) КАК Количество

| Справочник.Валюты КАК Валюты

| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюты.Ссылка) = 1"

В запросе появилось еще одно предложение «ИМЕЮЩИЕ». Смысл его заключается в том, что условие на выборку накладывается уже после выполнения агрегатной функции. Что нам и требовалось.

3. Итоги

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

Специалист компании «Кодерлайн»

Вас могут заинтересовать следующие статьи:

Анна Викулина

Одной из потенциальных проблем при изучении 1С является тот факт, что встроенный язык 1С и язык запросов отличаются друг от друга. Новичкам приходится не только запоминать всевозможные операторы, но и понимать, где их применять. Но в платформу 1С 8.3 встроен мощный инструмент, облегчающий работу с запросами на языке 1С – конструктор запросов. Не используя его, вы напрасно усложняете себе работу.

Применение конструктора запросов 1С

Перед тем как разбирать функции этого механизма, нам нужно понять, как и где можно открыть конструктор запросов 1С 8.3. Воспользоваться им вы сможете в конфигураторе или специальных обработках – консолях запросов, которые, являясь по сути инструментами доработки 1С 8, позволяют сохранить конфигурацию на поддержке. Чтобы открыть конструктор, необходимо щелкнуть правой кнопкой мыши в модулях или на поле для написания кода и выбрать нужный пункт.

Рис.1 Применение конструктора запросов 1С

Рис.1 Применение конструктора запросов 1С

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

Рис.2 Применение конструктора запросов 1С

Рис.2 Применение конструктора запросов 1С

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

Таблицы и поля. Начальная вкладка, отражающая информацию о задействованных в запросе таблицах и выбранных полях. Слева отображается общее дерево конфигурации, в центре – источники данных для выборки, справа – конечные поля. Здесь закладывается основа запроса из секций «ВЫБРАТЬ … ИЗ …».

Рис.3 Таблицы и поля

Рис.3 Таблицы и поля

Связи. В данном разделе указываются соединения выбранных таблиц и поля, по которым они соединяются. Зачастую 1С самостоятельно предлагает программистам свои варианты связей на основе схожих типов данных, но в большинстве случаев лучше их изменить. В тексте запроса данные с этой вкладки преобразуются в конструкцию «СОЕДИНЕНИЕ».

Группировка. Здесь устанавливается группировка строк по конкретным полям и простейшие арифметические операции с числовыми реквизитами. В тексте запроса эти данные можно найти в разделе «СГРУППИРОВАТЬ ПО».

Рис.5 Группировка

Рис.5 Группировка

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

Дополнительно. Вкладка, содержащая различные стандартные ограничения или возможности выборки:

  • Первые – позволяет выбрать определенное количество записей. В текстовом представлении запроса определяется оператором «ПЕРВЫЕ N»;
  • Без повторяющихся – исключает попадание в конечную выборку повторяющихся строк. В тексте отражается, как «РАЗЛИЧНЫЕ»;
  • Разрешенные – включает учет настроенных прав доступа при выполнении запроса (оператор «РАЗРЕШЕННЫЕ»);
  • Определение типа запроса из трех вариантов – обыкновенной выборки, создания или уничтожения временной таблицы;
  • Блокировка данных. Предназначена для автоматического режима блокировок, чтобы сохранить целостность данных на время от чтения до записи.

Рис.7 Дополнительно

Рис.7 Дополнительно

Объединения/Псевдонимы. Слева представлен список запросов, а справа вы можете изменить имя реквизита или объединить данные из нескольких запросов. Эти настройки можно найти в текстовом виде по операторам «ОБЪЕДИНИТЬ» и «КАК».

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

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

Порядок. На данной вкладке задается сортировка итоговых записей. За нее отвечает оператор «УПОРЯДОЧИТЬ ПО».

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

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

Вышеперечисленные вкладки конструктора позволяют настроить запрос на выборку данных практически для любой задачи. Однако в некоторых случаях нам пригодятся дополнительные функции конструктора запросов. Самая распространенная из них – возможность создания пакетных запросов. Для этого нам пригодится последняя вкладка в конструкторе запросов.

Рис.10 Дополнительные возможности конструктора запросов

Рис.10 Дополнительные возможности конструктора запросов

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

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

Рис.11 Дополнительные возможности конструктора запросов

Рис.11 Дополнительные возможности конструктора запросов

Еще одна возможность конструктора, которая не так часто используется – вывод итогов. На вкладке «Итоги» вы можете задать нужные вам арифметические операции с числовыми полями с учетом других полей. К примеру, на скриншоте показан подсчет суммы количества по каждой номенклатуре. В тексте мы увидим эту настройку в виде оператора «ИТОГИ … ПО…».

Рис.12 Дополнительные возможности конструктора запросов

Рис.12 Дополнительные возможности конструктора запросов

Построитель – еще одна закладка конструктора запросов с интересными возможностями. Здесь собраны все настройки, позволяющие выполняться запросу, как интерактивно, так и без участия пользователей. Также есть возможность адаптировать текст запроса в зависимости от введенных начальных данных. В текстовом варианте сделанные настройки построителя выделяются фигурными скобками.

Иногда в процессе работы с конструктором запроса с обработкой результата 1С требуется взглянуть на текстовый вид запроса. Для этого в левом нижнем углу есть кнопка «Запрос». При нажатии на нее открывается новое окно с полным текстом обращения к базе. Присутствует возможность изменения – при нажатии на соответствующую кнопку вы сможете внести изменения, а при закрытии конструктор отразит их на вкладках.

Рис.13 Дополнительные возможности конструктора запросов

Рис.13 Дополнительные возможности конструктора запросов

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

Читайте также: