Раскрасить строки списка справочника в цвета, числовые коды которых содержатся в данной строке

1. user_2010 891 04.06.19 15:12 Сейчас в теме
Добрый день!

Нужна помощь!

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

Не понимаю - как для каждой строки установить свой цвет, который содержится в реквизитах элемента.
Подскажите, плиз!
Найденные решения
5. SlavaKron 04.06.19 15:28 Сейчас в теме
Вместо ГСЧ используйте данные из реквизита.
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка,
	|	Номенклатура.Код КАК Код
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Ссылка В(&МассивСсылок)");	
	Запрос.УстановитьПараметр("МассивСсылок", Строки.ПолучитьКлючи());
	Выборка = Запрос.Выполнить().Выбрать();
	ГСЧ = Новый ГенераторСлучайныхЧисел;
	Пока Выборка.Следующий() Цикл
		Оформление = Строки[Выборка.Ссылка].Оформление["Код"];
		ЦветЧислом = ГСЧ.СлучайноеЧисло(0, 16777215);
		Красный = ЦветЧислом % 256;
		Зеленый = (ЦветЧислом / 256) % 256;
		Синий = (ЦветЧислом / 65536) % 256;

		Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(Красный, Зеленый, Синий));
	КонецЦикла;	
КонецПроцедуры
Показать
6. dhurricane 04.06.19 15:40 Сейчас в теме
(1) Поддержу рекомедацию в (5), за одним лишь исключением: нет необходимости выполнять отдельный запрос для получения данных, т.к. в динамическом списке они уже должны быть.

Пусть в Вашей задаче в справочнике код цвета хранится в реквизите "КодЦвета". Если он не выводится в форме списка, установите напротив него флажок "Использовать всегда". Тогда код обработчика получения данных списка будет таким:
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	Для каждого СтрокаДинСписка Из Строки Цикл
		
		КодЦвета = СтрокаДинСписка.Значение.Данные.КодЦвета;
		
		ЦветПоКоду = ... // здесь преобразуете свой код в Цвет 
		
		ОформлениеКолонкиКод = СтрокаДинСписка.Значение.Оформление["Код"];
		ОформлениеКолонкиКод.УстановитьЗначениеПараметра("ЦветФона", ЦветПоКоду);
		
	КонецЦикла; 
	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1007 04.06.19 15:16 Сейчас в теме
7. user_2010 891 04.06.19 15:46 Сейчас в теме
(2) да управляемые формы 8.3
4. ttt1380 14 04.06.19 15:27 Сейчас в теме
(1) Если УФ, то через УсловноеОформление
6. dhurricane 04.06.19 15:40 Сейчас в теме
(1) Поддержу рекомедацию в (5), за одним лишь исключением: нет необходимости выполнять отдельный запрос для получения данных, т.к. в динамическом списке они уже должны быть.

Пусть в Вашей задаче в справочнике код цвета хранится в реквизите "КодЦвета". Если он не выводится в форме списка, установите напротив него флажок "Использовать всегда". Тогда код обработчика получения данных списка будет таким:
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	Для каждого СтрокаДинСписка Из Строки Цикл
		
		КодЦвета = СтрокаДинСписка.Значение.Данные.КодЦвета;
		
		ЦветПоКоду = ... // здесь преобразуете свой код в Цвет 
		
		ОформлениеКолонкиКод = СтрокаДинСписка.Значение.Оформление["Код"];
		ОформлениеКолонкиКод.УстановитьЗначениеПараметра("ЦветФона", ЦветПоКоду);
		
	КонецЦикла; 
	
КонецПроцедуры
Показать
10. Timur001 14 04.12.22 15:31 Сейчас в теме
(6)
ОформлениеКолонкиКод = СтрокаДинСписка.Значение.Оформление["Код"];
ОформлениеКолонкиКод.УстановитьЗначениеПараметра("ЦветФона", ЦветПоКоду)
11. Timur001 14 04.12.22 15:32 Сейчас в теме
(6)
ОформлениеКолонкиКод = СтрокаДинСписка.Значение.Оформление["Код"];
ОформлениеКолонкиКод.УстановитьЗначениеПараметра("ЦветФона", ЦветПоКоду);


Подскажите пожалуйста как окрасить строку не по конкретным колонкам а сразу всю строку?
3. VmvLer 04.06.19 15:22 Сейчас в теме
С наскока в УО не вставить

Необходимо программно обновлять УО с генерацией элементов
Новый Цвет(R,G,B)
5. SlavaKron 04.06.19 15:28 Сейчас в теме
Вместо ГСЧ используйте данные из реквизита.
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка,
	|	Номенклатура.Код КАК Код
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Ссылка В(&МассивСсылок)");	
	Запрос.УстановитьПараметр("МассивСсылок", Строки.ПолучитьКлючи());
	Выборка = Запрос.Выполнить().Выбрать();
	ГСЧ = Новый ГенераторСлучайныхЧисел;
	Пока Выборка.Следующий() Цикл
		Оформление = Строки[Выборка.Ссылка].Оформление["Код"];
		ЦветЧислом = ГСЧ.СлучайноеЧисло(0, 16777215);
		Красный = ЦветЧислом % 256;
		Зеленый = (ЦветЧислом / 256) % 256;
		Синий = (ЦветЧислом / 65536) % 256;

		Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(Красный, Зеленый, Синий));
	КонецЦикла;	
КонецПроцедуры
Показать
8. user_2010 891 04.06.19 15:46 Сейчас в теме
9. user_2010 891 04.06.19 15:53 Сейчас в теме
(5) (6) огромное спасибо!!! все получилось!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот