Имя: Пароль:
1C
1С v8
8.2 Перемещение между Табличной частью
,
0 Gucci76
 
19.03.13
11:14
Все привет. Помогите начинающему.
В обработке есть две Табличные части с одним Реквизитом "ВидРасчета", вывожу их на форму обработки.
В свойствах обработок ставлю флажки "РазрешитьНачалоПеретаскивания" и "РазрешитьПеретаскивание"
Только не получается перетащить почему-то
ЧЯДНТ???
Спасибо
1 Gucci76
 
19.03.13
11:19
(0) Опечатался: в свойствах ТАБЛИЧНЫХ ЧАСТЕЙ, а не обработок
2 Maxus43
 
19.03.13
11:20
обычное приложение?
3 Gucci76
 
19.03.13
11:21
(2) Да.
4 Gucci76
 
19.03.13
11:22
Если что
1С:Предприятие 8.2 (8.2.16.352)
Зарплата и Управление Персоналом, редакция 2.5 (2.5.60.1)
5 Maxus43
 
19.03.13
11:26
(3) надо прописывать в коде алгоритмы перетаскивания
6 Reset
 
19.03.13
11:27
(1) Таки в свойствах табличных полей, а не табличных частей.
Не получается перетащить как? Событие НачалоПеретаскивания происходит?
7 Gucci76
 
19.03.13
11:27
А между таблиц значений перетаскивание работает.
Странно!
8 Reset
 
19.03.13
11:27
(5) Я попробовал два простых ТП, таскает без обработчиков само
9 Reset
 
19.03.13
11:28
ага я ТЗ использовал
10 Maxus43
 
19.03.13
11:28
Процедура НоменклатураНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)

   // Получить значение, переданное системой.
   Значение = ПараметрыПеретаскивания.Значение;

   // В любом случае значением будет массив.
   МассивЗначений = Новый Массив;

   // Если перетаскивается группа, то в массив записываем входящие в нее элементы.
   Если Значение.ЭтоГруппа Тогда
       Выборка = Справочники.Номенклатура.Выбрать(Значение);

           Пока Выборка.Следующий() Цикл

               Если Не Выборка.ЭтоГруппа Тогда
                   МассивЗначений.Добавить(Выборка.Ссылка);
                   
               КонецЕсли;
               
           КонецЦикла;    

   Иначе    
       МассивЗначений.Добавить(Значение);
       
   КонецЕсли;    

   // Заполненный массив записываем в параметры.
   ПараметрыПеретаскивания.Значение = МассивЗначений;

КонецПроцедуры

Процедура ТоварыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)

   СтандартнаяОбработка = Ложь;

КонецПроцедуры
Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)

   ПолученныйМассив = ПараметрыПеретаскивания.Значение;

   Если ТипЗнч(ПолученныйМассив) = Тип("Массив") Тогда

       Для Каждого Значение Из ПолученныйМассив Цикл
           НоваяСтрока = ДокументОбъект.Товары.Добавить();
           
           НоваяСтрока.Номенклатура = Значение;
           НоваяСтрока.Количество     = 1;
           
       КонецЦикла;

   КонецЕсли;

КонецПроцедуры
11 Gucci76
 
19.03.13
11:31
(10) Спасибо. Попробую разобраться
12 Gucci76
 
19.03.13
11:33
(10) А если 3 табличной части, то как определить куда будем добавлять?
13 Maxus43
 
19.03.13
11:35
(12) поковыряй отладчиком, навернаяка место назначения где-то прописано
14 Reset
 
19.03.13
11:35
(12) События перетаскивание, проверкаПеретаскивания возникают в элементе-приемнике
15 Gucci76
 
19.03.13
11:39
(14) Точно. Спасибо.
16 Gucci76
 
19.03.13
11:40
(13) Ковырял, но запутался )))
17 Gucci76
 
19.03.13
11:41
Размышление вслух:
зачем было делать возможность перетаскивания табличных частей, если она все равно не работает? ))))
18 Reset
 
19.03.13
11:44
(17) Почему не работает. Только отсутвует обработка по умолчанию. Вероятно, есть тонкости. Но все инструменты для написания собственного обработчика есть.
19 Maxus43
 
19.03.13
11:44
(17) работает, только потрудись описать логику сам, это не примитивные коллекции
20 Reset
 
19.03.13
11:46
(18) Собвенно, какие тонкости - нельзя заранее предугадать, что пользователь будет туда тащить - поэтому по умолчанию отказываются принимать (срабатывает отказ от действия - я посмотрел отладчиком), но дают программисту возмоджноть определить поведение
21 Gucci76
 
19.03.13
11:47
Уже пишу логику переноса.
Почти получилось.
Спасибо большое!!!