Как отредактировать макет отчета 1с

Обновлено: 07.07.2024

Схема компоновки данных представляет собой большой конструктор, состоящий из наборов данных, вычисляемых полей, описания итоговых полей (ресурсов), макетов, вариантов настроек и т.д. Схему компоновки достаточно удобно создавать в конфигураторе при помощи конструктора схемы компоновки.

Задача действительно очень актуальная, участники Мастер-группы по СКД задают много вопросов на эту тему :)

Также традиционно много вопросов возникает при программной работе с пользовательскими настройками отчетов:

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

Общая длительность всех видеоуроков – 1 час 5 минут.

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

00:37 – В каком обработчике можно расположить код для создания настроек компоновки
01:00 – Где в Синтакс-помощнике можно “подсмотреть” свойства, которые потребуются при написании кода
01:58 – Как настроить группировки отчета
02:28 – Какое свойство позволяет создавать вложенные группировки
03:11 – Как включить/выключить отдельные элементы настроек.

00:22 – Как создать структуру отчета
02:00 – Как указать поля, по которым выполняется группировка
04:10 – Как настроить выбранные поля
06:30 – Как создать автополе.

00:22 – Как создать подчиненную группировку
02:05 – Почему в отчете группировки могут выводиться несколько раз
02:40 – Как проверить наличие группировок в структуре отчета.

00:18 – Где в Синтакс-помощнике найти типы данных, необходимые для создания отборов
00:55 – Какие свойства объекта типа ЭлементОтбораКомпоновкиДанных нужно использовать для создания отбора
01:20 – Как создать отбор при помощи программного кода.

00:25– Где в Синтакс-помощнике найти типы данных, необходимые для включения сортировки
00:50 – Какие свойства объекта типа ЭлементПорядкаКомпоновкиДанных нужно использовать для включения сортировки
01:00 – Как установить сортировку при помощи программного кода.

00:25 – Где в Синтакс-помощнике найти типы данных, необходимые для работы с условным оформлением
00:33 – Какие свойства объекта типа ЭлементУсловногоОформленияКомпоновкиДанных нужно использовать
02:08 – Как добавить условное оформление при помощи программного кода
02:31 – Как задать перечень полей, к которым будет применяться условное оформление
03:34 – Как отобрать оформляемые данные
04:15 – Как при помощи программного кода описать применяемое оформление.

01:01 – Как программно установить значение параметра
02:00 – Почему значения параметров, выводимые на форму отчета, не совпадают со значениями в самом отчете
04:25 – Что делает метод ПолучитьНастройки
05:10 – Как нужно работать с пользовательскими настройками
06:17 – Для чего нужно свойство ИдентификаторПользовательскойНастройки
07:10 – Где в типовой конфигурации УТ 11 можно найти пример работы с пользовательскими настройками.

00:58 – Почему отличаются значения параметра в настройках компоновщика и в пользовательских настройках
01:23 – Как связываются между собой настройки компоновщика и пользовательские настройки
03:06 – Как работает метод ПолучитьНастройки и значение какого типа он возвращает

00:34 – Чем отличается отбор в настройках компоновщика и отбор в пользовательских настройках
02:34 – Как используется свойство ИдентификаторПользовательскойНастройки
03:08 – Какой алгоритм должен использоваться для установки значения отбора в пользовательских настройках
03:42 – Как реализовать процедуру для установки значения отбора в пользовательских настройках.

Хотите научиться грамотно создавать отчеты на СКД и дорабатывать отчеты в типовых конфигурациях?

Чтобы подробнее изучить возможности системы компоновки данных и уверенно применять механизм на практике, рекомендуем пройти курс Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных (СКД)


Для этого нужно в нижней части редактируемого окна макета нажать на «Стандартный макет…».



3. Отредактировать макет по своему усмотрению.


4. В процедуре модуля объекта отчёта прописать следующее:


5. Далее – сохранить и сформировать отчёт.



Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Мы на прошлой работе глобальный макет оформления в конфе делали по стандартам какой-то большой конторы. Там просто для всех отчетов ставился макет оформления - и все. Недавно мне потребовалось сделать отдельное оформление макета, причём только по одному отчёту и по определенному отбору в отчёте, но не для всей конфигурации. Ну, и опубликовал пример - может кому и пригодится. "стандарты какой-то большой конторы" обычно означают, что кому-то в какой-то большой конторе по большому счёту делать нехрена, вот и мается, стандарты придумывает. CheBurator; Suslik_Johns; maxopik2; crosby; Трактор; IgorS; rovenko.n; + 7 – Ответить (4)К сожалению, во многих конторах смотрят на флажки, значки и цвета, а не на то, что делают пользователи. У нас был случай, когда руководитель отдела снабжения раскритиковал систему только потому, что в печатной форме не было их логотипа. А то, что система позволяла автоматизировать % 40 из того, что они делали вручную вообще не смотрел.

Просмотры 18872

Загрузки 0

Рейтинг 41

Создание 24.04.19 23:16

Обновление 24.04.19 23:16

№ Публикации 1053727

Тип файла Нет файла

Конфигурация Не имеет значения

Операционная система Windows

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Да


См. также

Полезности применения СКД Промо

Нюансы при работе из СКД на программном уровне.

11.04.2012 52832 logarifm 42

[ПОТРАЧЕНО] Динамическая таблица формы

История одной разработки в далеком 2020 году.

15.10.2021 3413 rpgshnik 47

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом). То вам - сюда.

08.10.2021 1482 e-9 13

Прогресс-бар в поле динамического списка

Изображаем прогресс-бары в колонке динамического списка

23.08.2021 2744 Yashazz 12

Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя Промо

Простой и оригинальный способ сохранять ЦВЕТОВУЮ СХЕМУ и ОФОРМЛЕНИЕ пользователей. Как сохранить ЦВЕТ

22.06.2015 24935 Tatitutu 12

Предотвращение многократного вызова "ПриПолученииДанных" во время поиска в табличном поле в обычных формах

Долго искал решение: как при выводе строк заполнить значениями колонки, которые созданы программно, чтобы, не было тормозов при стандартном поиске. И с минимальными изменениями (легко контролируемыми, при обновлении).

07.04.2021 2068 Vlad_CK 9

Динамический список и поиск. неприятностей

Страх и ненависть в поиске по динамическому списку, или "Кое-что о неоптимальном отборе".

17.03.2021 4500 Yashazz 37

Отображение и редактирование в дереве большого количества настроек/параметров/опций программы, конфигурации, документа, справочника - без программного создания элементов формы

Очень много реквизитов (настроечные опции, параметры) у справочника или документа, и их все необходимо разместить на управляемую форму - лень! Хочется - добавил в метаданные и всё! В публикации отличное, простое и олдскульное решение с открытым кодом, научимся работать с ДанныеФормыДерево, ДеревомЗначений, сделаем быстрый поиск, создадим универсальный инструмент.

11.12.2020 1060 SizovE 6

Хранение и редактирование дополнительных параметров в регламентированном отчете. Для начинающих. Промо

Для начинающих. Как редактировать дополнительные параметры регламентированного отчета, изменив только модуль формы и модуль объекта. Как сохранить дополнительные параметры в данных отчета.

22.01.2014 21058 KapasMordorov 4

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

Большое количество динамических списков на форме, большое количество условий, долгое интерактивное добавление условий, оформление по значению элементов справочников - всё это не позволяет использовать интерактивный режим назначения условного оформления динамического списка. В публикации с открытым кодом детально разберем программное решение назначения условного оформления, создадим универсальную функцию для оформления списка.

30.11.2020 6392 SizovE 4

[mobile] Переносим HTML интерфейс на 1С

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020 8810 leobrn 78

Цветовая схема конфигуратора в стиле OneScript

Цветовая схема конфигуратора 1С максимально приближенная к стандартной цветовой схеме OneScript в VS Code.

01.10.2020 1385 DmitrySinichnikov 3

Программное генерирование кнопочек для удобного управления уровнями группировки в отчетах (версия 2a). Промо

В табличных документах 1С 8 имеется отличная возможность использования группировок, но управление уровнями группировок через контекстное меню не очень удобное. В своих отчетах для управления уровнями группировок я использую маленькие кнопочки на поле табличного документа - это намного удобнее и быстрее, чем через контекстное меню.

09.04.2011 47331 mtv:) 75

Рендеринг элементов управляемого интерфейса

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020 3906 kalyaka 5

Переопределение представления ссылочного значения

Переопределение представления ссылочного значения

17.09.2020 4957 sam441 15

[Общий модуль] Динамическое формирование интерфейса

Версия 2.0.0.1 + добавил GitHub

28.08.2020 13046 rpgshnik 74

Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов. Промо

Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов. Очень часто необходимо программно сформировать заголовок отчета, например добавить туда наименование валюты, в которой формируется отчет. Можно использовать макеты, но во многих случаях это не оправданно.

27.07.2012 32855 milkers 10

Медленно формируются отчеты в БП 3, способ исправления

При формировании любых отчетов, но в особенности оборотно-сальдовой ведомости в бухгалтерии 3, очень долго формировался отчет, ПОЯВЛЯЛСЯ ЖЕЛТЫЙ КОТ, разумеется у бухгалтера невроз, да и у меня тоже. Что только ни делал: тестирование и исправление с пересчетом итогов, настройка SQL, отключение фоновых заданий, обновление платформы и конфигурации, а толку нет, регламентные операции по скулю тоже сделал. И что же сделал, а вот что:

21.07.2020 3045 VID1234 8

Регистр сведений как дополнение объекта

Подключаем регистры сведений к формам связанных с ними объектов, быстро и надежно.

19.05.2020 5104 Infector 14

Перенос инструкций из word во встроенную справку 1С с сохранением картинок и форматирования

Делюсь простым и удобным способом переноса справки/инструкций из ворда (и не только) во встроенную справку 1С с сохранением картинок и форматирования.

22.04.2020 5564 77dream77 21

Рабочее место кассира для touch-screen и программируемой клавиатуры продавца в «1С: Розница» Промо

Вашему вниманию предлагается текст одного из технических проектов «1С: Розница 8», он описывает процесс разработки интерфейса РМК, с которым, нынче, работают кассиры очень многих магазинов.

29.11.2012 48329 aavolkoff 50

Функциональные опции. Управление доступным функционалом для пользователей

Как управлять доступным функционалом в привязке к пользователям программы.

24.03.2020 2149 Evilgrym 2

Форма выбора для реквизита с составным типом данных

Возник вопрос: как открыть форму выбора для реквизита, имеющего составной тип данных, да еще и отображаемый в виде надписи?

11.03.2020 6038 rule_2 3

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

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

18.02.2020 6525 randomus 20

Бухгалтерия предприятия 3.0 интерфейс, аналогичный 1С:Бухгалтерии 7.7; Промо

Бухгалтерия предприятия, редакция 3.0, версия 3.0.14. Добавлена возможность использовать интерфейс, аналогичный 1С:Бухгалтерии 7.7;

20.09.2012 37963 dour-dead 18

[Шпаргалка] Предустановка типа для составного реквизита

Для реквизита составного типа необходимо ограничить список выбора типов.

18.02.2020 5458 rpgshnik 6

СКД. Шаг 3. Используем макеты для оформления отчета

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

13.01.2020 38309 aximo 19

Добавление собственного поля и состояния в настройки доступности по состоянию в 1С:Документооборот

В данной публикации я хочу описать процесс добавления собственного поля и состояния в функционал настройки доступности по состоянию в 1С:Документооборот.

30.12.2019 6796 pavelpribytkin96 2

Выбор вариантов отчета в "Управление торговлей" ред. 11 Промо

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

Всем привет, всех с наступившим Новым 2020 годом! В данной статье я предлагаю вам разобрать такой интересный функционал как использование собственных макетов в системе СКД. Отмечу, что за свою достаточно продолжительную практику (порядка 15 лет), я, наверное, всего пару-тройку раз встречал в чужих отчетах (не в типовых) использование данной возможности.

Сообщество приветствует чистоту и оптимизацию исполняемого кода обработок или отчетов, но могу точно сказать по своему опыту, что в сотнях отчетах, прошедших через меня – я не встречал ни одного, который бы хотелось отности к категории "идеальный, по всем правилам", с которого бы хотелось взять пример. 99 % отчетов сделаны «на отвяжись» по принципу - работает, данные показывает, не важно сколько он там строится по времени. Но и многие пользователи даже не могут объяснить, как получается та или иная цифра в отчетах (особенно производственных). Хотя, система компоновки данных, по-моему мнению, - это даже пользовательский функционал в какой-то степени. Какие-либо «улучшения» отчета с использованием всех возможностей СКД – это что-то из ряда вон выходящее.

Ну да ладно. Давайте рассмотрим использование собственного макета в отчете на СКД. Надеюсь, что этот функционал будет полезен вам для использования в ваших разработках. Постараюсь описать как можно подробнее и проще - "на пальцах". Итак, начнем с подготовки самого отчета в СКД.

Подготовка отчета в СКД

Воспользуемся типовой конфигурацией Розница 2.2 на платформе предприятия 8.3.15.1700. Подготовим простой отчет для определения количества и суммы продаж по организации/кассе в разрезе дней за выбранный период.

Для этого напишем запрос по регистру накопления "Продажи" (обороты) в макете компоновки данных. Поскольку, в этом регистре нет данных о КассеККМ, с которой была совершена продажа, то мы левым соединением с регистратором получаем кассу продажи из документа. С условием, что документ-регистратор является отчетом розничных продаж. Так же я добавлю несколько вспомогательных полей, которые потребуются в отчете на основе собственного макета.

В общем виде набор данных запрос выглядит вот так:

На закладке "Ресурсы" определим какие из полей являются ресурсами и выберем выражение расчета этого поля по другим колонкам.


Рис.1. Определяем ресурсы отчета.

Далее, определим параметры данного отчета. В качестве "Периода" реализуем задействуем такую возможность СКД как тип "СтандартныйПериод" (можете здесь поставить "галочку" для дальнейшего использования в ваших СКД отчетах вне зависимости как вы будете их реализовывать). См. как это сделать:


Рис.2. Создаем параметр "Период" в отчете на основе дат начала и окончания.

Затем, в "Настройках" выбираем доступные поля и ресурсы для отображения отчета.


Рис.3. Создаем саму таблицу отчета с выбранными полями.

В пользовательских настройках отчета включаем созданный нами параметр "Период":


Рис.4. Включаем в пользовательские настройки параметр "Период".

Все, самое основное выполнено - этого достаточно, чтобы отчет выводил информацию. Отчет выглядит вот так:


Рис.5. Сформированный отчет в СКД в "базовом варианте".

Обычно, на этом все и заканчивается. Но, я продолжу и перехожу к работе с собственными макетами в следующем разделе.

Реализация собственного макета оформления. Подготовка настроек

Начну с того, что создам копированием новый вариант настройки отчета. Пусть он называется "Основной1". В общем виде эта настройка выглядит вот так:


Рис.6. Настройка отчета для собственного макета.

Распишу каждую строку данной настройки:

Период - этот параметр отвечает за день, на который будут создаваться отчеты по кассам. Далее, к этому параметру я "прикручу" дополнительные реквизиты и буду использовать его как "шаблон".

Касса, НомерОтчета, Магазин, ДатаОтчета (СводныйЗаголовок) - в разрезе этой группы параметров (своего рода "фильтр") я буду отбирать данные продаж номенклатуры.

Далее, идут строки (в скобках я присваиваю персональное имя (правой кнопкой - "Установить имя. ") каждой строке - ШапкаМ, СтрокаТаблицы, ИтогиТаблицы):

ДетальныеЗаписи (ШапкаМ)

ДетальныеЗаписи (СтрокаОтчета)

ДетальныеЗаписи (ИтогиТаблицы)

ДетальныеЗаписи - это "набор реквизитов", который будет использоваться в этом "блоке".

Наборы реквизитов для группировок такие:

Для (СводныйЗаголовок) - Касса, НомерОтчета, Магазин, ДатаОтчета,

для (ШапкаМ) - реквизиты отсутствуют,

для (СтрокаОтчета) - Номенклатура, КоличествоОборот, СтоимостьОборот,

для (ИтогиТаблицы) - КоличествоОборот, СтоимостьОборот.

Везде снимаем галку "Авто".

Реализация собственного макета оформления. Рисуем новый макет

Переходим на закладку "Макеты" и начнем создавать требуемый макет. В итоговом виде, он выглядит вот так:


Рис.7. Настройка отчета для собственного макета.

Опишу процесс создания этого макета.

Процесс создания печатной формы макета СКД не отличается от процесса создания печатных форм документов. Также есть параметры, шаблоны и текст. В данном примере, я использую параметры в таблице продаж, шаблоны - в шапке отчета.

Все, макет нарисован. Он выглядит так как нам нужно.

Следующим шагом, в окне Макет - Область я создаю записи о ранее созданных группировках, попутно указывая значения их параметров. Это выглядит вот так:


Рис.8. Добавлена группировка "СводныйЗаголовок" и заполнены параметры макета для этой группировки.


Рис.9. В группировке "ИтогиТаблицы" используем параметры "КоличествоОборот" и "СтоимостьОборот".


Рис.10. "СтрокаОтчета" - основная группировка отчета - Номенклатура, СтоимостьОборот, КоличествоОборот.

СводныйЗаголовок, ИтогиТаблицы, СтрокаОтчета являются "Макетами группировки". ШапкаМ - это "Макет заголовка группировки", Период - это "Параметр".

Далее, к каждому макету привязываем область (см. рис.10). Область можно "накликать", удерживая кнопку "Ctrl".

К параметру "Период" я привязал целый шаблон.

Так, печатная форма в СКД нарисована, макеты группировок добавлены и их параметры заполнены, области привязаны, протестируем обработку, перейдя к следующему разделу.

Тестирование задачи

Теперь, предлагаю протестировать задачу. В нашем СКД отчете "вшито" две настройки "Основная" и "Основная1" с использованием собственных макетов.

Проверим работоспособной каждой из них:

Запускаем предприятие, выбираем период и формируем отчет в настройке "Основная1" (с макетом), такая картина:


Рис.11. Отчет СКД с использованием макета.

В разрезе периода 01.08.2019 - 04.08.2019 (с общей выручкой), в разрезе касс (по выручке) и что наторговали и за сколько в разрезе каждой кассы.

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


Рис.12. Отчет СКД без использования макетов. Период использует шаблон.

Данные совпали, все работает. Переходим к разделу "Выводы".

Выводы

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

Еще раз хочу отметить, что функционал использования макетов я очень редко встречал в отчетах СКД других программистов. Обычно - это "основная" компоновка, а как она собирается - по каким данным - этого уже никто не помнит. Как смешно не звучит, но это реалии.


Рис.13. Выбор варианта настройки отчета.

Какой вывод можно сделать сразу (я осторожно напишу) - возможный частичный отказ от внешних печатных форм документов. Функционал макетов СКД позволяет создать печатную форму или группу печатных форм для документов конфигурации. Как вариант - это возможно запустить "поток" печатных форм документа или даже нескольких документов разного вида при условии корректного составления запроса или "правильной внешней" таблицы для передачи в СКД.

Отмечу, что макеты "накликиваются" без написания кода. Отсюда делаю еще один вывод - написанный запрос (переданная таблица) в СКД - это уже 90% решения вашей типовой задачи - будь то отчет или "поток" печатных форм.

За исключением запроса (язык запросов) - в примере нет программирования.

Еще один плюс - это возможно "засунуть" в параметр шаблон-конструкцию, как сделано на примере параметра "период", где я использую шаблон <Дата: [ПЕРИОД] (выручка : [Выручка], руб.)> из макета.

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

Было бы приятно, чтобы вы поддержали данную статью, в свою очередь постараюсь написать еще что-нибудь полезное и интересное для вас. Пусть эта статья будет для вас своего рода "шпаргалкой" для запоминания этого алгоритма, как и для меня в частности.

Спасибо, что дочитали статью до конца. Всем привет!

Предыдущие материалы

Так же, прошу посмотреть мои предыдущие статьи по использованию системы компоновки данных:

Программная доработка макета построителя отчета

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

Свойство построителя отчета "Макет"

Объект ПостроительОтчета имеет свойство Макет. Это свойство содержит макет - табличный документ, который будет использован для вывода отчета. В случае, когда данное свойство не установлено, построитель отчета генерирует макет автоматически при каждом доступе к значению данного свойства и использует сгенерированный макет для вывода отчета. Если программно изменить значение данного свойства, то построитель отчета перестает генерировать макет, а для вывода отчета будет использовать установленный макет. Для того чтобы построитель отчета продолжил автоматическую генерацию макета, необходимо "сбросить" свойство Макет, присвоив ему значение Неопределено.

Пример установки макета:

Пример сброса макета и получения автоматически сгенерированного макета:

Изменение сгенерированного макета

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

В данном примере были изменены цвет фона и цвет текста во всем макете.

Изменение оформительских свойств для определенных полей

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

В приведенном примере в макете ищется поле Количество и устанавливается формат поля - два знака после запятой.

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

Изменение полей для определенных группировок

Иногда возникает потребность исключения некоторых ресурсов из определенных группировок. Например, требуется выводить поле ВалютнаяСуммаОборот только для группировок, которые располагаются после группировки Валюта, и не выводить для всех вышестоящих группировок. Такой функциональности можно достичь, если доработать макет, удалив из группировок, которые находятся выше группировки Валюта, поле ВалютнаяСуммаОборот.

Работа с макетом оформления

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

Использование макетов оформления

Макеты оформления компоновки данных предназначены для оформления отчетов. При помощи макетов оформления можно указывать различным областям отчета определенные цвета фона, текста, шрифты и т.д.

Типы областей макета оформления

Выводимый отчет можно разделить на области, указанные на рис. 1

На указанном рисунке:

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

Группировку отчета можно представить в виде областей, указанных на рис. 2

На указанном рисунке:

  • заголовок - область группировки, содержащая заголовок группировки верхнего уровня,
  • информация - область группировки, содержащая текст установленных для группировки верхнего уровня отборов,
  • заголовок таблицы - область группировки, содержащая имена выводимых полей,
  • заголовки группировки - области, содержащие значения выводимых полей группировки. Данные области выводятся в начале группировки,
  • подвалы группировки - области, содержащие значения выводимых полей. Данные области выводятся в конце группировки,
  • детальные записи - область, содержащая значения выводимых полей детальных записей,
  • общие итоги по вертикали - область, содержащая итоги по группировке.

Следует заметить, что в качестве заголовков или подвалов группировки могут использоваться заголовки и подвалы иерархической группировки. Также перед заголовками группировок могут находиться области заголовка и информации , отображающие заголовок вложенной группировки и отбор соответственно.

Группировку отчета, отображаемую в виде списка, можно представить в виде областей, указанных на рис. 3

На указанном рисунке:

заголовок - область группировки, содержащая заголовок, информация - область группировки, содержащая текст установленных для группировки отборов, заголовки группировки списка - области, содержащие значения выводимых полей группировки. Данные области выводятся в начале группировки, подвалы группировки списка - области, содержащие значения выводимых полей. Данные области выводятся в конце группировки, детальные записи списка - область, содержащая значения выводимых полей детальных записей, общие итоги по вертикали списка - область, содержащая итоги по группировке.

Следует заметить, что в качестве заголовков или подвалов группировки могут использоваться заголовки и подвалы иерархической группировки.

Таблицу можно представить в виде областей, указанных на рис. 4

На указанном рисунке:

информация - область таблицы, содержащая текст установленных для таблицы отборов, заголовок таблицы - область таблицы, содержащая имена выводимых в строках таблицы полей, заголовки и подвалы группировки колонки - области таблицы, содержащие выводимые в колонках таблицы поля. Стоит отметить, что в качестве заголовков и подвалов группировок колонок могут использоваться заголовки и подвалы иерархических группировок колонок, заголовки и подвалы группировки - области таблицы, содержащие выводимые в строках таблицы поля. В качестве заголовков и подвалов группировок также могут использоваться заголовки и подвалы иерархических группировок строк. Также перед заголовками группировок строк могут находиться области заголовка и информации , отображающие заголовок вложенной группировки строк и отбор соответственно, ресурсы заголовка группировки , ресурсы подвала группировки и ресурсы детальных записей - области таблицы, содержащие выводимые поля ресурсов. Для иерархических группировок используются, соответственно ресурсы заголовка иерархической группировки и ресурсы подвала иерархической группировки, общие итоги по вертикали - область, содержащая итоги по колонкам таблицы.

Таким образом, в макете оформления существуют следующие типы областей :

  1. ЗаголовокГруппировки (GroupHeader) - область заголовка группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  2. ПодвалГруппировки (GroupFooter) - область подвала группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  3. ЗаголовокИерархическойГруппировки (HierarchicalGroupHeader) - область заголовка иерархической группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  4. ПодвалИерархическойГруппировки (HierarchicalGroupFooter) - область подвала иерархической группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  5. ЗаголовокГруппировкиСписка (ListGroupHeader) - область заголовка группировки списка . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  6. ПодвалГруппировкиСписка (ListGroupFooter) - область подвала группировки списка . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  7. ЗаголовокИерархическойГруппировкиСписка (ListHierarchicalGroupHeader) - область заголовка иерархической группировки списка . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  8. ПодвалИерархическойГруппировкиСписка (ListHierarchicalGroupFooter) - область подвала иерархической группировки списка . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  9. ЗаголовокГруппировкиКолонки (ColumnGroupHeader) - область заголовка колонки таблицы . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  10. ПодвалГруппировкиКолонки (ColumnGroupFooter) - область подвала колонки таблицы . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  11. ЗаголовокИерархическойГруппировкиКолонки (ColumnHierarchicalGroupHeader) - область заголовка иерархической колонки таблицы . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  12. ПодвалИерархическойГруппировкиКолонки (ColumnHierarchicalGroupFooter) - область подвала иерархической колонки таблицы . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  13. ДетальныеЗаписи (Detail) - область детальных записей. Для данной области значение уровня должно быть всегда равным 0;
  14. ДетальныеЗаписиСписка (ListDetail) - область детальных записей списка. Для данной области значение уровня должно быть всегда равным 0.
  15. РесурсыЗаголовкаГруппировки (ResourcesGroupHeader) - область ресурсов заголовка группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  16. РесурсыПодвалаГруппировки (ResourcesGroupFooter) - область ресурсов подвала группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  17. РесурсыЗаголовкаИерархическойГруппировки (ResourcesHierarchicalGroupHeader) - область ресурсов заголовка иерархической группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  18. РесурсыПодвалаИерархическойГруппировки (ResourcesHierarchicalGroupFooter) - область ресурсов подвала иерархической группировки . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  19. РесурсыДетальныхЗаписей (ResourcesDetail) - область ресурсов детальных записей. Для данной области значение уровня должно быть всегда равным 0;
  20. ИтогПоРесурсамЗаголовкаГруппировки (ResourcesTotalGroupHeader) - область итогов по ресурсам заголовка группировки;
  21. ИтогПоРесурсамПодвалаГруппировки (ResourcesTotalGroupFooter) - область итогов по ресурсам подвала группировки;
  22. ИтогПоРесурсамЗаголовкаИерархическойГруппировки (ResourcesTotalHierarchicalGroupHeader) - область итогов по ресурсам заголовка иерархической группировки;
  23. ИтогПоРесурсамПодвалаИерархическойГруппировки (ResourcesTotalHierarchicalGroupFooter) - область итогов по ресурсам заголовка колонки таблицы;
  24. ИтогПоРесурсамДетальныхЗаписей (ResourcesTotalDetail) - область итога по ресурсам детальных записей. Для данной области значение уровня должно быть всегда равным 0;
  25. ОбщиеИтогиПоВертикали (VerticalOverall) - область общего итога по вертикали . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  26. ОбщиеИтогиПоВертикалиСписка (ListVerticalOverall) - область общего итога по вертикали списка . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  27. ЗаголовокТаблицы (TableHeader) - область заголовка таблицы или группировки. Для данной области значение уровня должно быть всегда равным 0;
  28. ПоУмолчанию (Default) - область по умолчании. Для данной области значение уровня должно быть всегда равным 0;
  29. Заголовок (Title) - область заголовка отчета . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию ;
  30. Информация (Information) - область информации . Для данной области можно указать значение уровня группировки, при этом значение уровня, равное 0, подразумевает область по умолчанию .

Существуют следующие особенности вывода заголовков и подвалов группировок :

  • Если не задана область подвала неиерархической группировки, то в качестве области подвала выводится область заголовка группировки ;
  • Если для иерархической группировки не задана область заголовка, то в качестве области заголовка выводится область заголовка неиерархической группировки ;
  • Если не задана область подвала иерархической группировки, то в качестве области подвала выводится область заголовка иерархической группировки. Если же она не задана, то выводится область подвала неиерархической группировки . Если и эта область не задана, то выводится область заголовка неиерархической группировки.

Использование макетов оформления в отчетах

Система компоновки данных позволяет использовать различные макеты оформления в отчете. Причем существует возможность использования нескольких макетов оформления для различных элементов отчета. Для управления макетами оформления используются настройки компоновки данных. При использовании конструктора схемы компоновки данных необходимо перейти на закладку " Настройки " , а затем выбрать закладку " Другие настройки " . На данной закладке находится параметр Макет оформления , позволяющий указывать используемый макет оформления в отчете.


Существуют следующие предопределенные макеты оформления :

  • Без оформления ;
  • Основной - макет оформления по умолчанию ;
  • Яркий ;
  • Море ;
  • Арктика ;
  • Зеленый ;
  • Античный.

Создание собственного макета оформления

Собственный макет оформления можно создать, используя конструктор макетов. Для этого необходимо добавить новый макет в папку Общие макеты , находящейся в папке Общие дерева объектов конфигурации. В открывшемся конструкторе макетов необходимо установить тип макета Макет оформления компоновки данных .


Открывшийся редактор макетов оформления позволяет редактировать цвета фона, текста и границы, шрифты, отступы и т.д. областей макета оформления. При этом имена областей, содержащих оформления областей, выделяются жирным шрифтом. Стоит отметить, что существует возможность использования предопределенного макета оформления - для этого необходимо использовать команду Стандартный макет. . Также существует возможность загрузки и сохранения макетов оформления в XML - формате.


Использование макетов оформления из встроенного языка

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

Данная коллекция имеет следующие методы :

  • Индекс( <Макет> ) - получает индекс элемента в библиотеке макетов оформления компоновки данных ;
  • Количество() - возвращает количество элементов в библиотеке макетов оформления компоновки данных ;
  • Найти( <Имя> ) - осуществляет поиск элемента библиотеки макетов оформления компоновки данных по имени ;
  • Получить( <Индекс> ) - получает элемент библиотеки макетов оформления компоновки данных по индексу.

Элементами библиотеки макетов оформления компоновки данных являются объекты типа ЭлементБиблиотекиМакетовОформленияКомпоновкиДанных . Данный объект имеет следующие свойства :

  • Имя - имя макета оформления ;
  • Представление - представление макета оформления.

Также данный объект имеет метод ПолучитьМакет() , который возвращает объект типа МакетОформленияКомпоновкиДанных .

Для редактирования макетов оформления предназначен объект встроенного языка КонструкторМакетаОформленияКомпоновкиДанных . Данный объект можно создать при помощи конструктора, который имеет необязательный параметр - макет оформления. Если макет оформления не указан, то создается новый макет, иначе открывается для редактирования указанный макет оформления. Конструктор макетов оформления имеет следующие методы:

  • ПолучитьМакет() - данный метод предназначен для получения редактируемого макета оформления и возвращает значение типа МакетОформленияКомпоновкиДанных ;
  • Редактировать( <Форма> ) - данный метод открывает окно конструктора макета оформления. Параметр <Форма> является необязательным и может содержать значение типа Форма - форму-владельца окна конструктора макетов оформления. При завершении редактирования и нажатии кнопки ОК, конструктор макета оформления вызывает у формы-владельца обработчик события "Обработка выбора". В обработчике данного события можно получить редактируемый макет оформления ;
  • УстановитьМакет( <Макет оформления> ) - данный метод предназначен для установки макета оформления для редактирования и имеет один параметр - <Макет оформления> типа МакетОформленияКомпоновкиДанных .

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


В обработчике нажатия на кнопку " Создать макет оформления " происходит создание конструктора макета оформления :

Пример формы конструктора показан на указанном ниже рисунке.


В обработчике события ОбработкаВыбора формы происходить запоминание созданного в конструкторе макета оформления.

В обработчике нажатия на кнопку " Сформировать " происходит формирование отчета :

Читайте также: