Обучающие статьи. BAS Сложные запросы. Итоги нескольких таблиц

Эта статья была обновлена 06 Июня 2022, Пн
Оглавление
  1. Первая категория - запрос тип "объединение"
  2. Вторая категория - "вложенный" запрос
  3. Третья категория - "пакетный" запрос
  4. Итоги в запросе.

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

Условно сложные запросы можно разделить на три категории.

Первая категория - запрос тип "объединение"

Этот тип запроса соединяет две разные таблицы в один общий результат.

Давайте создадим новый запрос. Цель запроса получить товары из заказа покупателя и их цену, и сравнить с ценой из документа «Установка цен номенклатуры». Данный документ будет делать движения по регистру сведений «Цены номенклатуры». Цель такого запроса, проверить, не продаем ли мы по заниженным или завышенным ценам.

Создадим первый запрос в табличной части Товары, документа заказ покупателя и возьмем от туда поля «Номенклатура» и «Цена». Перейдем на закладку «Объединения» и добавим еще один запрос, теперь к регистру сведений «Цены номенклатуры» и возьмем от туда поля «Номенклатура» и «Цена». Так у нас получиться три колонки «Номенклатура», «Цена заказа» и «Цена установки цен».

Урок 16 - сложные запросы BAS

Если вы объединим сейчас две таблицы, то у нас получится только две колонки. Цены собрались воедино. Давайте добавим технические поля в каждый из запросов, просто ноли. Используя кнопку добавить на закладке «таблицы и поля» в третьей колонке.

Урок 16 - сложные запросы BAS

Вернемся в закладку «Объединения» и укажем, что техническое поле «0» из таблицы заказа ,равно полю цена из таблицы регистра сведений и, наоборот, для цены регистра укажем техническое поле «0» из заказа покупателя.  Переключатся между запросами можно при помощи закладок справа. Назовем колонки «Цена заказа» и «Цена установки»

Урок 16 - сложные запросы BAS

Урок 16 - сложные запросы BAS

В результате мы можем сравнить данные и получить некоторую аналитику.

Вторая категория - "вложенный" запрос

 

Такой запрос пригодится, если вы собрались выбрать все из одной таблицы и лишь некоторые данные из другой.

Например, мы хотим получить несколько контрагентов и их контактные данные.

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

Урок 16 - сложные запросы BAS

В открывшемся окне нового конструктора сделаем запрос к справочнику контрагенты

Урок 16 - сложные запросы BAS

Нам будет достаточно только ссылки. Ссылка содержит в себе все данные элемента.

Нажмем «ОК» и попадаем обратно в первый конструктор запроса. Тут у нас появляется уже элемент – «Вложенный запрос» из него можно явно выбрать поля, только те, которые мы выбрали в предыдущем запросе. Добавим таблицу регистра сведений «Контактная информация» и выберем из нее поле «Представление» и «Вид», а из вложенного запроса поле «Ссылка».

Урок 16 - сложные запросы BAS

Если закончить конструировать сейчас, то наши две таблицы будут никак не связаны. Будут выбраны все записи из первой таблицы и второй. Давайте установим связь.

Урок 16 - сложные запросы BAS

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

Что такое приоритеты или вид соединения?
Если нам нужно из нескольких таблиц собрать одну, то нужно как-то их объединить-соединить. Соединения бывают:

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

Третья категория - "пакетный" запрос

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

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

К минусам можно отнести затраты ресурсов на создание временных таблиц и их уничтожение.

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

Урок 16 - сложные запросы BAS

Далее переходим на закладку «Пакет запросов» и добавляем еще один запрос. Теперь уже к Контактной информации. Выбираем поля «Объект», «Вид», «Представление» и тоже помещаем во временную таблицу и назовем ее «КонтактнаяИнформация».

Урок 16 - сложные запросы

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

Обратите внимание на первую колонку закладки «Таблицы и поля», в самом низу, появились наши временные таблицы. 

Урок 16 - сложные запросы

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

Урок 16 - сложные запросы BAS

Все, наш пакетный запрос готов.

Итоги в запросе.

Итоги нужны, например, для суммирования поля «сумма документа». Давайте попробуем на примере. Сделаем запрос к документам Реализация товаров и услуг, выберем поля «Ссылка» и «Сумма Документа», зайдем на закладку «Итоги» укажем, что итоги у нас будут по полю «Сумма Документа» и установим галочку «Общие итоги».

Урок 16 - сложные запросы BAS

И получаем такой результат запроса

Урок 16 - сложные запросы BAS

Первая запись пустая, но содержит в себе сумму всех сумм документов.

Группировка.

На закладке итоги так же можно сгруппировать результат. Давайте добавим в наш запрос поле «Контрагент» и добавим его в групповое поле на закладке итоги.

Урок 16 - сложные запросы BAS

Результат запроса будет таким

Урок 16 - сложные запросы BAS

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

Так же, наша компания проводит обучение по курсам:

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

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

( 16 )
Комментарии
Пока нет комментариев
Написать комментарий

Свяжитесь с нами

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

(073) 090-70-20 (095) 090-70-20 (068) 090-70-20 info@finsoft.ua