Лістинг 9.2. Текст запиту
ВЫБРАТЬ
спрНоменклатура.Ссылка КАК Услуга,
ПродажиОбороты.ВыручкаОборот КАК Выручка
ИЗ
Справочник.Номенклатура КАК спрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПО ПродажиОбороты.Номенклатура = спрНоменклатура.Ссылка
ГДЕ
спрНоменклатура.ЭтоГруппа = ЛОЖЬ
И спрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры
УПОРЯДОЧИТЬ ПО
Выручка УБЫВ
Спочатку, як звичайно, іде частина опису запиту, і в ній є нові для нас конструкції. При описі джерел запиту (після ключового слова ИЗ) використана можливість визначення декількох джерел запиту (лістинг 9.3).
Лістинг 9.3. Визначення декількох джерел запиту
З ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПО ПродажиОбороты.Номенклатура = спрНоменклатура.Ссылка
У цьому випадку вибираються записи із двох джерел: спрНоменклатура й ПродажиОбороты, причому ключовими словами ЛЕВОЕ СОЕДИНЕНИЕ... ПО описаний спосіб, яким будуть скомбіновані між собою записи цих двох джерел.
ЛЕВОЕ СОЕДИНЕНИЕ означає, що в результат запиту потрібно включити комбінації записів з обох джерел, які відповідають зазначеному після ключового слова ПО умовою. Крім цього, у результат запиту потрібно включити ще й записи з першого (зазначеного ліворуч від слова СОЕДИНЕНИЕ) джерела, для яких не знайдено відповідних умові записів із другого джерела.
Продовжимо розглядати текст запиту. У частині опису запиту є ще одна нова для нас конструкція - завдання умов відбору даних з вихідних таблиць (лістинг 9.4).
Лістинг 9.4. Завдання умов відбору
ГДЕ
спрНоменклатура.ЭтоГруппа = ЛОЖЬ
И спрНоменклатура.ВидНоменюгатуры = &ВидНомеклатуры
Умові відбору завжди передує ключове слово ГДЕ. Після нього описується сама умова. Зверніть увагу, що поля вихідних таблиць, на які накладається умова, можуть і не входити в список вибірки (як у нашому випадку). Крім того, у нашій умові використаний параметр запиту ВидНоменклатуры.
Тепер, коли ми закінчили знайомитися з текстом запиту, продовжимо формування нашої схеми компонування даних.
Ресурси й параметри
У нашому звіті ми хочемо бачити підсумкові значення виручки для кожної послуги. Для цього нам потрібно визначити поля ресурсів звіту. По суті, ресурси є груповими або загальними підсумками звіту.
Підсумкові дані формуються на закладці Ресурсы. Перейдемо на цю закладку й натиснемо кнопку >>, щоб конструктор вибрав всі доступні ресурси, по яких можна обчислювати підсумки. У нашому випадку це єдиний ресурс Выручка.
Платформа автоматично запропонує розраховувати суму значень цього поля, що нам і потрібно (рис. 9.7).
Рис. 9.7. Ресурси схеми компонування даних
Параметри звіту задають умови відбору записів у звіт. У схемі компонування дані параметри звіту задаються на закладці Параметры (рис. 9.8).
Рис. 9.8. Параметри компонування даних
На цій закладці ми побачимо три параметри: НачалоПериода, КонецПериода й ВидНоменклатуры. Ви можете запитати: чому параметра три, хоча в запиті ми задавали всього один - ВидНоменклатуры?
Вся справа в тому, що система компонування даних самостійно аналізує текст запиту й крім тих параметрів, які зазначені в ньому в явному виді (ВидНоменклатуры), надає можливість настроїти також і параметри віртуальних таблиць, які беруть участь у запиті.
Такими параметрами є НачалоПериода й КонецПериода. Це перші два параметри віртуальної таблиці РегистрНакопления.Продажи. Обороты, що ми використовували в запиті, у лівому з'єднанні.
Якщо в конструкторі запиту виділити в списку таблиць цю таблицю й нажати кнопку Параметры виртуальной таблицы, то з'явиться діалог, де ми побачимо параметри НачалоПериода й КонецПериода (рис. 9.9).
Рис. 9.9. Параметри віртуальної таблиці
Першим параметром передається початок періоду розрахунку підсумків, другим - кінець періоду. У результаті вихідна таблиця буде містити тільки обороти, розраховані в переданому періоді.
Допустимо, заздалегідь відомо, що користувача не будуть цікавити результати роботи звіту в періодах, зазначених з точністю до секунди. У цьому випадку варто врахувати дві особливості.
По-перше, користувача потрібно позбавити від необхідності вказувати час при уведенні дати періоду, за який формується звіт. Для цього ми змінимо існуючий опис типу для параметра НачалоПериода.
Повернемося на закладку Параметры схеми компонування даних і двічі клацнемо в комірці Тип, який відповідає параметру НачалоПериода.
Потім натиснемо кнопку вибору … і в нижній частині вікна редагування типу даних установимо Состав даты в значення Дата. Натиснемо ОК(рис. 9.10).
Рис. 9.10. Редагування складу дати
Друга особливість полягає в тому, що за замовчуванням час у дати встановлено 00:00:00. Тому якщо користувач задасть період звіту з 01.07.2009 по 14.07.2009, підсумки регістра будуть розраховані з початку дня 01.07.2009 00:00:00 по початок дня 14.07.2009 00:00:00. Таким чином, дані за 14-е число, відмінні від початку дня, у розрахунок не ввійдуть, що сильно здивує користувача.
Для того щоб виключити цю ситуацію, ми додамо ще один параметр, у який користувач буде вводити дату закінчення. А значення параметра КонецПериода будемо розраховувати автоматично таким чином, щоб воно вказувало на кінець дня дати, уведеної користувачем. Тому для параметра КонецПериода встановимо прапорець Ограничение доступности (рис. 9.11).
Рис. 9.11. Додавання параметра «ДатаОкончания»
Якщо цей прапорець не встановлений, то параметр буде доступний для настроювання користувачем. Якщо ж установити цей прапорець, то користувач не побачить цей параметр.
Потім за допомогою кнопки Добавить в командній панелі додамо новий параметр із ім'ям ДатаОкончания (див. рис. 9.11). Для цього параметра платформа автоматично сформує заголовок - Дата окончания. Залишимо його без змін.
Зверніть увагу, що за замовчуванням доданий нами параметр доступний для користувача (обмеження доступності в колонку зняте). Нас це цілком улаштовує.
Перейдемо до параметра КонецПериода. Для нього ми встановили прапорець Ограничение доступности, оскільки значення цього параметра ми збираємося обчислювати на підставі значення, установленого користувачем для параметра ДатаОкончания.
Щоб задати формулу, по якій буде обчислюватися значення параметра КонецПериода, скористаємося мовою виражень системи компонування даних.
У ньому є функція КонецПериода(), що дозволяє одержати дату, що відповідає кінцю якого-небудь періоду, наприклад, зазначеного дня.
В комірці Выражение задамо для параметра КонецПериода наступне вираження (лістинг 9.5).
Лістинг 9.5. Вираження для розрахунку значення параметра «КонецПериода»
КонецПериода(&ДатаОкончания,"День")
У результаті перерахованих дій параметри компонування будуть мати такий вигляд (рис. 9.12).
Рис. 9.12. Параметри системи компонування
І на закінчення настроїмо параметр ВидНоменклатуры.
Оскільки звіт повинен відображати виручку, отриманий тільки від реалізації послуг, значення параметра ВидНоменклатуры користувач змінювати не повинен. Воно повинне бути задане безпосередньо в схемі компонування як Перечисление. ВидНоменклатуры.Услуга.
Скористаємося кнопкою вибору й виберемо значення перерахування ВидыНоменкпатуры - Услуга (рис. 9.13).
Рис. 9.13. Установка значення параметра «ВидНоменклатуры» Настройки
