Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Дерево Значений рекурсивный обход

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

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


&НаСервере
Процедура ОбойтиСтроки(ОбработкаОбъект)
    
    Для Каждого Строка Из ОбработкаОбъект.Строки Цикл
        Если Строка.Строки.Количество() > 0  Тогда
            Сообщить(Строка.Представление);
            ОбойтиСтроки(Строка);
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры // ОбойтиСтроки()
   andrey i1c
 
1 - 12.08.20 - 16:32
причем и в ветке "Общие" заходит только на один уровень внутрь, а то что дальше пропускает
   H A D G E H O G s
 
2 - 12.08.20 - 16:48
МоеДерево.Колонки.Добавить("КолонкаДляОбхода");
СтруктураПоиска=Новый Структура("КолонкаДляОбхода",Неопределено);
МассивСтрок=МоеДерево.Строки.НайтиСтроки(СтруктураПоиска,Истина);
Для Каждого СтрокаДерева Из МассивСтрок
...

Не нужно реккурсии там, где можно и без нее.
   andrey i1c
 
3 - 12.08.20 - 16:52
(2) спасибо но я поступил иначе

Убрал вот это 
Если Строка.Строки.Количество() > 0  Тогда

и все заработало)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.