Цветовое оформление вертикальных группировок таблиц СКД
1C-admin
11.05.2018
Во внешнем отчете продемонстрирован способ цветового оформления вертикальных группировок таблицы СКД без использования макетов. Тестирование производилось на платформе 1С:Предприятие 8.3 (8.3.11.2954)
Во внешнем отчете (управляемые формы) продемонстрирован способ цветового оформления вертикальных группировок таблицы СКД без использования макетов. Цвет колонки задается в условном оформлении конкретной колонки и программно распространяется на весь столбец (ПриКомпоновкеРезультата). Анализируется не сформированный табличный документ (ДокументРезультат), а настройки оформления СКД. Ниже представлена часть кода модуля отчета:
ГоризонтальныеГруппировки = Новый Структура;
ЦветФонаПоУмолчанию = Неопределено;
ИспользоватьЦветаКолонок = Ложь;
Для каждого Макет Из МакетКомпоновки.Макеты Цикл
Попытка
Если ( Макет.Параметры.Количество() > 0 ) И ( Макет.Макет[0].Ячейки.Количество() > 0 ) Тогда
Если ( ТипЗнч( Макет.Макет ) = Тип( "МакетОбластиКомпоновкиДанных" ) ) Тогда
ГоризонтальныйУровень = Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ГоризонтальныйУровень" ).Использование;
Если ГоризонтальныйУровень Тогда
Если ( ЦветФонаПоУмолчанию = Неопределено ) Тогда
ЦветФонаПоУмолчанию = Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ЦветФона" ).Значение;
ИначеЕсли ( ЦветФонаПоУмолчанию <> Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ЦветФона" ).Значение ) Тогда
ИспользоватьЦветаКолонок = Истина;
КонецЕсли;
ГоризонтальныеГруппировки.Вставить( "Смещение" + Формат( ГоризонтальныеГруппировки.Количество(), "ЧН=; ЧГ=0" ), Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ЦветФона" ).Значение );
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЦикла;
Если ИспользоватьЦветаКолонок Тогда
РесурсыНачало = 0;
Для каждого Макет Из МакетКомпоновки.Макеты Цикл
Попытка
Если ( Макет.Параметры.Количество() > 0 ) И ( Макет.Макет[0].Ячейки.Количество() > 0 ) Тогда
Если ( ТипЗнч( Макет.Макет ) = Тип( "МакетОбластиКомпоновкиДанных" ) ) Тогда
ВертикальныйУровень = Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ВертикальныйУровень" ).Использование;
ГоризонтальныйУровень = Макет.Макет[0].Ячейки[0].Оформление.Элементы.Найти( "ГоризонтальныйУровень" ).Использование;
Если НЕ ВертикальныйУровень И НЕ ГоризонтальныйУровень Тогда
РесурсИндекс = Число( СтрЗаменить( Макет.Имя, "Макет", "" ) );
Если ( РесурсыНачало = 0 ) Тогда
РесурсыНачало = РесурсИндекс;
КонецЕсли;
Смещение = ( РесурсИндекс - РесурсыНачало ) % ГоризонтальныеГруппировки.Количество();
Если ( Смещение <> ( ГоризонтальныеГруппировки.Количество() - 1 ) ) Тогда
Для каждого Ячейка Из Макет.Макет[0].Ячейки Цикл
Ячейка.Оформление.Элементы.Найти( "ЦветФона" ).Значение = ГоризонтальныеГруппировки[ "Смещение" + Строка( Смещение ) ];
Ячейка.Оформление.Элементы.Найти( "ЦветФона" ).Использование = Истина;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
а не проще использовать условное оформление для таблицы?
Условное оформление для вертикальных группировок не работает (только на уровне шапки таблицы). Или использовать макет, или программно.
(2) Еще можно в наборе данных, в оформление, указать цвет фона ячейки, но так только поля будут выделены цветом.