|
Обход структуры рекурсивно
| ☑ |
0
slabak
14.10.15
✎
11:40
|
Добрый день!
Имеется структура у которой в значениях могут быть также структуры.
Задача - Вывести структуру в следующем формате:
Ключ1 - Значение1
Ключ2 - (Ключ1 - Значение1,
Ключ2 - (Ключ1 - Значение1))
Ключ3 - Значение3
У ключа2 значение является структурой и у этой структуры ключ2 также имеет значение с типом структура.
Подскажите, пожалуйста, как обойти эту структуру рекурсивно и правильно вывести, допустим, в текстовый документ на форму?
Следующая функция затирает ТекстовыйДок после того, как обойдет все элементы структуры.
Функция ОбойтиСтруктуру(СтруктураКОбходу)
Для каждого Поле Из СтруктураКОбходуЦикл
ТекстовыйДок = ТекстовыйДок + Поле.Ключ + ":" + ?(ТипЗнч(Поле.Значение)=Тип("Структура"), ОбойтиСтруктуру(Поле.Значение), Поле.Значение) + Символы.ПС;
КонецЦикла;
КонецФункции
|
|
1
Горогуля
14.10.15
✎
11:45
|
>затирает ТекстовыйДок
а ты его таскай за собой
|
|
2
slabak
14.10.15
✎
11:58
|
(1) Так ведь это реквизит формы, он и так со мной)
|
|
3
slabak
14.10.15
✎
11:59
|
(1) Реквизит формы - тип строка.
|
|
4
Горогуля
14.10.15
✎
11:59
|
хорошо, научи функцию таскать его за собой
|
|
5
itlikbez
14.10.15
✎
12:10
|
(0) В конце функции обычно пишут слово "возврат".
|
|
6
DTXyupyup
14.10.15
✎
12:11
|
По идее, не должна она его затирать. Смотри отладчиком, в чем там дело.
|
|
7
PR третий
14.10.15
✎
12:12
|
(5) Это только слабые духом. Сильные ничего не возвращают, только забирают.
|
|
8
itlikbez
14.10.15
✎
12:13
|
(6) По идее - не должна. А по реализации идеи - должна. Чего там отладчиком смотреть. Все и без отладчика видно.
|
|
9
DTXyupyup
14.10.15
✎
12:16
|
(8) И чего видно то?
Он прост процедуру функцией обозвал.
|
|
10
DTXyupyup
14.10.15
✎
12:29
|
Разве что он её вызывает криво
ТекстовыйДок = ОбойтиСтруктуру()
но тут этого не видно
|
|
11
Mort
14.10.15
✎
12:39
|
Эх, вывод дерева в консольку псевдографикой. Лабораторная работа на первом курсе тыщу лет назад.
|
|