Навчальні статті. Складні запити в BAS. Підсумки декількох таблиць

Ця стаття була оновлена 06 Червня 2022, Пн
Зміст
  1. Перша категорія - запит тип "об'єднання"
  2. Друга категорія - "вкладений" запит
  3. Третя категорія - "пакетний" запит
  4. Підсумки в запиті.

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

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

Перша категорія - запит тип "об'єднання"

Цей тип запиту з'єднує дві різні таблиці в один загальний результат.

Давайте створимо новий запит. Мета запиту отримати товари з замовлення покупця і їх ціну, і порівняти з ціною з документа «Установка цін номенклатури». Даний документ буде робити рухи по регістру відомостей «Ціни номенклатури». Мета такого запиту, перевірити, чи не продаємо ми за заниженими або завищеними цінами.

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

Урок 16 - складні запити BAS

Якщо ви об'єднаємо зараз дві таблиці, то у нас вийде тільки дві колонки. Ціни зібралися воєдино. Давайте додамо технічні поля в кожен із запитів, просто нулі. Використовуючи кнопку додати на закладці «таблиці і поля» у третій колонці.

Складні запити в BAS

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

Складні запити в BAS

Складні запити в BAS

В результаті ми можемо порівняти дані і отримати деяку аналітику.

Друга категорія - "вкладений" запит

Такий запит знадобиться, якщо ви зібралися вибрати все з однієї таблиці і лише деякі дані з іншої.

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

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

Складні запити в BAS

У вікні нового конструктора зробимо запит до довідника контрагенти

Складні запити в BAS

Нам буде достатньо тільки посилання. Посилання містить в собі всі ці речовини.

Натиснемо «ОК» і потрапляємо назад в перший конструктор запиту. Тут у нас з'являється вже елемент - «Вложенный запрос» з нього можна явно вибрати поля, тільки ті, які ми вибрали в попередньому запиті. Додамо таблицю регістра відомостей «Контактна інформація» і виберемо з неї поле «Представление» і «Вид», а з вкладеного запиту поле «Ссылка».

Складні запити в BAS

Якщо закінчити конструювати зараз, то наші дві таблиці будуть ніяк не пов'язані. Будуть обрані всі записи з першої таблиці і другий. Давайте встановимо зв'язок.

Складні запити в BAS

Зробити це можна на закладці «Зв'язки», яка з'являється, якщо у нас є дві і більше таблиці в одному запиті. У першій таблиці вкажемо вкладений запит, у другій контактну інформацію. А в умовах зв'язку зазначимо, що поле вкладеного запиту «Ссылка» дорівнює полю контактної інформації «Объект». І найважливіше, потрібно вказати яка таблиця буде пріоритетною. Зазначимо Вкладений запит.

Що таке пріоритети або вид з'єднання?
Якщо нам потрібно з декількох таблиць зібрати одну, то потрібно якось їх об'єднати-з'єднати. З'єднання бувають:

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

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

Пакетний запит це кілька запитів, описаних як один великий запит. Ці запити виконуються послідовно один за іншим. Результат будь-якого з цих запитів можна помістити в тимчасову таблицю і звернутися до неї з іншого запиту.

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

До мінусів можна віднести витрати ресурсів на створення тимчасових таблиць і їх знищення.

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

Складні запити в BAS

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

Складні запити в BAS

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

Зверніть увагу на першу колонку закладки «Таблиці і поля», в самому низу, з'явилися наші тимчасові таблиці.

Складні запити в BAS

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

Складні запити в BAS

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

Підсумки в запиті.

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

Складні запити в BAS

І отримуємо такий результат запиту

Складні запити в BAS

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

Групування.

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

Складні запити в BAS

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

Складні запити в 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