0
Добрый день, начал изучать дерево значений. Интересует поиск по дереву. Код получился таким, но работает только для первого уровня, как добавить поиск и по второму уровню?
[CODE]ДеревоЗначений = РеквизитФормыВЗначение("Типы");
Корень1 = ДеревоЗначений.Строки.Добавить();
Корень1.Наименование = "Произвольный";
Корень1.Картинка = БиблиотекаКартинок.ТипНеопределено;
//Корень1.Тип = БиблиотекаКартинок.ТипНеопределено;
Корень2 = ДеревоЗначений.Строки.Добавить();
Корень2.Наименование = "Число";
Корень2.Картинка = БиблиотекаКартинок.ТипЧисло;
Корень3 = ДеревоЗначений.Строки.Добавить();
Корень3.Наименование = "Строка";
Корень3.Картинка = БиблиотекаКартинок.ТипСтрока;
Корень4 = ДеревоЗначений.Строки.Добавить();
Корень4.Наименование = "Дата";
Корень4.Картинка = БиблиотекаКартинок.ТипДата;
Корень5 = ДеревоЗначений.Строки.Добавить();
Корень5.Наименование = "Булево";
Корень5.Картинка = БиблиотекаКартинок.ТипБулево;
//**********
КореньСправочники = ДеревоЗначений.Строки.Добавить();
КореньСправочники.Наименование = "СправочникСсылка";
КореньСправочники.Картинка = БиблиотекаКартинок.Справочник;
Для Каждого Спр Из Метаданные.Справочники Цикл
Справочник = КореньСправочники.Строки.Добавить();
Справочник.Наименование = Спр.Имя;
Справочник.Картинка = БиблиотекаКартинок.Справочник;
КонецЦикла;
ДерЗнач = РеквизитФормыВЗначение("Типы");
ПоискТипа = "Авансовый";
МассивУдаляемыхСтрок = Новый Массив;
Для Каждого Строка_Рек Из ДерЗнач.Строки Цикл
//Первый уровень - работает
КолВоСимвол = СтрНайти(НРег(Строка_Рек.Наименование), НРег(ПоискТипа), НаправлениеПоиска.СНачала);
Если КолВоСимвол = 0 Тогда
Если Строка_Рек.Наименование <> "СправочникСсылка" Тогда
МассивУдаляемыхСтрок.Добавить(Строка_Рек);
КонецЕсли;
КонецЕсли;
//Первый уровень - работает
КонецЦикла;
//Первый уровень - работает
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл
Если ЭлементМассива.Родитель = Неопределено тогда
ДерЗнач.Строки.Удалить(ЭлементМассива);
Иначе
КонецЕсли;
КонецЦикла;
//Первый уровень - работает
ЗначениеВРеквизитФормы(ДерЗнач, "Типы");[/CODE]