|
Работа с деревом УФ. Пересчитать сумму в колонке дерева. |
☑ |
0
DIvanmgn
11.08.14
✎
14:57
|
Здравствуйте.
При изменении ячейки требуется пересчитать всю колонку в дереве.
&НаКлиенте
Процедура ДеревоПриИзменении(Элемент)
ПересчитатьСуммуДерева(Элемент);
КонецПроцедуры
Думал сделать так. Получить родителя. По нему получить выборку. Суммировать колонку выборки. Но вот имя колонки получить не нашел как. Элемент.ТекущийЭлемент.Имя="ДеревоКолонка1"
Элемент.ПолучитьРодителя().ПолучитьЭлементы()["Колонка1"]
Можно конечно откусить слева текст "Дерево". Но чую есть решение "поизящнее".
Допускаю что выбрал подход в принципе не верный. Прошу ногами не бить. Лучше наставьте на путь истинный.
|
|
1
DIvanmgn
11.08.14
✎
15:11
|
хочу обратить внимание, что работа не с деревом значений а с
"ДанныеФормыДерево"
|
|
2
Drac0
11.08.14
✎
16:08
|
(0) На сервере доступен ПутьКДанным.
|
|
3
DIvanmgn
12.08.14
✎
11:59
|
Что-то не очень нравится. Пока получилось вот так:
&НаСервере
Процедура ПересчитатьСуммуДерева(ИмяКолонки,Ветка)
Родитель = Ветка.ПолучитьРодителя();
Если Родитель=Неопределено Тогда
Возврат;
КонецЕсли;
Сумма = 0;
Для Каждого Стр Из Родитель.ПолучитьЭлементы() Цикл
Сумма = Сумма+Стр[ИмяКолонки];
КонецЦикла;
Родитель[ИмяКолонки]=Сумма;
ПересчитатьСуммуДерева(ИмяКолонки,Родитель);
КонецПроцедуры
&НаСервере
Процедура ДеревоПриИзмененииСервер(Идентификатор,ИмяЭлемента)
ТекСтр = Дерево.НайтиПоИдентификатору(Идентификатор);
Корень = ТекСтр.ПолучитьРодителя();
ПолноеИмяКолонки = Элементы.Найти(ИмяЭлемента).ПутьКДанным;
ИмяКолонки = Прав(ПолноеИмяКолонки,СтрДлина(ПолноеИмяКолонки)-Найти(ПолноеИмяКолонки,"."));
ПересчитатьСуммуДерева(ИмяКолонки,ТекСтр);
КонецПроцедуры // ДеревоПриИзмененииСервер()
&НаКлиенте
Процедура ДеревоПриИзменении(Элемент)
ДеревоПриИзмененииСервер(Элемент.ТекущиеДанные.ПолучитьИдентификатор(),Элемент.ТекущийЭлемент.Имя);
КонецПроцедуры
Изящнее можно?
|
|
4
DIvanmgn
12.08.14
✎
12:33
|
(2) То есть даже используя это свойство, я все равно не получаю точный адрес в дереве. Приходиться шаманить со строкой.
|
|
5
Drac0
12.08.14
✎
15:48
|
(4) Куда точнее? ИмяДерева.ИмяПоля. И неважно, как обозвали элемент формы. Тем более легко превращается в универсальную.
|
|
6
DIvanmgn
13.08.14
✎
08:06
|
(5) ну то есть это нормально, что потом нужно парсить строчку для определения имя колонки?
|
|
7
Drac0
13.08.14
✎
08:39
|
(6) "Это нормально" (с) Малышева
|
|
8
РенеДекарт
13.08.14
✎
10:17
|
(6) ты в 1С, дружище, привыкай..
|
|