
Лабораторна робота №9
Тема роботи: «Звіт РейтингУслуг. Вибір даних із двох таблиць»
Звіт Рейтинг услуг буде містити інформацію про послуги, виконання яких принесло ТОВ «На всі руки майстер» найбільший прибуток у зазначеному періоді. На прикладі звіту Рейтинг услуг ми проілюструємо, як відбирати дані в деякому періоді, як задавати параметри запиту, як використовувати в запиті дані з декількох таблиць і як включати в результат запиту всі дані одного із джерел.
Ліве з'єднання двох таблиць
Додамо новий об'єкт конфігурації Звіт. Назвемо його РейтингУслуг і запустимо конструктор схеми компонування даних.
Додамо новий Набір даних - запит і викличемо конструктор запиту. Як джерело даних для запиту виберемо об'єктну (посилальну) таблицю Номенклатура й віртуальну таблицю регістра накопичення Продажи.Обороты.
Щоб виключити неоднозначність імен у запиті, перейменуємо таблицю Номенклатура в спрНоменклатура. Для цього виділимо її в списку Таблицы, викличемо її контекстне меню й виберемо пункт Переименовать таблицу (рис. 9.1).
Рис. 9.1. Перейменування таблиці в запиті
У список полів перенесемо поля спрНоменклатура.Ссылка й ПродажиОбороты.ВыручкаОборот із цих таблиць (рис. 9.2).
Рис. 9.20. Обрані поля
Перейдемо на закладку Связи. Тому що в запиті тепер беруть участь кілька таблиць, потрібно визначити зв'язок між ними.
За замовчуванням платформою вже буде створений зв'язок по полю Номенклатура. Тобто значення виміру Номенклатура регістра Продажи повинне дорівнювати посиланню на елемент довідника Номенклатура.
Але нам потрібно зняти прапорець Все в таблиці ПродажиОбороты й установити його в таблиці спрНоменклатура. Тим самим ми задаємо тип зв'язку як Левое соединение, тобто в результат запиту будуть включені всі записи довідника Номенклатура й ті записи регістра Продажи, які задовольняють умові зв'язку по полю Номенклатура.
Таким чином, у результаті запиту будуть присутні всі послуги, і для деяких з них будуть зазначені обороти виручки. Для тих послуг, які не надавалися в обраному періоді, не буде зазначене нічого.
У результаті описаних вище дій закладка Связи буде мати такий вигляд (рис. 9.3).
Рис. 9.3. Визначення зв'язку між таблицями
Умова відбору записів
Перейдемо на закладку Условия й установимо відбір, щоб групи довідника Номенклатура не попадали у звіт. Для цього розкриємо таблицю спрНоменкпатура, перетягнемо мишею поле ЭтоГруппа в список умов, установимо прапорець Произвольное й напишемо в поле Условие наступний текст (лістинг 9.1).
Лістинг 9.1. Умова запиту спрНоменклатураЭтоГруппа = ЛОЖЬ
Тим самим ми вказали, що з бази даних потрібно вибрати тільки ті записи довідника Номенклатура, які не є групами.
Другою умовою повинне бути те, що обраний елемент є послугою. Це - Проста умова. Щоб його створити, перетягнемо мишею поле ВидНоменклатуры в список умов. Платформа автоматично сформує умову, відповідно до якого вид номенклатури повинен бути дорівнює значенню параметра ВидНоменклатуры.
У результаті закладка Умови прийме вид (рис. 9.4).
Рис. 9.4. Створення умови запиту
Псевдоніми полів і порядок записів
Перейдемо на закладку Объединения/Псевдонимы й укажемо, що подання елемента довідника (поле Ссылка) буде мати псевдонім Услуга, а поле регістра буде мати псевдонім Выручка (рис. 9.5).
Рис. 9.5. Установка псевдонімів полів запиту
Перейдемо на закладку Порядок і вкажемо, що результат запиту повинен бути відсортований по убуванню значення поля Выручка (рис. 9.6).
Рис. 9.6. Порядок записів запиту
Створення запиту закінчене, натиснемо кнопку ОК. Повернемося в конструктор схеми компонування даних.
Аналіз тексту запиту
Текст запиту, сформований платформою, прийме вид (лістинг 9.2).