|
УФ : Как получить текущую строку дерева. | ☑ | ||
---|---|---|---|---|
0
СамоСабой
26.04.24
✎
18:06
|
Здравствуйте !
Имеем дерево значений размещенное на форме. Требуется программно получить строку дерева на которой в данный мом установлен курсор. &НаКлиенте Функция ПолучимИдСтроки() ЭтаФорма.Элементы.МоеДерево.ТекущаяСтрока; КонецФункции Возвращает значение индекса = 694 &НаСервере Получим индексы всех строк Дер = ДанныеФормыВЗначение(ДеревоОбъектов,Тип("ДеревоЗначений")); Для каждого СтрДер Из Дер.Строки Цикл Сообщить(СтрДер.Индекс()); КонецЦикла; Получаем индексы всех строк на 1-ом уровне - значения от 0 до 10 (у меня тут всего 11 строк) Для требуемой строки получаем индекс = 0 т.е. Индекс полученный ранее на клиенте не наблюдается нигде &НаСервере Дер.Строки.НайтиПоИндексу(0) - получаем требуемую строку Дер.Строки.НайтиПоИндексу(694) - получаем ошибку Вопрос? Для чего нужен полученный на клиенте индекс 694 и как мне всё таки получить на сервере текущую строку? |
|||
1
СамоСабой
26.04.24
✎
18:15
|
Сори - закралась ошибка. Правильно будет так :
&НаСервере Дер.Строки.Получить(0) - получаем требуемую строку Дер.Строки.Получить(694) - получаем ошибку |
|||
2
СамоСабой
26.04.24
✎
18:30
|
Можно конечно добавить ключевое поле в каждую строку и использовать метод
Дер.Строки.Найти(ЗначениеКлюча,"МойКлюч") Однако хочется надеяться, что есть возможность найти строку используя существующие индексы |
|||
3
arsik
гуру
26.04.24
✎
18:41
|
У Дер. - на сервере тип какой?
|
|||
4
СамоСабой
26.04.24
✎
18:44
|
(3) Тип - ДеревоЗначений
|
|||
5
arsik
гуру
26.04.24
✎
18:45
|
Ты же знаешь, что у дерева древовидная структура да?
|
|||
6
СамоСабой
26.04.24
✎
18:47
|
(5) Да - я это знаю
|
|||
7
lubitelxml
26.04.24
✎
18:51
|
(0) Дер.Строки.НайтиПоИндексу(694) - получаем ошибку.
Как бы логично, на первом уровне нет такой строки. Там вроде через идентификатор все очень просто делается |
|||
8
Смотрящий
26.04.24
✎
18:55
|
(0) Неправильно ты дядя Федор идентификатор получаешь
ЭтаФорма.Элементы.МоеДерево.ТекущаяСтрока.ПолучитьИдентификатор() |
|||
9
Смотрящий
26.04.24
✎
18:56
|
и ДеревоОбъектов.ПолучитьПоИдентификатору(ПолучанныйВ8Идентификатор)
|
|||
10
СамоСабой
26.04.24
✎
18:57
|
(7) Если имеете в виду
НайтиПоИдентификатору(<Идентификатор>) то это метод объекта ДанныеФормыСтруктураСКоллекцией а мне надо строку Дерева получить. Данные формы я автоматом получаю при ЭтаФорма.Элементы.МоеДерево.ТекущиеДанные без всяких поисков |
|||
11
СамоСабой
26.04.24
✎
19:01
|
(8) ЭтаФорма.Элементы.МоеДерево.ТекущаяСтрока - это число из него уже ничего не получишь, причем оно собственно и равно самому требуемому идетификатору
|
|||
12
Смотрящий
26.04.24
✎
19:11
|
ТекущиеДанные, пардон, перепутал
|
|||
13
СамоСабой
26.04.24
✎
19:28
|
(12) ПолучитьПоИдентификатору - нет такого метода
есть НайтиПоИдентификатору - получает ДанныеФормы которые и так уже есть |
|||
14
СамоСабой
26.04.24
✎
19:30
|
(11) Получаю тоже самое значение = 694
|
|||
15
СамоСабой
26.04.24
✎
19:37
|
Попробовал так:
&НаКлиенте ИдСтроки = ЭтаФорма.Элементы.ДеревоОбъектов.ТекущаяСтрока; &НаСервере ДФ = ДеревоОбъектов.НайтиПоИдентификатору(ИдСтроки); ТребуемаяСтрока = ДанныеФормыВЗначение(ДФ,Тип("СтрокаДереваЗначений")); Говорит : "Несоответсвие типов. Параметр номер 2" |
|||
16
СамоСабой
26.04.24
✎
21:34
|
Ну в общем добавил я реквизит Ключ, заполнил его уникальными значениями.
И ищу по нему - все работает. Если ктото знает лучшее решение - прошу сообщить |
|||
17
sikuda
27.04.24
✎
10:37
|
Процедура ДеревоЗначенийПередРазворачиванием(Элемент, Строка, Отказ) Ветвь = ДеревоЗначений.НайтиПоИдентификатору(Строка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |