22.01.2021 Сергей Пушкин 20704
Конструктор (построитель) запроса в 1С

Содержание:

1.       Что такое построитель запросов и зачем он нужен?

2.       Как работает конструктор запросов в 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С:Бухгалтерия 8 ПРОФ

Производственные операции
Автоматизация бизнес-процессов...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление производственным предприятием

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:
1С:Управление корпоративными финансами

- Финансово-бухгалтерский блок
- Казначейство ...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Блок планирования проектов (процессы объемно-календарного планирования пр...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

Внедренное типовое решение:
1С:Бухгалтерия

- Оптимизация производительности системы, в том числе сервера Postgre. ...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

Отрасль:
Оптовая торговля

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение