Использование макетов оформления
Обновлено: 17.01.2008
Макеты оформления компоновки данных предназначены для оформления отчетов. При помощи макетов оформления можно указывать различным областям отчета определенные цвета фона, текста, шрифты и т.д.
Типы областей макета оформления
Выводимый отчет можно разделить на области, указанные на рис. 1
|
|
|
|
|
|
|
|
|
|
|
Отчет |
|
|
|
|
|
|
|
Заголовок |
|
|
|
|
|
|
|
Информация |
|
|
|
|
|
|
|
Элемент отчета 1 |
|
|
|
|
|
|
|
Элемент отчета 2 |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
Элемент отчета N |
|
|
|
|
|
|
Рис. 1
На указанном рисунке:
- заголовок - область отчета, содержащая заголовок отчета,
- информация - область отчета, содержащая текст установленных в отчете отборов, а также параметры данных,
- элементы отчета представляют собой группировки, таблицы, диаграммы или вложенные отчеты.
Группировку отчета можно представить в виде областей, указанных на рис. 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Группировка |
|
|
|
|
|
|
|
|
|
Заголовок |
|
|
|
|
|
|
|
|
|
Информация |
|
|
|
|
|
|
|
|
|
Заголовок таблицы |
|
|
Заголовок группировки уровень 1 |
|
|
Заголовок группировки уровень 2 |
|
|
... |
|
|
Заголовок группировки уровень N |
|
|
Детальные записи |
|
|
Подвал группировки уровень N |
|
|
... |
|
|
Подвал группировки уровень 2 |
|
|
Подвал группировки уровень 1 |
|
|
Общие итоги по вертикали |
|
|
|
|
|
|
|
|
Рис. 2
На указанном рисунке:
- заголовок - область группировки, содержащая заголовок группировки верхнего уровня,
- информация - область группировки, содержащая текст установленных для группировки верхнего уровня отборов,
- заголовок таблицы - область группировки, содержащая имена выводимых полей,
- заголовки группировки - области, содержащие значения выводимых полей группировки. Данные области выводятся в начале группировки,
- подвалы группировки - области, содержащие значения выводимых полей. Данные области выводятся в конце группировки,
- детальные записи - область, содержащая значения выводимых полей детальных записей,
- общие итоги по вертикали - область, содержащая итоги по группировке.
Следует заметить, что в качестве заголовков или подвалов группировки могут использоваться заголовки и подвалы иерархической группировки. Также перед заголовками группировок могут находиться области заголовка и информации, отображающие заголовок вложенной группировки и отбор соответственно.
Группировку отчета, отображаемую в виде списка, можно представить в виде областей, указанных на рис. 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Группировка списка |
|
|
|
|
|
|
|
|
|
|
Заголовок |
|
|
|
|
|
|
|
|
|
|
Информация |
|
|
|
|
|
|
|
|
|
|
Заголовок группировки списка уровень 1 |
|
|
|
|
|
|
|
|
|
|
Заголовок группировки списка уровень 2 |
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
Заголовок группировки списка уровень N |
|
|
|
|
|
|
|
|
|
|
Детальные записи списка |
|
|
|
|
|
|
|
|
|
|
Подвал группировки списка уровень N |
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
Подвал группировки списка уровень 2 |
|
|
|
|
|
|
|
|
|
|
Подвал группировки списка уровень 1 |
|
|
|
|
|
|
|
|
|
|
Общие итоги по вертикали списка |
|
|
|
|
|
|
|
|
|
Рис. 3
На указанном рисунке:
-
заголовок - область группировки, содержащая заголовок,
-
информация - область группировки, содержащая текст установленных для группировки отборов,
-
заголовки группировки списка - области, содержащие значения выводимых полей группировки. Данные области выводятся в начале группировки,
-
подвалы группировки списка - области, содержащие значения выводимых полей. Данные области выводятся в конце группировки,
-
детальные записи списка - область, содержащая значения выводимых полей детальных записей,
-
общие итоги по вертикали списка - область, содержащая итоги по группировке.
Следует заметить, что в качестве заголовков или подвалов группировки могут использоваться заголовки и подвалы иерархической группировки.
Таблицу можно представить в виде областей, указанных на рис. 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Заголовок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Информация |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Заголовок таблицы |
Заголовок группировки колонки уровень 1 |
Подвал группировки колонки уровень 1 |
|
|
Заголовок группировки уровень 1 |
Ресурсы заголовка группировки уровень 1 |
|
|
Заголовок группировки уровень 2 |
Ресурсы заголовка группировки уровень 2 |
|
|
... |
|
|
Заголовок группировки уровень N |
Ресурсы заголовка группировки уровень N |
|
|
Детальные записи |
Ресурсы детальных записей |
|
|
Подвал группировки уровень N |
Ресурсы подвала группировки уровень N |
|
|
... |
|
|
Подвал группировки уровень 2 |
Ресурсы подвала группировки уровень 2 |
|
|
Подвал группировки уровень 1 |
Ресурсы подвала группировки уровень 1 |
|
|
Общие итоги по вертикали |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4
На указанном рисунке:
-
заголовок - область таблицы, содержащая заголовок,
-
информация - область таблицы, содержащая текст установленных для таблицы отборов,
-
заголовок таблицы - область таблицы, содержащая имена выводимых в строках таблицы полей,
-
заголовки и подвалы группировки колонки - области таблицы, содержащие выводимые в колонках таблицы поля. Стоит отметить, что в качестве заголовков и подвалов группировок колонок могут использоваться заголовки и подвалы иерархических группировок колонок,
-
заголовки и подвалы группировки - области таблицы, содержащие выводимые в строках таблицы поля. В качестве заголовков и подвалов группировок также могут использоваться заголовки и подвалы иерархических группировок строк. Также перед заголовками группировок строк могут находиться области заголовка и информации, отображающие заголовок вложенной группировки строк и отбор соответственно,
-
ресурсы заголовка группировки, ресурсы подвала группировки и ресурсы детальных записей - области таблицы, содержащие выводимые поля ресурсов. Для иерархических группировок используются, соответственно ресурсы заголовка иерархической группировки и ресурсы подвала иерархической группировки,
-
общие итоги по вертикали - область, содержащая итоги по колонкам таблицы.
Таким образом, в макете оформления существуют следующие типы областей:
- ЗаголовокГруппировки(GroupHeader) - область заголовка группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалГруппировки(GroupFooter) - область подвала группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокИерархическойГруппировки(HierarchicalGroupHeader) - область заголовка иерархической группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалИерархическойГруппировки(HierarchicalGroupFooter) - область подвала иерархической группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокГруппировкиСписка(ListGroupHeader) - область заголовка группировки списка. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалГруппировкиСписка(ListGroupFooter) - область подвала группировки списка. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокИерархическойГруппировкиСписка(ListHierarchicalGroupHeader) - область заголовка иерархической группировки списка. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалИерархическойГруппировкиСписка(ListHierarchicalGroupFooter) - область подвала иерархической группировки списка. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокГруппировкиКолонки(ColumnGroupHeader) - область заголовка колонки таблицы. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалГруппировкиКолонки(ColumnGroupFooter) - область подвала колонки таблицы. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокИерархическойГруппировкиКолонки(ColumnHierarchicalGroupHeader) - область заголовка иерархической колонки таблицы. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ПодвалИерархическойГруппировкиКолонки(ColumnHierarchicalGroupFooter) - область подвала иерархической колонки таблицы. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ДетальныеЗаписи(Detail) - область детальных записей. Для данной области значение уровня должно быть всегда равным 0;
- ДетальныеЗаписиСписка(ListDetail) - область детальных записей списка. Для данной области значение уровня должно быть всегда равным 0.
- РесурсыЗаголовкаГруппировки(ResourcesGroupHeader) - область ресурсов заголовка группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- РесурсыПодвалаГруппировки(ResourcesGroupFooter) - область ресурсов подвала группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- РесурсыЗаголовкаИерархическойГруппировки(ResourcesHierarchicalGroupHeader) - область ресурсов заголовка иерархической группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- РесурсыПодвалаИерархическойГруппировки(ResourcesHierarchicalGroupFooter) - область ресурсов подвала иерархической группировки. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- РесурсыДетальныхЗаписей(ResourcesDetail) - область ресурсов детальных записей. Для данной области значение уровня должно быть всегда равным 0;
- ИтогПоРесурсамЗаголовкаГруппировки(ResourcesTotalGroupHeader) - область итогов по ресурсам заголовка группировки;
- ИтогПоРесурсамПодвалаГруппировки(ResourcesTotalGroupFooter) - область итогов по ресурсам подвала группировки;
- ИтогПоРесурсамЗаголовкаИерархическойГруппировки(ResourcesTotalHierarchicalGroupHeader) - область итогов по ресурсам заголовка иерархической группировки;
- ИтогПоРесурсамПодвалаИерархическойГруппировки(ResourcesTotalHierarchicalGroupFooter) - область итогов по ресурсам заголовка колонки таблицы;
- ИтогПоРесурсамДетальныхЗаписей(ResourcesTotalDetail) - область итога по ресурсам детальных записей. Для данной области значение уровня должно быть всегда равным 0;
- ОбщиеИтогиПоВертикали(VerticalOverall) - область общего итога по вертикали. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ОбщиеИтогиПоВертикалиСписка(ListVerticalOverall) - область общего итога по вертикали списка. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- ЗаголовокТаблицы(TableHeader) - область заголовка таблицы или группировки. Для данной области значение уровня должно быть всегда равным 0;
- ПоУмолчанию(Default) - область по умолчании. Для данной области значение уровня должно быть всегда равным 0;
- Заголовок(Title) - область заголовка отчета. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию;
- Информация(Information) - область информации. Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию.
Существуют следующие особенности вывода заголовков и подвалов группировок:
- Если не задана область подвала неиерархической группировки, то в качестве области подвала выводится область заголовка группировки;
- Если для иерархической группировки не задана область заголовка, то в качестве области заголовка выводится область заголовка неиерархической группировки;
- Если не задана область подвала иерархической группировки, то в качестве области подвала выводится область заголовка иерархической группировки. Если же она не задана, то выводится область подвала неиерархической группировки. Если и эта область не задана, то выводится область заголовка неиерархической группировки.
Использование макетов оформления в отчетах
Система компоновки данных позволяет использовать различные макеты оформления в отчете. Причем существует возможность использования нескольких макетов оформления для различных элементов отчета. Для управления макетами оформления используются настройки компоновки данных. При использовании конструктора схемы компоновки данных необходимо перейти на закладку "Настройки", а затем выбрать закладку "Другие настройки". На данной закладке находится параметр Макет оформления, позволяющий указывать используемый макет оформления в отчете.
Существуют следующие предопределенные макеты оформления:
- Без оформления;
- Основной - макет оформления по умолчанию;
- Яркий;
- Море;
- Арктика;
- Зеленый;
- Античный.
Создание собственного макета оформления
Собственный макет оформления можно создать, используя конструктор макетов. Для этого необходимо добавить новый макет в папку Общие макеты, находящейся в папке Общие дерева объектов конфигурации. В открывшемся конструкторе макетов необходимо установить тип макета Макет оформления компоновки данных.
Открывшийся редактор макетов оформления позволяет редактировать цвета фона, текста и границы, шрифты, отступы и т.д. областей макета оформления. При этом имена областей, содержащих оформления областей, выделяются жирным шрифтом. Стоит отметить, что существует возможность использования предопределенного макета оформления - для этого необходимо использовать команду Стандартный макет.... Также существует возможность загрузки и сохранения макетов оформления в XML - формате.
Использование макетов оформления из встроенного языка
Для обращения к макетам оформления из встроенного языка предназначено свойство глобального контекста БиблиотекаМакетовОформленияКомпоновкиДанных. Данное свойство является коллекцией макетов оформления и содержит предопределенные макеты оформления, а также макеты оформления, определенные в общих макетах дерева конфигурации.
Данная коллекция имеет следующие методы:
- Индекс(<Макет>) - получает индекс элемента в библиотеке макетов оформления компоновки данных;
- Количество() - возвращает количество элементов в библиотеке макетов оформления компоновки данных;
- Найти(<Имя>) - осуществляет поиск элемента библиотеки макетов оформления компоновки данных по имени;
- Получить(<Индекс>) - получает элемент библиотеки макетов оформления компоновки данных по индексу.
Элементами библиотеки макетов оформления компоновки данных являются объекты типа ЭлементБиблиотекиМакетовОформленияКомпоновкиДанных. Данный объект имеет следующие свойства:
- Имя - имя макета оформления;
- Представление - представление макета оформления.
Также данный объект имеет метод ПолучитьМакет(), который возвращает объект типа МакетОформленияКомпоновкиДанных.
Для редактирования макетов оформления предназначен объект встроенного языка КонструкторМакетаОформленияКомпоновкиДанных. Данный объект можно создать при помощи конструктора, который имеет необязательный параметр - макет оформления. Если макет оформления не указан, то создается новый макет, иначе открывается для редактирования указанный макет оформления. Конструктор макетов оформления имеет следующие методы:
- ПолучитьМакет() - данный метод предназначен для получения редактируемого макета оформления и возвращает значение типа МакетОформленияКомпоновкиДанных;
- Редактировать(<Форма>) - данный метод открывает окно конструктора макета оформления. Параметр <Форма> является необязательным и может содержать значение типа Форма - форму-владельца окна конструктора макетов оформления. При завершении редактирования и нажатии кнопки ОК, конструктор макета оформления вызывает у формы-владельца обработчик события "Обработка выбора". В обработчике данного события можно получить редактируемый макет оформления;
- УстановитьМакет(<Макет оформления>) - данный метод предназначен для установки макета оформления для редактирования и имеет один параметр - <Макет оформления> типа МакетОформленияКомпоновкиДанных.
Поясним использование конструктора макета оформления на следующем примере. Пусть необходимо добавить возможность создания собственного макета оформления в отчете о продажах. Для этого необходимо создать собственную форму отчета, добавить в командную панель данной формы кнопку создания макета оформления, а также переопределить действие по кнопке Сформировать.
В обработчике нажатия на кнопку "Создать макет оформления" происходит создание конструктора макета оформления:
Копировать в буфер обменаПроцедура ДействияФормыСоздатьМакетОформления(Кнопка)
// Создать конструктор макета оформления
Если СвойМакетОформления = Неопределено Тогда
КонструкторМакетаОформления = Новый КонструкторМакетаОформленияКомпоновкиДанных();
Иначе
КонструкторМакетаОформления = Новый КонструкторМакетаОформленияКомпоновкиДанных(СвойМакетОформления);
КонецЕсли;
КонструкторМакетаОформления.Редактировать(ЭтаФорма);
КонецПроцедуры
Пример формы конструктора показан на указанном ниже рисунке.
В обработчике события ОбработкаВыбора формы происходить запоминание созданного в конструкторе макета оформления.
Копировать в буфер обменаПроцедура ОбработкаВыбора(ЗначениеВыбора, Источник)
// Запомнить созданный макет оформления
Если ТипЗнч(ЗначениеВыбора) = Тип("МакетОформленияКомпоновкиДанных") Тогда
СвойМакетОформления = ЗначениеВыбора;
КонецЕсли;
КонецПроцедуры
В обработчике нажатия на кнопку "Сформировать" происходит формирование отчета:
Копировать в буфер обменаПроцедура ДействияФормыСформироватьОтчет(Кнопка)
// Очистим табличный документ - результат
ЭлементыФормы.Результат.Очистить();
// Сгенерируем макет компоновки данных при помощи компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
// В качестве схемы компоновки будет выступать схема самого отчета
// В качестве настроек отчета - текущие настройки отчета
// Данные расшифровки будем помещать в свойство расширения формы - ДанныеРасшифровки
// В качестве макета оформления будем передавать созданный макет оформления или Неопределено,
// если макет оформления не был создан.
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки, СвойМакетОформления);
// Создадим и инициализируем процессор компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки);
// Создадим и инициализируем процессор вывода результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
// Обозначим начало вывода
ПроцессорВывода.НачатьВывод();
// Основной цикл вывода отчета
Пока Истина Цикл
// Получим следующий элемент результата компоновки
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда
// Следующий элемент не получен - заканчиваем цикл вывода
Прервать;
Иначе
// Элемент получен - выведем его при помощи процессора вывода
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
// Обозначем завершение вывода
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры