База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перевести цвет группировки отчета 1С в абсолютный цвет? › Ответ в теме: Как перевести цвет группировки отчета 1С в абсолютный цвет?
Цвет из ЦветаСтиля.ReportGroup1BackColor обычно не является абсолютным цветом (RGB), а представляет собой цвет в виде WebЦвета или ЭлементаСтиля. Чтобы получить абсолютный цвет, нужно выполнить конвертацию.
Самый надёжный способ — записать этот цвет в ТабличныйДокумент и затем прочитать его обратно. При этом цвет преобразуется в абсолютный вид.
Для этого можно использовать функцию, которая принимает любой цвет и возвращает абсолютный:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Функция ПолучитьАбсолютныйЦвет(ИсходныйЦвет) Экспорт Если ТипЗнч(ИсходныйЦвет) <> Тип("Цвет") Тогда Возврат Неопределено; КонецЕсли; Если ИсходныйЦвет.Вид = ВидЦвета.Абсолютный Тогда Возврат ИсходныйЦвет; КонецЕсли; ТабДок = Новый ТабличныйДокумент; ТабДок.Область("R1C1").ЦветФона = ИсходныйЦвет; ВремФайл = ПолучитьИмяВременногоФайла("mxl"); ТабДок.Записать(ВремФайл, ТипФайлаТабличногоДокумента.MXL7); ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ВремФайл); АбсЦвет = ТабДок.Область("R1C1").ЦветФона; УдалитьФайлы(ВремФайл); Возврат АбсЦвет; КонецФункции |
Пример использования:
|
1 |
АбсолютныйЦвет = ПолучитьАбсолютныйЦвет(ЦветаСтиля.ReportGroup1BackColor); |
В результате вы получите объект Цвет с видом Абсолютный и доступными компонентами RGB.
Если вам нужна строка в HEX-формате, можно дополнительно получить её из абсолютного цвета так:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Функция ПолучитьХексИзАбсолютногоЦвета(АбсЦвет) Экспорт Если ТипЗнч(АбсЦвет) <> Тип("Цвет") Тогда Возврат "" КонецЕсли Если АбсЦвет.Вид <> ВидЦвета.Абсолютный Тогда Возврат "" КонецЕсли ХексКрасный = Формат(АбсЦвет.Красный, "Х2") ХексЗеленый = Формат(АбсЦвет.Зеленый, "Х2") ХексСиний = Формат(АбсЦвет.Синий, "Х2") Возврат ХексКрасный + ХексЗеленый + ХексСиний КонецФункции |
Итог: цвет из ЦветаСтиля не абсолютный, но с помощью записи и чтения через ТабличныйДокумент можно получить абсолютный цвет и работать с его RGB-компонентами.
# Кратко:
— Цвет из ЦветаСтиля — не абсолютный
— Записать цвет в ТабличныйДокумент и прочитать обратно — получите абсолютный цвет
— Используйте приведённую функцию ПолучитьАбсолютныйЦвет для конвертации.