Отчет ПереченьУслуг
Отчет "Перечень услуг" будет содержать информацию о том, какие услуги и по какой цене оказывает OOO "На все руки мастер". На его примере мы познакомимся с возможностью получения последних значений из периодического регистра сведений и вывода иерархических справочников.
Создадим новый объект конфигурации Отчет "ПереченьУслуг". Перейдем на закладку "Макеты" и вызовем конструктов выходной формы.
Выберем объектную (ссылочную) таблицу справочника "Номенклатура" и виртуальную таблицу регистра сведений "Цены.СрезПоследних". Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу "Номенклатура" в "СпрНоменклатура".
Вызовем диалог ввода параметров виртуальной таблицы "ЦеныСрезПоследних" и укажем, что период будет передан в параметре "ДатаОтчета". Затем выберем из таблиц следующие поля:
· | "СпрНоменклатура.Родитель", |
· | "СпрНоменклатура.Ссылка", |
· | "ЦеныСрезПоследних.Цена": |
Перейдем на закладку "Связи" и сбросим флаг "Все" у таблицы регистра и установим его у таблицы справочника. [191]
На закладке "Условия" зададим условие выбора элементов справочника "Номенклатура" – выбираемые элементы должны соответствовать виду номенклатуры переданному в параметре запроса "ВидНоменклатуры":
На закладке "Объединения/Лсевдонимы" укажем, что поле "Родитель" будет иметь псевдоним "ГруппаУслуг", а поле "Ссылка" – "Услуга":
Перейдем на закладку "Итоги" и укажем, что группировка будет производиться по полю "ГруппаУслуг" с типом итогов "Элементы и иерархия", а значения суммируемых полей задавать не станем:
На закладке "Отчет" сбросим флаг "Использовать построитель отчета".
На закладке "Выходная форма" отметим, что тип параметра "ДатаОтчета" будет Дата, а параметр "ВидНоменклатуры" в форме редактироваться не будет. Нажмем "ОК". [192]
Откроем модуль формы и в процедуре "ПереченьУслуг" определим значение параметра запроса:
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
"ВЫБРАТЬ
| СпрНоменклатура.Родитель КАК ГруппаУслуг,
| ПРЕДСТАВЛЕНИЕ(СпрНоменклатура.Родитель),
| СпрНоменклатура.Ссылка КАК Услуга,
| СпрНоменклатура.Представление,
| ЦеныСрезПоследних.Цена
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаОтчета, ) КАК ЦеныСрезПоследних
| ПО ЦеныСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
|ГДЕ
| СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры
|ИТОГИ ПО
| ГруппаУслуг ИЕРАРХИЯ";
Теперь запустим 1С:Предприятие в режиме отладки и, прежде всего, откроем периодический регистр "Цены". [193]
Добавим в него еще одно значение для услуги "Диагностика" новая цена услуги на 01.04.2004 (это позволит нам протестировать отчет):
Теперь выполним отчет "Перечень услуг" по состоянию на 31.03.2004:
Наш отчет правильно отражает цену услуги "Диагностика" на 31.04 – 200pyб. [194]
Еще раз выполним отчет, но теперь уже на другую дату 01.04.2004:
Как видите, показана новая цена услуги "Диагностика" – 350 руб.
Таким образом, на примере этого отчета мы показали, как при помощи запроса можно получить последние значения из периодического регистра сведений и как вывести группировки по иерархии справочника. [195]