Собственно обрабатывать нужно событие «перетаскивание» на форме:
|
&НаКлиенте Процедура ДеревоРасчетаФормаПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) для каждого тз из ПараметрыПеретаскивания.Значение цикл ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена; сообщить("Тащу узел учета: "+тз.Наименование+", в "+строка); ДобавитьВДеревоНаКлиентеУзел(ДеревоРасчетаФорма.ПолучитьЭлементы(),строка,тз); конеццикла; КонецПроцедуры |
,где в
- ПараметрыПеретаскивания.Значение — собственно что именно перетащилось
- ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена; — что мы сами обработаем результат перетаскивания
- Строка — в какую именно строчку тащим в дереве
- Поле — в какое поле тащим в дереве
И как добавляем:
|
&НаКлиенте Процедура ДобавитьВДеревоНаКлиентеУзел(СтрокиДерева,строка,тз); Для каждого элемента Из СтрокиДерева Цикл //Сообщить(элемента.Наименование+"/"+элемента.ПолучитьИдентификатор()); если строка=элемента.ПолучитьИдентификатор() тогда тс = ДеревоРасчетаФорма.НайтиПоИдентификатору(элемента.ПолучитьИдентификатор()); НоваяСтрокаДерева = тс.ПолучитьЭлементы().Добавить(); НоваяСтрокаДерева.Наименование=тз.Наименование; НоваяСтрокаДерева.ВидНачисления=тз.ВидНачисления; конецесли; ВложенныеСтроки = элемента.ПолучитьЭлементы(); Если ВложенныеСтроки.Количество() > 0 Тогда ДобавитьВДеревоНаКлиентеУзел(ВложенныеСтроки,строка,тз); КонецЕсли; КонецЦикла; КонецПроцедуры |