|
Дерево Значений: Добавление Дочерних строк в выделенную строку | ☑ | ||
---|---|---|---|---|
0
Slava333
11.08.13
✎
15:41
|
Добрый день!
Имеется дерево значений в которое загружаются строки первого уровня. При двойном клике на строку в нее программно добавляются дочерние строки, при двойном клике на одну из дочерних строк, в нее так же могут быть добавлены дочерние строки и т.д. Обрабатываю событие "Выбор" так: &НаКлиенте Процедура ДеревоВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) //Получаю коллекцию строк дерева ЭлементыДерева = ДеревоЗнач.ПолучитьЭлементы(); //Получаю выделенную строку ВыбСтрока = ЭлементыДерева.Получить(ВыбраннаяСтрока).ПолучитьЭлементы(); //Добавляю в выдеденныю строку дочерние строки Для а = 0 по КоличествоДочернихСтрок Цикл Новаястрока = ВыбСтрока.Добавить(); //Заполняю строку... КонецЦикла; КонецПроцедуры Этот код работает только со строками верхнего уровня, для строк 2 уровня ЭлементыДерева.Получить(ВыбраннаяСтрока).ПолучитьЭлементы(); возвращает: "Недопустимое значение параметра" т.е. как я понял метод Получить() принимает только индексы своего уровня. Вопрос: как мне добавлять подстроки в выделенную строку вне зависимости от уровня вложенности? |
|||
1
PR
11.08.13
✎
15:43
|
(0) >>ВыбСтрока = ЭлементыДерева.Получить(ВыбраннаяСтрока).ПолучитьЭлементы();
Что за хрень? |
|||
2
Slava333
11.08.13
✎
15:53
|
(1) >>Что за хрень?
Как я понимаю, элемент коллекции строк "ЭлементыДерева" т.е. ЭлементыДерева.Получить() возвращает строку по идексу, ВыбраннаяСтрока - индекс выделенной строки. |
|||
3
PR
11.08.13
✎
15:55
|
(2) А ТекущаяСтрока тоже индекс возвращает?
|
|||
4
Slava333
11.08.13
✎
16:08
|
(3) Как я помню да, а что нет?
|
|||
5
zladenuw
11.08.13
✎
16:10
|
что как рекурсия. и все
|
|||
6
PR
11.08.13
✎
16:10
|
(4) А проверить?
|
|||
7
Slava333
11.08.13
✎
16:50
|
(6) Ну да Элементы.Дерево.ТекущаяСтрока
возвращает тоже число что и ВыбраннаяСтрока Мы ведь с вами об одном и том де говорим? |
|||
8
Slava333
11.08.13
✎
16:51
|
(5) zladenuw не понял вас.
|
|||
9
zladenuw
11.08.13
✎
17:39
|
(8) ты про рекурсию не слыхал ?
v8: Использование дерева значений и рекурсии при формировании отчета v8: Дерево значений |
|||
10
Slava333
11.08.13
✎
17:55
|
(9) Слыхать то слыхал. Но мне то нужно не все дерево разом забивать, а отдельные его строки которые пользователю заблагорассудится. Как мне тут рекурсию применить? (
|
|||
11
zladenuw
11.08.13
✎
17:59
|
(10) ну так блин. он выбрал. а ты по рекурсии заполняешь текущею строку и все.
|
|||
12
Slava333
11.08.13
✎
18:28
|
(11) Ну так для того что бы заполнять эту строку её еще как то вычислить нужно.
Вот смотрите: параметр "ВыбраннаяСтрока" возвращает уникальный индекс строки. ЭлементыДерева.Получить(), как я понял принимает только индексы своего уровня. т.е. от нуля до количества строк первого уровня. То есть что бы получить элементы второго уровня мне нужно написать так: ЭлементыДерева = ДеревоЗнач.ПолучитьЭлементы(); Подстрока = ЭлементыДерева.Получить(ИндексСтроки).ПолучитьЭлементы(); //Элементы второго уровня т.е индекс выделенной строки не будет совпадать с индексом подстроки. Как с этим бороться я не знаю. ( |
|||
13
zladenuw
11.08.13
✎
18:35
|
(12) зачем ? если ВыбраннаяСтрока возврашаеть выбранную строку
|
|||
14
zladenuw
11.08.13
✎
18:35
|
(13) а блин уф
|
|||
15
zladenuw
11.08.13
✎
18:41
|
а так разве не ? Элемент.ТекущиеДанные ?
|
|||
16
zladenuw
11.08.13
✎
18:45
|
есть такая еще штука
ДанныеФормыЭлементДерева (FormDataTreeItem) ПолучитьИдентификатор (GetID) |
|||
17
Slava333
11.08.13
✎
19:14
|
Все разобрался:
ВыбСтрока = ДеревоЗнач.НайтиПоИдентификатору(ВыбраннаяСтрока).ПолучитьЭлементы(); zladenuw Огромное спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |