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

14.05.20

Разработка - СКД

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

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

 

 

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

 

 

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

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

 

 

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

 

 

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

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

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

 

 

 

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

 

 

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

 

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

 

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

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

 

 

Результат.

 

 

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

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

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    247711    1363    421    

1134

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5311    295    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    16310    ovetgana    112    

106

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9447    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8657    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

27.02.2025    15693    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13264    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9786    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Denic_01 54 20.05.20 21:48 Сейчас в теме
убил вечер на эту фигню, не было у меня ни нескольких скд, ничего
втупую, копирую отчет на базе БСП, удаляю СКД, создаю новую примитивную с нуля и такой результат - оформление группировок не пашет,
причем именно группировок, потому что если менять на всякую там античность и тд цвет заголовка меняется, группировки фиг.
Это косяк платформы чистой воды.

Заметил в итоге интересную вещь - если в пользовательском режиме создать/сохранить вариант, даже ничего не меняя от стандартного, начинает пахать.
plevakin; +1 Ответить
2. 20tanush 10.08.21 21:31 Сейчас в теме
3. osa92 74 11.10.22 10:14 Сейчас в теме
Спасибо, помогло, вот полный код :
	СтандартнаяОбработка = Ложь;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
	МакетОформления = ЭтотОбъект.ПолучитьМакет("МакетОформления");
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, ДанныеРасшифровки, МакетОформления);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРАсшифровки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
user2137488; qazaz2; Юлия:); +3 Ответить
4. osa92 74 11.10.22 10:15 Сейчас в теме
(3) П.С. У меня была 1 схема компоновки данных и два варианта отчета, и не подтягивал основную схему оформления
5. AndyMat 07.07.23 14:30 Сейчас в теме
Добавлю свои две копейки, мне показалось это важным и полезным:
Если в отчете используется общая "ФормаОтчета" из типовой конфы (что очень удобно юзать), то (возможно, в зависимости от версии БСП) недостаточно сбросить галку макета в "Другие настройки". Даже со сброшенной галкой приведенный в (3) код
МакетОформления = ЭтотОбъект.ПолучитьМакет("МакетОформления");
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, ДанныеРасшифровки, МакетОформления);

не поможет. Если смотреть в отладчике, то в зависимости от этой галки и там же имени макета результат:
1. Галка = Да, ИмяМакета = "Основной" -> НастройкиКомпоновкиДанных.ПараметрыВывода.МакетОформления(Использовать=Истина, ИмяМакета = "ОформлениеОтчетовБежевый" (это у меня, вообще макет по умолчанию в БСП в данной конфе)), свой макет не работает
2. Галка = Нет, ИмяМакета = "Основной" -> НастройкиКомпоновкиДанных.ПараметрыВывода.МакетОформления(Использовать=Истина, ИмяМакета = "ОформлениеОтчетовБежевый"), свой макет не работает
3. Галка = Нет, ИмяМакета = "БезОформления" -> НастройкиКомпоновкиДанных.ПараметрыВывода.МакетОформления(Использовать=Ложь, ИмяМакета = "БезОформления") - только так работает собственный макет.
Проще добавить в код (3)
ПараметрВыводаМакет = НастройкиКомпоновкиДанных.ПараметрыВывода.Элементы.Найти("МакетОформления"); 
	Если ПараметрВыводаМакет <> Неопределено Тогда
		ПараметрВыводаМакет.Использование = Ложь;
	КонецЕсли;

B этом случае на галки уже наплевать.
user2137488; wokituk; vendim; +3 Ответить
6. wokituk 17 08.09.24 20:14 Сейчас в теме
В УТ чтобы использовать типовой макет достаточно в Отчет.ПриКомпоновкеРезультата(...)
достаточно

ПараметрВыводаМакет=НастройкиОтчета.ПараметрыВывода.Элементы.Найти("МакетОформления"); 
Если ПараметрВыводаМакет<>Неопределено Тогда
	Если Не ПараметрВыводаМакет.Использование Тогда
		ПараметрВыводаМакет.Использование=Истина;
		ПараметрВыводаМакет.Значение="ОформлениеОтчетовБежевый";
	КонецЕсли; 
КонецЕсли; 
Для отправки сообщения требуется регистрация/авторизация