Условное оформление строк и полей Таблицы значений и Дерева значений (готовый код)

06.12.23

Разработка - Работа с интерфейсом

Очень часто требуется применить условное оформление к строке таблицы значений или Дерева значений в зависимости от значений различных полей. Это может быть оформление цветом строки или полей или запрет редактирования. И хочется иметь такую заготовку, которая проста, удобна и легко применима. Выкладываю код, который всегда применяю в своих разработках. (На уникальность не претендую).

Если вам нужен цвет и запрет редактирования, то просто тупо копируем.

Пример можно скачать здесь Структура подчиненности деревом

 

Все другие хотелки вы сможете допилить, если чуть-чуть поизучаете код вызываемых процедур. 

Две процедуры:

1. УстановитьоформлениеСтрокиЦветом(ИмяПоля,ПравоеЗначение,ЦветОформления,ИмяПоляФормы) 

    Первый параметр - реквизит дерева от которого зависит цвет (ДеревоПоставок - это реквизит формы с типом ДеревоЗначений, ДеревоПоставок.Уровень - колонка этого дерева значений),

    Второй параметр - значение реквизита от которого зависит цвет (если значение колонки Уровень будет равно 3, то заработает наше условное оформление),

    Третий параметр - сам цвет,

    Четвертый параметр - поле на форме, которое будем красить цветом (ДеревоПоставок1 - это элемент формы связанный с нашим реквизитом ДеревоПоставок. Если указываем его, то красим всю строку, если укажем конкретное поле, скажем ДеревоПоставок1Уровень - красим только его).

2. УстановитьЗапретПолейДляРедактирования(ИмяПоля,СписокПравоеЗначение,СписокИмяПоляФормы)

    Первый параметр - реквизит дерева от которого зависит запрет редактирования (ДеревоПоставок - это реквизит формы с типом ДеревоЗначений, ДеревоПоставок.Уровень - колонка этого дерева значений),

    Второй параметр - список значений реквизита из первого параметра, при которых устанавливается запрет редактирования

    Третий параметр - список полей редактирование которых будем запрещать

&НаКлиенте
Процедура УстановитьУсловноеоформлениеДерева() 
	//// оформляем цветом строки
	УстановитьОформлениеСтрокиЦветом("ДеревоПоставок.Уровень",3,Новый Цвет(250,250,206),"ДеревоПоставок1"); 
	//
	// доступность поля Выбран 
	СписокДляЗапрета1 = Новый СписокЗначений;
	СписокДляЗапрета1.Добавить(1); 
	СписокДляЗапрета1.Добавить(4);
	//
	СписокИмяПоляФормы1 = Новый СписокЗначений;
	СписокИмяПоляФормы1.Добавить("ДеревоПоставок1Выбран"); 
	//
	УстановитьЗапретПолейДляРедактирования("ДеревоПоставок.Уровень",СписокДляЗапрета1,СписокИмяПоляФормы1);
	//				
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеСтрокиЦветом(ИмяПоля,ПравоеЗначение,ЦветОформления,ИмяПоляФормы)  
	//
	ЭлементОформления = УсловноеОформление.Элементы.Добавить(); 	
	// Создаем условие отбора
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); // имя поля
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; // либо задаем свой
	//**** Значение для отбора
	ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
	// следует заметить что правым значением может выступать ПолеКомпоновкиДанных формы или списка
	//ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
	//****
	ЭлементОтбора.Использование = Истина;
	
	//Значение свойства УО:
	
	// Установка значения элемента УО
	// Возможно обращение как по индексу так и установка через метод
	//1.
	Элемент = ЭлементОформления.Оформление.Элементы[0];
	Элемент.Значение = ЦветОформления;
	//2.
	//ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
	
	Элемент.Использование = Истина; 
	//  
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляФормы);
	ПолеОформления.Использование = Истина; 	

КонецПроцедуры 
&НаСервере
Процедура УстановитьЗапретПолейДляРедактирования(ИмяПоля,ПравоеЗначение,СписокИмяПоляФормы)  
	//
	ЭлементОформления = УсловноеОформление.Элементы.Добавить(); 	
	// Создаем условие отбора
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); // имя поля
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; // либо задаем свой
	//**** Значение для отбора
	ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
	// следует заметить что правым значением может выступать ПолеКомпоновкиДанных формы или списка
	//ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
	//****
	ЭлементОтбора.Использование = Истина;
	
	//Значение свойства УО:
	
	// Установка значения элемента УО
	// Возможно обращение как по индексу так и установка через метод
	//1.
	//Элемент = ЭлементОформления.Оформление.Элементы[0];
	//Элемент.Значение = ЦветОформления;
	//2.
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
	//Элемент.Использование = Истина; 
	//  
	Для Каждого ЭлТа ИЗ СписокИмяПоляФормы Цикл
		ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
		ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ЭлТа.Значение);
		ПолеОформления.Использование = Истина; 
	КонецЦикла;

КонецПроцедуры

Не забудьте добавить в избранное, чтобы не потерять.

Используется на ERP 2.5.12.147, платформа 8.3.23.1782.

 

Продолжает цикл полезных отчетов и примочек.

1. Анализ использования номенклатуры

2. Форма списка Заказы поставщикам с выводом состава

3. Товары на складах по срокам хранения

4. Структура подчиненности деревом

5. Загрузка из Excel (любой таблицы) в ТЧ документа

6. Панель функций

7. Поддержание запаса на складе

Готовый код условное оформление запрет для редактирования

См. также

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18139    25    6    

39

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    11697    mrXoxot    43    

111

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    6033    smielka    37    

97

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    4954    dimanich70    15    

21

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    13378    809    elcoan    47    

113

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

"Структура подчиненности" или, как ее сейчас называют, "Связанные документы" представлена в виде дерева значений. Подключается через дополнительные отчеты и обработки. Требуется небольшое вмешательство программиста.

2 стартмани

25.04.2023    4743    42    dimanich70    18    

8

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Для тех, кто соскучился по старой доброй Панели функций. Для тех, у кого весь интерфейс уже перебрался в Избранное, кому надоели кнопки Отчеты по складу и т.д.

1 стартмани

13.04.2023    3408    16    dimanich70    3    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. comptr 35 07.12.23 09:37 Сейчас в теме
А мне нравится вот эта обработка: https://infostart.ru/1c/tools/1161402/
Код получается наглядным и коротким, при этом остаётся гибкость настройки.
2. dimanich70 853 07.12.23 17:44 Сейчас в теме
(1)
Это космос. Мне больше нравится что-то простенькое.
3. yuraskas 177 03.06.24 12:10 Сейчас в теме
Автору однозначный плюс. Подскажите, а как сделать чтобы ячейка красилась без Отбора? Если полностью комментирую Отбор, то ничего не окрашивается?
Оставьте свое сообщение