|
v8: Как правИльно обойти строки дерева значений | ☑ | ||
---|---|---|---|---|
0
SherifSP
01.08.12
✎
13:11
|
Есть функция которая обходит в цикле строки дерева значения, но она ничего не возвращает(
Функция ОбойтиУровеньДерева(Строки) ТаблицаВыбраныхКоманд = Новый ДеревоЗначений; ТаблицаВыбраныхКоманд.Колонки.Добавить("ВыбранаяКоманда", Новый ОписаниеТипов("СправочникСсылка.Команды")); Для каждого Строка из Строки Цикл Если Строка.Отметка Тогда НовСтрока = ТаблицаВыбраныхКоманд.Строки.Добавить(); НовСтрока.ВыбранаяКоманда = Строка.Команда; КонецЕсли; ОбойтиУровеньДерева(Строка.Строки); КонецЦикла; Возврат ТаблицаВыбраныхКоманд; КонецФункции |
|||
1
izekia
01.08.12
✎
13:15
|
||||
2
SherifSP
01.08.12
✎
13:21
|
(1) Для инд = 0 по 9 Цикл
д.Строки.Добавить().Значение = "" + инд; КонецЦикла; перебор строк в ДЗ? |
|||
3
SherifSP
01.08.12
✎
13:25
|
(1)Переделал только все равно не возвращает ничего
ТаблицаВыбраныхКоманд = Новый ДеревоЗначений; ТаблицаВыбраныхКоманд.Колонки.Добавить("ВыбранаяКоманда", Новый ОписаниеТипов("СправочникСсылка.Команды")); Для каждого Строка из Строки Цикл Если Строка.Отметка Тогда НовСтрока = ТаблицаВыбраныхКоманд.Строки.Добавить(); НовСтрока.ВыбранаяКоманда = Строка.Команда; КонецЕсли; КонецЦикла; стек = Новый Массив; стек.Добавить(ТаблицаВыбраныхКоманд); Пока стек.Количество() > 0 Цикл Для каждого строка Из стек[0].Строки Цикл Сообщить(строка.Значение); Если строка.Строки.Количество() > 0 Тогда стек.Добавить(строка); КонецЕсли; КонецЦикла; стек.Удалить(0); КонецЦикла; Возврат ТаблицаВыбраныхКоманд; |
|||
4
Reset
01.08.12
✎
13:29
|
Бред какой-то.
Чего хочет получить автор? Копию дерева? Так есть метод Скопировать |
|||
5
DrShad
01.08.12
✎
13:31
|
так у тя каждый раз создается новое Дерево
|
|||
6
SherifSP
01.08.12
✎
13:38
|
Я хочу пройти по строкам дерева значений проверить если есть отметка тогда добавить строку Команда
|
|||
7
SherifSP
01.08.12
✎
13:38
|
Рекурсивно не получается
|
|||
8
Fish
01.08.12
✎
13:40
|
(7) "Для того, чтобы понять рекурсию, надо понять рекурсию" (с)
С твоим подходом и не получится. |
|||
9
anddro
01.08.12
✎
13:42
|
(6) а ТаблицаВыбраныхКоманд - это должно быть дерево с такой же структурой или просто список отмеченных команд?
|
|||
10
H A D G E H O G s
01.08.12
✎
13:43
|
"Героиновый рай, и они там вдвоём, И мы, наверное, туда попадём...."
v8: Обойти дерево значений извращенно. |
|||
11
H A D G E H O G s
01.08.12
✎
13:44
|
Обойти дерево полностью, чтобы рекурсией мозг не насиловать:
ДеревоЗначений.Колонки.Добавить("Числовая",Новый ОписаниеТипов("Число")); СтруктураПоиска=Новый Структура("Числовая",0); МассивВсехСтрок=ДеревоЗначений.Строки.НайтиСтроки(СтруктураПоиска,Истина); найти пометки СтруктураПоиска=Новый Структура("Отметка",Истина); МассивВсехСтрок=ДеревоЗначений.Строки.НайтиСтроки(СтруктураПоиска,Истина); |
|||
12
SherifSP
01.08.12
✎
13:48
|
(0)
ТаблицаВыбраныхКоманд = Новый ДеревоЗначений; ТаблицаВыбраныхКоманд.Колонки.Добавить("ВыбранаяКоманда", Новый ОписаниеТипов("СправочникСсылка.Команды")); Для каждого Строка из Строки Цикл Для Каждого Стр из Строка.Строки Цикл Если Стр.Отметка Тогда НовСтрока = ТаблицаВыбраныхКоманд.Строки.Добавить(); НовСтрока.ВыбранаяКоманда = Стр.Команда; КонецЕсли; КонецЦикла; КонецЦикла; Возврат ТаблицаВыбраныхКоманд; Шериф не майся дурью, вот посмотри что я тебе приготовил) |
|||
13
izekia
01.08.12
✎
13:48
|
пациент не в первый раз говорит сам с собой, это очень подозрительно
|
|||
14
SherifSP
01.08.12
✎
13:49
|
(12) спс работает
|
|||
15
Птица
01.08.12
✎
13:49
|
(7) см(5)
|
|||
16
SherifSP
01.08.12
✎
13:49
|
(13)))
|
|||
17
SherifSP
01.08.12
✎
13:50
|
(15)Там да, теперь норм
|
|||
18
SherifSP
01.08.12
✎
13:51
|
(13)У меня появляется раздвоение личности, когда морально тяжело
|
|||
19
anddro
01.08.12
✎
13:53
|
судя по (12) надо только список команд. Далее (12) будет работать, только в случае, когда отметки всегда на втором уровне.
ТаблицаВыбраныхКоманд = Новый ДеревоЗначений; ТаблицаВыбраныхКоманд.Колонки.Добавить("ВыбранаяКоманда", Новый ОписаниеТипов("СправочникСсылка.Команды")); Для Каждого НайденнаяСтрока Из Строки.НайтиСтроки(Новый Структура("Отметка", Истина), Истина) Цикл ТаблицаВыбраныхКоманд.Строки.Добавить().ВыбранаяКоманда = НайденнаяСтрока.Команда; КонецЦикла; Так тоже будет работать, хотя зачем ТаблицаВыбраныхКоманд это дерево значений, я понять не могу, ну да автору виднее. |
|||
20
SherifSP
01.08.12
✎
13:57
|
(19)Задание такое(
|
|||
21
SherifSP
01.08.12
✎
13:57
|
(19)Моя бы воля, все в таблице значений сделал
|
|||
22
anddro
01.08.12
✎
13:59
|
(21) а ты точно уверен, что тебе не надо копировать структуру исходного дерева? Ни (12) ни (19) этого не делают. Требование, что результат - это дерево, как бы намекает.
|
|||
23
SherifSP
01.08.12
✎
14:07
|
(22)Нет
|
|||
24
SherifSP
01.08.12
✎
14:07
|
(22)Как проверить строку дерева значений на заполненность? ДеревоЗначения.Строки = Неопределено?
|
|||
25
H A D G E H O G s
01.08.12
✎
14:08
|
ДеревоЗначения.Строки.Количество()=0
|
|||
26
SherifSP
01.08.12
✎
14:08
|
(24)Не в цикле
|
|||
27
anddro
01.08.12
✎
14:09
|
(24) а что является критерием "заполненности"?
|
|||
28
Fish
01.08.12
✎
14:10
|
(27) Ну как же. Строка может быть пустой, полупустой, неполной, полной и переполненной :))
|
|||
29
SherifSP
01.08.12
✎
14:13
|
(28)Она или есть, или ее нету)
|
|||
30
anddro
01.08.12
✎
14:14
|
(29) тогда чем не устраивает (25)?
|
|||
31
Anastasiy
01.08.12
✎
14:15
|
(18) Блютус - и у нас всё стало хорошо)))
|
|||
32
SherifSP
01.08.12
✎
14:16
|
(30)Устраивает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |