Загрузка...

обратиться в техподдержку

Условное оформление программно 1с 8.3

Разработка программирование
05 марта 2024

программно создадим Условное оформление динамического списка 1с 8.3

Для этого можно воспользоваться такой конструкцией

 
&НаСервере
Процедура УсловноеОформление()
  НовЭлУслОформ = Список.УсловноеОформление.Элементы.Добавить();
  ОформЦветаФона = НовЭлУслОформ.Оформление.Элементы.Найти("ЦветФона");
  ОформЦветаФона.Значение = ПолучитьЦветRGB(СтрокаТЧ.Цвет);
  ОформЦветаФона.Использование = Истина;

  НастройкаОтбора = НовЭлУслОформ.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
  НастройкаОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Цвет");
  НастройкаОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
  НастройкаОтбора.ПравоеЗначение = СтрокаТЧ.Цвет;

  ОформПоля = НовЭлУслОформ.Поля.Элементы.Добавить();
  ОформПоля.Поле = Новый ПолеКомпоновкиДанных("Цвет");
  ОформПоля.Использование = Истина;
КонецПроцедуры

Дополнительно потребуются функции получения цвета из строки

 
// Функция возвращает цвет 
Функция ПолучитьЦветRGB(Цвет)
	Если Найти(Цвет, "#") > 0 Тогда				  
		Red = Сред(Цвет, 2,2);
		Green = Сред(Цвет, 4,2);
		Blue = Сред(Цвет, 6);
		Возврат Новый Цвет(ПолучитьВДесятичномВиде(Red), ПолучитьВДесятичномВиде(Green),
		ПолучитьВДесятичномВиде(Blue)); 
	Иначе
		Возврат WebЦвета[Цвет];
	КонецЕсли;
КонецФункции

// Функция возвращает конвертированное число в 10-ой системе счисления
Функция ПолучитьВДесятичномВиде(Число)
	Число = СокрЛП(Число);	
	Счетчик = СтрДлина(Число);
	мЧисло = 0;
	Степень = 0;
	Пока Счетчик > 0 Цикл
		мЧисло = мЧисло + (Число( ОпределитьЧисло (ВРег(Сред(Число, Счетчик, 1)))) * Pow(16, Степень));		
		Счетчик = Счетчик - 1;
		Степень = Степень + 1;
	КонецЦикла;
	мЧисло = Строка(мЧисло);
	Пока Найти(мЧисло, " ") <> 0 Цикл
	   мКодКарты = СтрЗаменить(мЧисло, " ", "");
	КонецЦикла;
	Возврат мЧисло;
КонецФункции

// Функция возвращает число соответсвующее знаку
Функция ОпределитьЧисло(Знак)
	Если Знак = "A" Тогда
		Знак = 10;
	ИначеЕсли Знак = "B" Тогда
		Знак = 11;
	ИначеЕсли Знак = "C" Тогда
		Знак = 12;
	ИначеЕсли Знак = "D" Тогда
		Знак = 13;
	ИначеЕсли Знак = "E" Тогда
		Знак = 14;
	ИначеЕсли Знак = "F" Тогда
		Знак = 15;	
	КонецЕсли;
	Возврат Знак;
КонецФункции

условное оформление программно 1с 8.3


Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в МИТ

Наши сервисы по этой теме:


заполните, пожалуйста
укажите Ваш e-mail
укажите Ваш номер телефона для связи