Навчальні статті. Складні запити в BAS. Підсумки декількох таблиць
На минулому уроці ми розглядали прості запити в BAS, сьогодні ми продовжимо цю тему і перейдемо до вивчення вже складних запитів в BAS та підсумкам по декількох таблицях.
Умовно складні запити можна розділити на три категорії.
Перша категорія - запит тип "об'єднання"
Цей тип запиту з'єднує дві різні таблиці в один загальний результат.
Давайте створимо новий запит. Мета запиту отримати товари з замовлення покупця і їх ціну, і порівняти з ціною з документа «Установка цін номенклатури». Даний документ буде робити рухи по регістру відомостей «Ціни номенклатури». Мета такого запиту, перевірити, чи не продаємо ми за заниженими або завищеними цінами.
Створимо перший запит в табличній частині Товари, документа замовлення покупця і візьмемо звідти поля «Номенклатура» і «Ціна». Перейдемо на закладку «Об'єднання» і додамо ще один запит, тепер до регістру відомостей «Ціни номенклатури» і візьмемо звідти поля «Номенклатура» і «Ціна». Так у нас вийти три колонки «Номенклатура», «Ціна замовлення» і «Ціна установки цін».
Якщо ви об'єднаємо зараз дві таблиці, то у нас вийде тільки дві колонки. Ціни зібралися воєдино. Давайте додамо технічні поля в кожен із запитів, просто нулі. Використовуючи кнопку додати на закладці «таблиці і поля» у третій колонці.
Повернемося в закладку «Об'єднання» і вкажемо, що технічне поле «0» з таблиці замовлення дорівнює полю ціна з таблиці регістра відомостей і, навпаки, для ціни регістра вкажемо технічне поле «0» з замовлення покупця. Переключатися між запитами можна за допомогою закладок справа. Назвемо колонки «Ціна замовлення» і «Ціна установки»
В результаті ми можемо порівняти дані і отримати деяку аналітику.
Друга категорія - "вкладений" запит
Такий запит знадобиться, якщо ви зібралися вибрати все з однієї таблиці і лише деякі дані з іншої.
Наприклад, ми хочемо отримати кілька контрагентів і їх контактні дані.
Створимо запит, в конструкторі використовуємо кнопку для створення вкладеного запиту
У вікні нового конструктора зробимо запит до довідника контрагенти
Нам буде достатньо тільки посилання. Посилання містить в собі всі ці речовини.
Натиснемо «ОК» і потрапляємо назад в перший конструктор запиту. Тут у нас з'являється вже елемент - «Вложенный запрос» з нього можна явно вибрати поля, тільки ті, які ми вибрали в попередньому запиті. Додамо таблицю регістра відомостей «Контактна інформація» і виберемо з неї поле «Представление» і «Вид», а з вкладеного запиту поле «Ссылка».
Якщо закінчити конструювати зараз, то наші дві таблиці будуть ніяк не пов'язані. Будуть обрані всі записи з першої таблиці і другий. Давайте встановимо зв'язок.
Зробити це можна на закладці «Зв'язки», яка з'являється, якщо у нас є дві і більше таблиці в одному запиті. У першій таблиці вкажемо вкладений запит, у другій контактну інформацію. А в умовах зв'язку зазначимо, що поле вкладеного запиту «Ссылка» дорівнює полю контактної інформації «Объект». І найважливіше, потрібно вказати яка таблиця буде пріоритетною. Зазначимо Вкладений запит.
Що таке пріоритети або вид з'єднання?
Якщо нам потрібно з декількох таблиць зібрати одну, то потрібно якось їх об'єднати-з'єднати. З'єднання бувають:
- «Ліве» - якщо використовувати це з'єднання, то в результаті ми отримаємо всі записи з лівої таблиці, а записи з правої - тільки ті, що задовольняють умові зв'язку. Тобто, якщо дивитися на наш приклад-вище будуть обрані всі контрагенти і контакти для кожного з них.
- «Правое» - по суті це теж що і ліве з'єднання, тільки таблиці при цьому міняються місцями.
- «Внутрішнє» - з таблиць будуть обрані тільки ті поля, які відповідають умові зв'язку. Тобто, з нашого прикладу буде вибрано лише ті контрагенти, у яких взагалі є контактна інформація.
- «Повний» - з таблиць будуть обрані всі поля. Тобто з нашого прикладу буде обрана вся контактна інформація, неважливо прив'язана вона до контрагента або взагалі відноситься до організації.
Третя категорія - "пакетний" запит
Пакетний запит це кілька запитів, описаних як один великий запит. Ці запити виконуються послідовно один за іншим. Результат будь-якого з цих запитів можна помістити в тимчасову таблицю і звернутися до неї з іншого запиту.
Однозначну плюс цієї категорії запитів - результати такого запиту поміщаються в тимчасову таблицю, вони можуть використовуватися кілька разів. При цьому не потрібно кілька разів виконувати один і той же вкладений запит, а вибирати дані з готової таблиці.
До мінусів можна віднести витрати ресурсів на створення тимчасових таблиць і їх знищення.
Давайте візьмемо наш приклад з контрагентами і контактною інформацією та зробимо його пакетним запитом. Створимо новий запит. Тепер не будемо робити «вкладений», а відразу звернемося до таблиці контрагентів і виберемо поле «Ссылка». Далі перейдемо на закладку «Додатково» і вкажемо, що ми хочемо помістити результат в тимчасову таблицю, а так само поставимо її ім'я. Назвемо її «Контрагенти».
Далі переходимо на закладку «Пакет запитів» і додаємо ще один запит. Тепер вже до Контактної інформації. Вибираємо поля «Объект», «Вид», «Представление» і теж поміщаємо в тимчасову таблицю і назвемо її «КонтактнаяИнформация».
Тепер, коли у нас є два запити, кожен з яких повернув проміжний результат, тобто Контрагенти вибрали всіх контрагентів, Контактна інформація всі контакти ми зробимо з'єднання результатів. Додаємо ще один запит на закладці «Пакет запросов».
Зверніть увагу на першу колонку закладки «Таблиці і поля», в самому низу, з'явилися наші тимчасові таблиці.
Давайте виберемо з них дані. З контрагентів нам потрібна посилання, а з контактної інформації поля «Вид» и «Представление». У вас напевно виникло питання «А навіщо потрібно вибирати поле «Объект» в тимчасовому запиті контактна інформація? ». Відповідь проста: для того щоб у нас була можливість зробити зв'язок між цими двома таблицями.
Все, наш пакетний запит готовий.
Підсумки в запиті.
Підсумки потрібні, наприклад, для підсумовування поля «сума документа». Давайте спробуємо на прикладі. Зробимо запит до документів Реалізація товарів і послуг, виберемо поля «Ссылка» і «СуммаДокумента», зайдемо на закладку «Підсумки» вкажемо, що підсумки у нас будуть по полю «Сумма Документа» та встановимо галочку «Общие итоги».
І отримуємо такий результат запиту
Перший запис порожня, але містить в собі суму всіх сум документів.
Групування.
На закладці підсумки так само можна згрупувати результат. Давайте додамо в наш запит поле «Контрагент» і додамо його в групове поле на закладці підсумки.
Результат запиту буде таким
Перший рядок загальні підсумки по контрагенту, далі документи і їх суми.
Також, наша компанія проводить навчання за курсами:
Навчання проводиться у вечірній час, що дозволить вам не відриватися від роботи або навчання, практикуючим програмістом нашої компанії.
Якщо у вас залишилися питання, Ви завжди можете звернутися до наших аналітиків за телефонами:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20
Зв'яжіться з нами
Якщо ви хочете отримати більше інформації, заповніть цю форму. Ми зв'яжемося з вами найближчим часом.