|
Дерево Значений рекурсивный обход |
☑ |
0
andrey i1c
12.08.20
✎
16:29
|
Есть Дерево значений на форме это сообственно объекты метаданных с несколькими уровнями вложенностью
Ниже алгоритм обрабатывает ветку "Обшие" и все что внутри нее. А также после пробегает по верхнему уровню Константы, Документы, Справочники и т.д. но в них не заходит?
Что не так или необходимо учитывать как то уровни обхода?
&НаСервере
Процедура ОбойтиСтрокиНаСервере()
ОбработкаОбъект = РеквизитФормыВЗначение("ДеревоОбъектовМетаданных");
ОбойтиСтроки(ОбработкаОбъект);
КонецПроцедуры // ПрименитьКПользователюНаСервере()
&НаСервере
Процедура ОбойтиСтроки(ОбработкаОбъект)
Для Каждого Строка Из ОбработкаОбъект.Строки Цикл
Если Строка.Строки.Количество() > 0 Тогда
Сообщить(Строка.Представление);
ОбойтиСтроки(Строка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ОбойтиСтроки()
|
|
1
andrey i1c
12.08.20
✎
16:32
|
причем и в ветке "Общие" заходит только на один уровень внутрь, а то что дальше пропускает
|
|
2
H A D G E H O G s
12.08.20
✎
16:48
|
МоеДерево.Колонки.Добавить("КолонкаДляОбхода");
СтруктураПоиска=Новый Структура("КолонкаДляОбхода",Неопределено);
МассивСтрок=МоеДерево.Строки.НайтиСтроки(СтруктураПоиска,Истина);
Для Каждого СтрокаДерева Из МассивСтрок
...
Не нужно реккурсии там, где можно и без нее.
|
|
3
andrey i1c
12.08.20
✎
16:52
|
(2) спасибо но я поступил иначе
Убрал вот это
Если Строка.Строки.Количество() > 0 Тогда
и все заработало)
|
|