|
|
|
Удаление элемента дерева значений в управляемой форме | ☑ | ||
|---|---|---|---|---|
|
0
rdaler
12.02.11
✎
01:12
|
8.2.13.202 - Управляемое приложение. На форме реквизит ДеревоЗначений.
Необходимо организовать перенос элемента ДЗ из одного родителя в другого. Скопировать элемент - не проблема, а вот как удалить? Насколько не врёт СП, удалить элемент дерева значений в управляемой форме можно только по индексу. И как же этот самый индекс текущего элемента получить? |
|||
|
1
rdaler
12.02.11
✎
10:48
|
Совсем никто не в курсе?
|
|||
|
2
IamAlexy
12.02.11
✎
10:49
|
||||
|
3
rdaler
12.02.11
✎
10:52
|
ДеревоЗначений, а не динамический список.
|
|||
|
4
Murzz
12.02.11
✎
11:39
|
у строки дерева есть метод ПолучитьИдентификатор().
|
|||
|
5
rdaler
12.02.11
✎
11:56
|
(4)Идентификатор это не индекс!
|
|||
|
6
Beans
12.02.11
✎
12:37
|
Покажи как копируешь програмно элемент с учетом другого родителя, интресно...
&НаКлиенте Процедура ДеревоОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) Д = Элементы.Дерево.ТекущиеДанные; ДанныеФормыКоллекция = Дерево.ПолучитьЭлементы(); Индекс = ДанныеФормыКоллекция.Индекс(Д); Если Индекс = -1 Тогда ДанныеФормыКоллекция0 = ДанныеФормыКоллекция[0].ПолучитьЭлементы(); Индекс = ДанныеФормыКоллекция0.Индекс(Д); Если Индекс = -1 Тогда ДанныеФормыКоллекция1 = ДанныеФормыКоллекция[1].ПолучитьЭлементы(); Индекс = ДанныеФормыКоллекция1.Индекс(Д); //..Если Индекс = -1 Тогда //..ДанныеФормыКоллекция2 = ДанныеФормыКоллекция[2].ПолучитьЭлементы(); //........................ Иначе ДанныеФормыКоллекция0.Удалить(Д); КонецЕсли; Иначе ДанныеФормыКоллекция.Удалить(Д); КонецЕсли; из этого всего надо будет сделать какой то цикл. |
|||
|
7
rdaler
12.02.11
✎
13:11
|
Если брать в расчет исключительно мою задачу (максимум 2 уровня дерева и элементы разных уровней не перемешиваются между собой), то решение может выглядеть приблизительно так:
&НаКлиенте Процедура УдалитьЭлемент(Команда) Если Элементы.Дерево.ТекущиеДанные=Неопределено Тогда Возврат; КонецЕсли; ЭлементыТекущегоУровняИерархии=?(Элементы.Дерево.ТекущиеДанные.ПолучитьРодителя()=Неопределено, Дерево.ПолучитьЭлементы(), Элементы.Дерево.ТекущиеДанные.ПолучитьРодителя().ПолучитьЭлементы()); ТекИндекс=0; Пока ЭлементыТекущегоУровняИерархии[ТекИндекс]<>Элементы.Дерево.ТекущиеДанные Цикл ТекИндекс=ТекИндекс+1; КонецЦикла; ЭлементыТекущегоУровняИерархии.Удалить(ТекИндекс); КонецПроцедуры |
|||
|
8
rdaler
12.02.11
✎
13:12
|
+(7) Наименование реквизита - "Дерево", Наименование элемента управления тоже "Дерево".
|
|||
|
9
rdaler
12.02.11
✎
13:14
|
(7)Реализация, конечно, быдловатая, но по крайней мере работает верно.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |