1С: добавление в дерево на форме элемента перетаскиванием с другой таблице на форме
Собственно обрабатывать нужно событие «перетаскивание» на форме:
1 2 3 4 5 6 7 8 |
&НаКлиенте Процедура ДеревоРасчетаФормаПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) для каждого тз из ПараметрыПеретаскивания.Значение цикл ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена; сообщить("Тащу узел учета: "+тз.Наименование+", в "+строка); ДобавитьВДеревоНаКлиентеУзел(ДеревоРасчетаФорма.ПолучитьЭлементы(),строка,тз); конеццикла; КонецПроцедуры |
,где в
- ПараметрыПеретаскивания.Значение — собственно что именно перетащилось
- ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена; — что мы сами обработаем результат перетаскивания
- Строка — в какую именно строчку тащим в дереве
- Поле — в какое поле тащим в дереве
И как добавляем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
&НаКлиенте Процедура ДобавитьВДеревоНаКлиентеУзел(СтрокиДерева,строка,тз); Для каждого элемента Из СтрокиДерева Цикл //Сообщить(элемента.Наименование+"/"+элемента.ПолучитьИдентификатор()); если строка=элемента.ПолучитьИдентификатор() тогда тс = ДеревоРасчетаФорма.НайтиПоИдентификатору(элемента.ПолучитьИдентификатор()); НоваяСтрокаДерева = тс.ПолучитьЭлементы().Добавить(); НоваяСтрокаДерева.Наименование=тз.Наименование; НоваяСтрокаДерева.ВидНачисления=тз.ВидНачисления; конецесли; ВложенныеСтроки = элемента.ПолучитьЭлементы(); Если ВложенныеСтроки.Количество() > 0 Тогда ДобавитьВДеревоНаКлиентеУзел(ВложенныеСтроки,строка,тз); КонецЕсли; КонецЦикла; КонецПроцедуры |