Каталог решений - Макет оформления в отчете с несколькими СКД

Макет оформления в отчете с несколькими СКД

Макет оформления в отчете с несколькими СКД

В наличии

Как заставить работать макет оформления в отчёте с несколькими СКД.

Категория:

Описание

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

 

 

с выбором варианта на форме отчёта.

 

 

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

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

 

 

А с границами, но без цвета группировок.

 

 

Что характерно, если для оформления выбрать другой макет — Арктика, Зеленый, Античный … — оформление работает корректно, с цветовой раскраской.

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

Поиск решения привел к тому, что в макеты отчёта был добавлен макет оформления.

 

 

 

Для макета оформления был задан стандартный макет "Основной".

 

 

В модуле объекта в процедуру ПриКомпоновкеРезультата были добавлены необходимые строки.

 

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
МакетОформления = ЭтотОбъект.ПолучитьМакет("МакетОформления");
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, ДанныеРасшифровки, МакетОформления);

 

И казалось бы всё должно работать! Но нет! Отчёт по обеим СКД упорно продолжал формироваться без цветового оформления.

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

 

 

Результат.

 

 

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

P.S. Макет оформления можно не добавлять, если у вас в конфигурации есть общий макет с нужным оформлением. Например, в КА 2 есть аналог приведённого макета — общий макет "ОформлениеОтчетовБежевый". В этом случае изменится лишь строка получения макета.

МакетОформления = ПолучитьОбщийМакет("ОформлениеОтчетовБежевый");

 

has been added to your cart:
Оформление заказа