Доброго времени суток.
Обычные формы.
На форме есть табличное поле (ТП) с типом дерево значений. Установлены галочки "РазрешитьНачалоПеретаскивания" и "РазрешитьПеретаскивание". ТП заполняю запросом. Но перетаскивание не работает, не в пределах ветки, нигде.
Делаю тип ТП таблица значений - все ОК.
В интернете только находил, что должно работать. Ну если перетаскивать в другую ветку, то нужно программно менять родителя. Но это потом.
Сейчас меня интересует, почему не работает базовый механизм перетаскивания.
процедуры ПриНачале, Проверка, ПриОкончании - определены ? Данные для переноса заполнены?
sava1 @ Сегодня, 13:13
,
Нет, ничего не определено.
Я предполагал, что достаточно поставить галочки "РазрешитьНачалоПеретаскивания" и "РазрешитьПеретаскивание" и перетаскивание в дереве значений будет работать как и в таблице значений (ну хотя бы в пределах ветки). В интернете простого (т.е. без всяких заморочек) примера перетаскивания в дереве значений не нашел.
насколько помню - при начале нужно заполнить данные для перетаскивания
в перетаскивании - их вписать.
Изначально я нашел в интернете кусок кода без каких либо разъяснений.
Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0)
Если Уровень = 0 Тогда
НоваяСтрока = НовыйРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НоваяСтрока, Уровень + 1);
Если ПеремещаемаяСтрока.Родитель = Неопределено Тогда
Дерево.Строки.Удалить(ПеремещаемаяСтрока);
Иначе
ПеремещаемаяСтрока.Родитель.Строки.Удалить(ПеремещаемаяСтрока);
КонецЕсли;
Иначе
Для Каждого Стр ИЗ ПеремещаемаяСтрока.Строки Цикл
НоваяСтрока = НовыйРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
ПереместитьСтрокуДерева(Дерево, Стр, НоваяСтрока, Уровень + 1);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура МаршрутыТППроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура МаршрутыТППеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
ПереместитьСтрокуДерева(МаршрутыТП, ПараметрыПеретаскивания.Значение, Строка);
КонецПроцедуры
Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0)
Если Уровень = 0 Тогда
НоваяСтрока = НовыйРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НоваяСтрока, Уровень + 1);
Если ПеремещаемаяСтрока.Родитель = Неопределено Тогда
Дерево.Строки.Удалить(ПеремещаемаяСтрока);
Иначе
ПеремещаемаяСтрока.Родитель.Строки.Удалить(ПеремещаемаяСтрока);
КонецЕсли;
Иначе
Для Каждого Стр ИЗ ПеремещаемаяСтрока.Строки Цикл
НоваяСтрока = НовыйРодитель.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
ПереместитьСтрокуДерева(Дерево, Стр, НоваяСтрока, Уровень + 1);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua