Если вам нужен цвет и запрет редактирования, то просто тупо копируем.
Пример можно скачать здесь Структура подчиненности деревом
Все другие хотелки вы сможете допилить, если чуть-чуть поизучаете код вызываемых процедур.
Две процедуры:
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. Структура подчиненности деревом