Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не работает перетаскивание в дереве значений          
Vidocq05 Подменю пользователя
сообщение 24.10.18, 10:59
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Доброго времени суток.

Обычные формы.
На форме есть табличное поле (ТП) с типом дерево значений. Установлены галочки "РазрешитьНачалоПеретаскивания" и "РазрешитьПеретаскивание". ТП заполняю запросом. Но перетаскивание не работает, не в пределах ветки, нигде.
Делаю тип ТП таблица значений - все ОК.
В интернете только находил, что должно работать. Ну если перетаскивать в другую ветку, то нужно программно менять родителя. Но это потом.
Сейчас меня интересует, почему не работает базовый механизм перетаскивания.

sava1 Подменю пользователя
сообщение 24.10.18, 12:13
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

процедуры ПриНачале, Проверка, ПриОкончании - определены ? Данные для переноса заполнены?

Vidocq05 Подменю пользователя
сообщение 24.10.18, 12:55
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

sava1 @ Сегодня, 13:13 * ,
Нет, ничего не определено.
Я предполагал, что достаточно поставить галочки "РазрешитьНачалоПеретаскивания" и "РазрешитьПеретаскивание" и перетаскивание в дереве значений будет работать как и в таблице значений (ну хотя бы в пределах ветки). В интернете простого (т.е. без всяких заморочек) примера перетаскивания в дереве значений не нашел.

sava1 Подменю пользователя
сообщение 24.10.18, 13:15
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

насколько помню - при начале нужно заполнить данные для перетаскивания
в перетаскивании - их вписать.


Vidocq05 Подменю пользователя
сообщение 24.10.18, 16:22
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Изначально я нашел в интернете кусок кода без каких либо разъяснений.
Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0)
  
   Если Уровень = 0 Тогда
              
       НоваяСтрока = НовыйРодитель.Строки.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
       ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НоваяСтрока, Уровень + 1);
      
       Если ПеремещаемаяСтрока.Родитель = Неопределено Тогда
           Дерево.Строки.Удалить(ПеремещаемаяСтрока);
       Иначе
           ПеремещаемаяСтрока.Родитель.Строки.Удалить(ПеремещаемаяСтрока);
       КонецЕсли;
      
   Иначе
      
       Для Каждого Стр ИЗ ПеремещаемаяСтрока.Строки Цикл
           НоваяСтрока = НовыйРодитель.Строки.Добавить();
           ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
           ПереместитьСтрокуДерева(Дерево, Стр, НоваяСтрока, Уровень + 1);
       КонецЦикла;
      
   КонецЕсли;
      
КонецПроцедуры

Я его сначала не совсем понял, но потом разобрался. И в результате получилось обычное перетаскивание в дереве значений. Вот код:
Процедура МаршрутыТППроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

Процедура МаршрутыТППеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)    
    ПереместитьСтрокуДерева(МаршрутыТП, ПараметрыПеретаскивания.Значение, Строка);        
КонецПроцедуры

Процедура ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НовыйРодитель, Уровень = 0)
  
   Если Уровень = 0 Тогда
              
       НоваяСтрока = НовыйРодитель.Строки.Добавить();
       ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
       ПереместитьСтрокуДерева(Дерево, ПеремещаемаяСтрока, НоваяСтрока, Уровень + 1);
      
       Если ПеремещаемаяСтрока.Родитель = Неопределено Тогда
           Дерево.Строки.Удалить(ПеремещаемаяСтрока);
       Иначе
           ПеремещаемаяСтрока.Родитель.Строки.Удалить(ПеремещаемаяСтрока);
       КонецЕсли;
      
   Иначе
      
       Для Каждого Стр ИЗ ПеремещаемаяСтрока.Строки Цикл
           НоваяСтрока = НовыйРодитель.Строки.Добавить();
           ЗаполнитьЗначенияСвойств(НоваяСтрока, ПеремещаемаяСтрока);
           ПереместитьСтрокуДерева(Дерево, Стр, НоваяСтрока, Уровень + 1);
       КонецЦикла;
      
   КонецЕсли;
      
КонецПроцедуры

Это не совсем так, как мне нужно, но дальше я разберусь.
Всем спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 11:33
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!