Теперь рассмотрим пример построения собственной иерархии. Создадим отчет, который будет отражать поступление товаров по складам с иерархией номенклатуры, построенной по собственному принципу (рис. 2.270).
Рис. 2.270. Требуемый вид отчета
Для этого в справочнике Номенклатура создадим еще один реквизит МойРодитель, указав тип данных СправочникСсылка.Номенклатура (рис. 2.271).
Рис. 2.271. Создание поля для построения иерархии
В режиме 1С:Предприятие создадим в справочнике Номенклатура новую группу Моя иерархия для хранения списка элементов собственной иерархии. Внутри этой группы создадим элементы и заполним у них поле Мой родитель (табл. 2.1).
Таблица 2.1. Заполнение поля «Мой родитель» у элементов группы «Моя иерархия» справочника «Номенклатура»
Наименование | Значение поля «Мой родитель» |
---|---|
Товары для сборки | |
Мониторы | Товары для сборки |
ОЗУ | Товары для сборки |
Основные детали | Товары для сборки |
Прочие детали | Товары для сборки |
Далее откроем группу Комплектующие и заполним у них поле Мой родитель (табл. 2.2).
Таблица 2.2. Заполнение поля «Мой родитель» у элементов группы «Комплектующие» справочника «Номенклатура»
Наименование | Значение поля «Мой родитель» |
---|---|
Жесткий диск | Основные детали |
Материнская плата | Основные детали |
Память | ОЗУ |
Монитор LCD | Мониторы |
Веб-камера | Прочие детали |
Микрофон | Прочие детали |
Таким образом, мы подготовили данные для построения новой иерархии. Конечно, можно было организовать такую иерархию с помощью групп и получить отчет, используя стандартную иерархию справочника, но мы хотим показать пример, который можно использовать для любого, в том числе неиерархического, объекта данных.
Теперь перейдем к созданию самого отчета. Добавим новый объект конфигурации Отчет и назовем его ПоступлениеТоваров. Откроем конструктор схемы компоновки данных и добавим новый набор данных – запрос. Назовем его Приход. Откроем конструктор запроса. В качестве источника данных для запроса выберем виртуальную таблицу регистра накопления ОстаткиНоменклатуры.Обороты. В список полей перенесем поля:
На закладке Объединения/Псевдонимы изменим имя у поля КоличествоПриход на Приход. Из этого запроса мы будем получать нужные нам данные о поступлении товаров. Нажмем ОК и вернемся в конструктор схемы компоновки данных.
Чтобы выполнить иерархическую группировку, процессору компоновки данных требуется информация об источнике данных для построения иерархии. Поэтому нам необходимо создать набор данных, содержащий информацию о текущем элементе справочника Номенклатура и его родителе, с последующим указанием связи набора к самому себе. Выделив корневой элемент наборов данных, добавим набор данных – запрос. Назовем его Иерархия. Откроем конструктор запроса. В качестве источника данных для запроса выберем объектную таблицу справочника Номенклатура. В список полей перенесем поля:
Перейдем на закладку Условия, раскроем таблицу Номенклатура и перетащим мышью поле Ссылка в список условий. В предложенном по умолчанию условии выберем вид сравнения – В (рис. 2.272).
Рис. 2.272. Создание условия запроса
На закладке Объединения/Псевдонимы изменим имя у поля Ссылка на Номенклатура. Это важно, так как мы будем использовать это поле для связи наборов данных, и оно должно в обоих наборах иметь одинаковый путь (рис. 2.273).
Рис. 2.273. Изменение псевдонима поля в запросе
Нажмем ОК и вернемся в конструктор схемы компоновки данных. Текст запроса набора Иерархия примет вид (листинг 2.45).
Листинг 2.45. Текст запроса набора «Иерархия»
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура,
Номенклатура.МойРодитель
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В(&Ссылка)
На закладке Связи наборов данных необходимо добавить связь:
В настройках связи зададим параметр Ссылка, который был определен для запроса набора данных Иерархия. В этот параметр будет помещено значение связи источника (рис. 2.274).
Рис. 2.274. Установка связей наборов данных
ВНИМАНИЕ
Поле для связи наборов данных обязательно должно иметь одинаковое имя в обоих наборах, иначе наименования родителей в отчете будут пустыми!
На закладке Ресурсы определим ресурсы отчета ().
Рис. 2.275. Окно ресурсов отчета
На закладке Параметры () мы видим параметры компоновки данных, созданные платформой. Для параметра Ссылка по умолчанию установлена недоступность для пользователя. Мы будем использовать стандартный период для указания периода отчета. Добавим параметр с именем Период типа СтандартныйПериод, а для параметров НачалоПериода и КонецПериода укажем Выражение для расчета и запретим их редактирование пользователем (листинг 2.46).
Листинг 2.46. Выражение для расчета параметров «НачалоПериода» и «КонецПериода»
&Период.ДатаНачала
&Период.ДатаОкончания
В результате параметры компоновки данных примут вид (рис. 2.276).
Рис. 2.276. Установка параметров отчета
Определим структуру отчета. На закладке Настройки выделим корневой элемент Отчет и добавим в него группировку по полю Склад. Затем добавим вложенную в нее группировку Номенклатура. При выборе поля группировки укажем тип группировки Иерархия. На закладке Выбранные поля перенесем из списка доступных полей поле Приход (рис. 2.277).
Рис. 2.277. Определение полей и группировок отчета
На закладке Параметры установим значение параметра Период – Прошлый месяц и включим этот параметр в состав быстрых пользовательских настроек (рис. 2.278).
Рис. 2.278. Настройка периода отчета
Заметим, что реальные значения дат стандартного периода определяются во время исполнения отчета. Поэтому период отчета будет автоматически меняться в зависимости от фактической даты запуска отчета. На закладке Другие настройки установим макет оформления () отчета Радуга и заголовок отчета Поступление товаров. Выполним отчет (рис. 2.279).
Рис. 2.279. Результат отчета
Мы видим, что данные в отчете выводятся с заданной нами новой иерархией, кроме того, отчет оформлен созданным нами в предыдущем примере макетом оформления.