Имя: Пароль:
1C
1С v8
Дерево Значений рекурсивный обход
0 andrey i1c
 
12.08.20
16:29
Есть Дерево значений на форме это сообственно объекты метаданных с несколькими уровнями вложенностью https://yadi.sk/i/Cle11SEcSQHqiQ
Ниже алгоритм обрабатывает ветку "Обшие" и все что внутри нее. А также после пробегает по верхнему уровню Константы, Документы, Справочники и т.д. но в них не заходит?
Что не так или необходимо учитывать как то уровни обхода?

&НаСервере
Процедура ОбойтиСтрокиНаСервере()
    
    ОбработкаОбъект = РеквизитФормыВЗначение("ДеревоОбъектовМетаданных");
    ОбойтиСтроки(ОбработкаОбъект);
    
КонецПроцедуры // ПрименитьКПользователюНаСервере()


&НаСервере
Процедура ОбойтиСтроки(ОбработкаОбъект)
    
    Для Каждого Строка Из ОбработкаОбъект.Строки Цикл
        Если Строка.Строки.Количество() > 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  Тогда

и все заработало)
AdBlock убивает бесплатный контент. 1Сергей