Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_ПОЭИС_4.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Отчет Рейтинг услуг

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

Создадим новый объект конфигурации Отчет. Назовем его РейтингУслуг. На закладке Основные нажмем кнопку Открыть схему компоновки данных. В открывшемся диалоговом окне конструктора макета нажмем Готово.

В конструкторе схемы компоновки данных создадим Набор данных – запрос и запустим конструктор запроса.

Выберем объектную (ссылочную) таблицу справочника Номенклатура и виртуальную таблицу регистра накопления Продажи.Обороты. Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу Номенклатура в СпрНоменклатура (контекстное меню правой кнопки мыши – Переименовать таблицу).

Затем выберем из таблиц поля СпрНоменклатура.Ссылка и ПродажиОбороты.ВыручкаОборот (рис. 4.10).

Рис. 4.10. Выбранные поля

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

Единственное, что нам останется сделать, это сбросить флаг Все у таблицы регистра и установить его у таблицы справочника (рис. 4.11).

Рис. 4.11. Установка связей таблиц

Установка флага Все у таблицы справочника будет означать, что из справочника будут выбраны все элементы и этим элементам будет поставлено в соответствие значение оборота выручки из регистра. Таким образом, в результате запроса будут присутствовать все услуги, и для некоторых из них будут указаны обороты выручки. Для тех услуг, которые не оказывались в выбранном периоде, не будет указано ничего.

Перейдем на закладку Условия и зададим условия выбора элементов из справочника Номенклатура (рис. 5.14). При задании условий выбора мы будем использовать параметры запроса. Первым условием должно быть то, что выбранный элемент не является группой (для этого следует переключиться в режим Произвольное условие – установить флаг Произвольное). Затем ввести в поле условие следующий текст (листинг 4.7).

Листинг 4.7. Условие запроса

СпрНоменклатура.ЭтоГруппа = ЛОЖЬ

Вторым условием должно быть то, что выбранный элемент является услугой (это – Простое условие) (рис. 4.12).

Рис. 4.12. Условия выбора элементов

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

Перейдем на закладку Объединения/Псевдонимы и укажем, что представление элемента справочника будет иметь псевдоним Услуга, а поле регистра будет иметь псевдоним Выручка (рис. 4.13).

Рис. 4.13. Объединения/Псевдонимы

Перейдем на закладку Порядок и укажем, что результат запроса должен быть отсортирован по убыванию значения поля Выручка. Создание запроса закончено, нажмем кнопку ОK.

Рассмотрим запрос, сформированный конструктором (листинг 4.8).

Листинг 4.8. Текст запроса

ВЫБРАТЬ

СпрНоменклатура.Ссылка КАК Услуга,

ПродажиОбороты.ВыручкаОборот КАК Выручка

ИЗ

Справочник.Номенклатура КАК СпрНоменклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

ГДЕ

СпрНоменклатура.ЭтоГруппа = ЛОЖЬ И СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

УПОРЯДОЧИТЬ ПО

Выручка УБЫВ

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

При описании источников запроса (после ключевого слова ИЗ) использована возможность определения нескольких источников запроса (листинг 4.9).

Листинг 4.9. Определение нескольких источников запроса

ИЗ

Справочник.Номенклатура КАК СпрНоменклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

В данном случае выбираются записи из двух источников: СпрНоменклатура и ПродажиОбороты, причем ключевым предложением ЛЕВОЕ СОЕДИНЕНИЕ … ПО описан способ, которым будут скомбинированы между собой записи этих двух источников.

ЛЕВОЕ СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обоих источников, которые соответствуют указанному после ключевого слова ПО условию. Кроме этого в результат запроса надо включить еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.

Продолжим рассматривать текст запроса. В части описания запроса есть еще одна новая для нас конструкция – задание условий отбора данных из исходных таблиц (листинг 4.10).

Листинг 4.10. Задание условий отбора

ГДЕ

СпрНоменклатура.ЭтоГруппа = ЛОЖЬ И СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

Условию отбора всегда предшествует ключевое слово ГДЕ. После него описывается само условие. Обратите внимание, что поля исходных таблиц, на которые накладывается условие, могут и не входить в список выборки (как в нашем случае). Кроме того, в нашем условии использован параметр запроса ВидНоменклатуры.

Теперь, когда мы закончили знакомиться с текстом запроса, продолжим формирование нашей схемы компоновки данных.

Перейдем на закладку Ресурсы и нажмем кнопку >>, чтобы конструктор выбрал все доступные ресурсы, по которым можно вычислять итоги. В нашем случае – это единственный ресурс Выручка (рис. 4.14).

Рис. 4.14. Ресурсы схемы компоновки данных

Перейдем на закладку Параметры (рис. 4.15).

Рис. 4.15. Параметры компоновки данных

На этой закладке мы увидим три параметра: НачалоПериода, КонецПериода и ВидНоменклатуры. Вы можете спросить: почему параметра три, хотя в запросе мы задавали всего один – ВидНоменклатуры?

Все дело в том, что система компоновки данных самостоятельно анализирует текст запроса и помимо тех параметров, которые указаны в нем в явном виде (ВидНоменклатуры), предоставляет возможность настроить и те параметры, которые в явном виде в запросе не указаны, но с большой долей вероятности могут быть использованы в отчете. Такими параметрами являются НачалоПериода и КонецПериода. Это первые два параметра виртуальной таблицы РегистрНакопления.Продажи.Обороты, которую мы использовали в запросе, в левом соединении.

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

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

Здесь всегда следует помнить, что если мы передаем в качестве этих параметров дату (а в нашем случае так и будет), то дата содержит и время с точностью до секунды.

Допустим, заранее известно, что пользователя не будут интересовать результаты работы отчета в периодах, указанных с точностью до секунды. В этом случае следует учесть две особенности.

Во-первых, пользователя надо избавить от необходимости указывать время при вводе даты. Для этого мы изменим существующее описание типа для параметра НачалоПериода. Дважды щелкнем в ячейке Доступные типы, соответствующей параметру НачалоПериода, нажмем кнопку выбора (…) и в нижней части окна редактирования типа данных установим Состав даты в значение Дата (рис. 4.16).

Рис. 4.16. Редактирование состава даты

Нажмем ОK.

Вторая особенность заключается в том, что по умолчанию время в дате установлено 00:00:00. Поэтому, если пользователь задаст период отчета с 01.03.2004 по 31.03.2004, итоги регистра будут рассчитаны с начала дня 01.03.2004 00:00:00 по начало дня 31.03.2004 00:00:00. Таким образом, данные за 31 число, отличные от начала дня, в расчет не войдут, что сильно удивит пользователя.

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

С помощью кнопки командной панели добавим новый параметр с именем ДатаОкончания (рис. 4.17).

Рис. 4.17. Добавление параметра ДатаОкончания

Для этого параметра платформа автоматически сформирует заголовок – Дата окончания. Оставим его без изменений. Зададим тип значения параметра – Дата. При этом, как и для параметра НачалоПериода, укажем состав даты – Дата.

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

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

Чтобы задать формулу, по которой будет вычисляться значение параметра КонецПериода, воспользуемся языком выражений системы компоновки данных. Он содержит функцию КонецПериода(), которая позволяет получить дату, соответствующую концу какого-либо периода, например, указанного дня.

В ячейке Выражение зададим для параметра КонецПериода следующее выражение (листинг 5.9):

Листинг 4.11. Выражение для расчета значения параметра КонецПериода

КонецПериода(&ДатаОкончания, "День")

В результате перечисленных действий параметры компоновки будут иметь следующий вид (рис. 4.18):

Рис. 4.18. Параметры системы компоновки

И в заключение настроим параметр ВидНоменклатуры. Поскольку отчет должен отображать выручку, полученную только от реализации услуг, значение параметра ВидНоменклатуры пользователь изменять не должен. Оно должно быть задано непосредственно в схеме компоновки как Перечисление.ВидыНоменклатуры.Услуга. Флаг ограничения использования у параметра ВидНоменклатуры платформа установила по умолчанию, поэтому нам остается только указать нужное значение перечисления ВидыНоменклатуры в ячейке Значение, соответствующей параметру ВидНоменклатуры (рис. 4.19).

Рис. 4.19. Установка значения параметра ВидНоменклатуры

Перейдем к формированию структуры отчета. На закладке Настройки добавим группировку и снова не укажем поле группировки. На закладке Выбранные поля укажем поля Услуга и Выручка (рис. 4.20).

Рис. 4.20. Структура отчета РейтингУслуг

В заключение перейдем на закладку Другие настройки и зададим заголовок отчета – РейтингУслуг (рис. 4.21).

Рис. 4.22. Установка заголовка отчета

Запустим 1С:Предприятие в режиме отладки.

Запустим наш отчет Рейтинг услуг, но перед тем, как нажать кнопку Сформировать, откроем Настройки и на закладке Параметры данных зададим период отчета с 01.03.2004 по 30.04.2004 (рис. 4.23).

Рис. 4.23. Настройки отчета

Нажмем OK и сформируем отчет. Результат будет выглядеть следующим образом (рис. 4.24):

Рис. 4.24. Результат выполнения отчета

Теперь изменим дату окончания на 31.03.2004. Данные за 31 марта попадают в отчет (рис. 4.25).

Рис. 4.25. Результат выполнения отчета