![]() |
|
УФ и ДеревоЗначений | ☑ | ||
---|---|---|---|---|
0
PuhUfa
25.09.15
✎
17:58
|
У формы есть реквизит Дерево, тип - "ДеревоЗначений"
На форме лежит Таблица, путь к данным - "Дерево" &НаСервере Процедура ЗаполнитьДеревоСервер() ВрДерево = РеквизитФормыВЗначение("Дерево"); ВрДерево.Строки.Очистить(); СтрокаКорень = ВрДерево.Строки.Добавить(); ... ЗначениеВРеквизитФормы(ВрДерево, "Дерево"); КонецПроцедуры &НаКлиенте Процедура ПеречитатьДерево(Команда) ЗаполнитьДеревоСервер(); Элементы.Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; КонецПроцедуры Дерево заполняется как надо, но проблема в том, что при повторном вызове ПеречитатьДерево(Команда) происходит задвоение (а потом затроение и т.д.) строк нижнего уровня дерева. Ставил: Дерево.ПолучитьЭлементы().Очистить(); перед ЗначениеВРеквизитФормы(ВрДерево, "Дерево"); результат тот же. Где косяк? |
|||
1
Fedor-1971
25.09.15
✎
18:19
|
(0) пробуй очищать так:
Как вариант заполнения без преобразования в объект дерево:
если очень нужно сможешь заполнить по такому алгоритму НаКлиенте |
|||
2
PuhUfa
25.09.15
✎
18:25
|
(1) все нормально... косяк на моей стороне был, исходные данные, для заполнения дерева, косячные были.
Осталось только понять почему криво работает: Элементы.Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; И на сегодня хватит -) При первом проходе дерево раскрыто как и положенно. А при последующих вызовах оно всегда остается свернутым на корню. |
|||
3
Fedor-1971
25.09.15
✎
18:33
|
(2) Добавь Элементы.Дерево.Развернуть(идСтроки) для каждой ветки верхнего уровня.
|
|||
4
PuhUfa
25.09.15
✎
18:50
|
(3) Хм... Верхний уровень 1... Пишу:
Элементы.Дерево.Развернуть(0,Истина); В первом проходе все нормально... при повторном: {Форма.ФормаОтчетаУправляемая.Форма(86)}: Ошибка при вызове метода контекста (Развернуть) Элементы.Таблица.Развернуть(0,Истина); по причине: Отсутствует строка данных |
|||
5
Fedor-1971
26.09.15
✎
10:17
|
(4) на клиенте перебери элементы первого уровня, даже если он один, примерно так:
|
|||
6
Fedor-1971
26.09.15
✎
10:18
|
5+ Уверен что есть строка с ИД=0?
|
|||
7
PuhUfa
26.09.15
✎
12:42
|
(6) Да, есть при первом проходе.
Эксперименты показали, что при первом заполнении ИД имеют значения от 0 до 24 (если в дереве 25 строк), при втором уже от 25 до 49, потом от 50 и т.д. (5) В итоге так и сделал: КоллекцияЭлементовДерева =дерево.ПолучитьЭлементы(); Для Каждого Строка Из КоллекцияЭлементовДерева Цикл ИдентификаторСтроки = Строка.ПолучитьИдентификатор(); КонецЦикла; Элементы.Таблица.Развернуть(ИдентификаторСтроки,Истина); Получился конечно "костыль", но для пользователя работает как надо. Спасибо! |
|||
8
Fedor-1971
26.09.15
✎
14:12
|
(7) Развернуть - в цикл положи, если будет несколько элементов верхнего уровня, то развернётся только последний.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |