Обход дерева значений, как узнать на каком уровне.
☑
0
bizon2008
27.09.16
✎
12:51
Доброго
Класический рекурсивный обход дерева значений
Процедура ОбходДерева(Дерево)
Для Каждого тСтр Из Дерево.Строки Цикл
Сообщить(тСтр.Колонка1+", "+тСтр.Колонка2);
Если тСтр.Строки.Количество()>0 Тогда
ОбходДерева(тСтр);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Но как узнать на каком уровне находишься?
1
piter3
27.09.16
✎
12:52
Уровень()
2
CMblCL
27.09.16
✎
12:54
Добавить в процедуру параметр уровень и изменять его при вызове процедуры.
Процедура ОбходДерева(Дерево, Уровень)
Для Каждого тСтр Из Дерево.Строки Цикл
Сообщить(тСтр.Колонка1+", "+тСтр.Колонка2);
Если тСтр.Строки.Количество()>0 Тогда
ОбходДерева(тСтр, Уровень + 1);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
3
CMblCL
27.09.16
✎
12:57
(1) О, и правда, 1С уже все придумало за нас.
4
bizon2008
27.09.16
✎
13:04
(1) Ругается - нету такой функции. Как ее правильно писать?
5
vicof
27.09.16
✎
13:05
правильно Уровень()
6
vicof
27.09.16
✎
13:07
(4) Щас начнутся разговоры про клиент-сервер, данные разных типов и тому подобное на 300 постов. И автор в итоге все равно ничего не поймет.
7
Любопытная
27.09.16
✎
13:09
(3) Это метод строки дерева, если что
8
bizon2008
27.09.16
✎
13:10
(6) Не начнутся, я в курсе про клиент-сервер, данные разных типов и тому подобное
Я нашел ошибку, функция применима только к строке. Не туда запихал.
Спасибо.
Закон Брукера: Даже маленькая практика стоит большой теории.