| 
    
            
         
         | 
    
  | 
УФ : Как получить текущую строку дерева. | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
        Процедура ДеревоЗначенийПередРазворачиванием(Элемент, Строка, Отказ) Ветвь = ДеревоЗначений.НайтиПоИдентификатору(Строка)  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |