Проблема
Потребовалось отображать установленный пользователем цвет в таблице значений в управляемых формах. На обычных формах это делалось просто, на управляемых предлагается использовать условное оформление. Но проблема в том, что для 24-х битного цвета возможно более 16 миллионов значений и использование условного оформления для этой цели не совсем подходит. Конечно его можно задать программно, но это выглядит как гигантский костыль, потому что придется задать столько условий сколько в списке цветов. Вот было бы здорово еслиб можно было указать в качестве цвета оформления поле компоновки с этим цветом.
Поиск в интернете результатов не дал, кроме советов по условному оформлению. Ну почему должно быть всё так сложно, что может быть проще отображения цвета...
Стоп!
Ячейка таблицы формы может отображать картинку. Попробуем это использовать.
Решение
Оказалось всё очень просто.
У нас есть таблица значений. В одной колонке хранится цвет (тип Цвет, но можно и в любом другом немного адаптировав решение), в другой колонке будем отображать этот цвет (тип Картинка).
Нужно в цикле пробежать все строки таблицы и установить картинку нужного цвета. Где взять столько картинок - будем создавать в памяти "на лету".
- Создаём буфер двоичных данных, например из HEX-строки. Это двоичные данные 24-х битной картинки формата BMP размером 1х1 пиксель.
- Приводим цвет 1С к абсолютному цвету чтобы получить его компоненты.
- Устанавливаем байты в буфере отвечающие за компоненты цвета пикселя.
- Получаем из буфера двоичные данные.
- Получаем картинку из двоичных данных.
Как-то так. Кому просто нужен код и нет желания заморачиваться - качайте обработку из статьи Настройка цветов серий в диаграмме отчета на СКД. Там есть форма выбора цветов.