Вывод произвольных цветов построчно в динамическом списке
Клиенту нужно было раскрасить список договоров. Он хотел, чтобы у договора было поле цвет, которое можно было бы выбирать из списка. И договора выделялись в динамическом списке определенным цветом.
Сначала мне показалось, что это сложно сделать, нужно добавлять условное оформление для каждого элемента справочника цветов. Но поискал и нашел решение без условного оформления, работающее как и на обычных формах с оформлением каждой строки.
Добавил справочник цветов и поле дор_Цвет в справочник договоров:

В текст запроса динамического списка по договорам добавил извлечение цвета RGB:
ЕстьNULL(СправочникДоговора.дор_Цвет.ЦветRGB, "") как ЦветRGB
В настройке списка добавил для поля ЦветRGB галочку «Использовать всегда».
&НаСервереБезКонтекста Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) Для Каждого СтрокаСписка Из Строки Цикл ДанныеСтроки = СтрокаСписка.Значение.Данные; // Если логика вычислений пройдена Если НЕ ДанныеСтроки.Просрочен И ДанныеСтроки.ЦветRGB <> "" Тогда // Устанавливаем оформление через коллекцию Оформление Попытка Цвет = ЦветИзСтрокиRGB(ДанныеСтроки.ЦветRGB); Для Каждого Поле Из СтрокаСписка.Значение.Оформление Цикл Поле.Значение.Элементы.Найти("ЦветФона").Значение = Цвет; КонецЦикла; Исключение КонецПопытки; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ЦветИзСтрокиRGB(HEX) Экспорт RED = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 2, 2)); GREEN = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 4, 2)); BLUE = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 6, 2)); Возврат Новый Цвет(RED, GREEN, BLUE); КонецФункции
В алгоритме пришлось игнорировать в явном виде те договора, для котрых используется стандартное условное оформление (для просроченных договоров).
Также не нашел, как сразу для всей строки установить оформление, поэтому в цикле разукрашиваю все элементы.
Попытку использую на случай, если цвет занесен в справочник неправильно.
Объем: 1 час. Платформа: 8.3.17.1386




Свежие комментарии