![]() |
|
Программно определить источник и приемник при перетаскивании 🠗 (Волшебник 09.08.2024 11:41) |
☑ | ||
---|---|---|---|---|
0
НоваяВолна
09.08.24
✎
10:09
|
На форме есть три таблицы значений. Необходимо реализовать перетаскивание значений из одной таблицы в другую. При этом возможны перемещения 1=>2, 2=>3 и 3=>1. А перемещения 3=>2 и 2=>1 надо запретить.
Частично задачу я реализовал. Сейчас есть перемещения из любой таблицы значений в любую. Но надо сделать запрет на перемещение из второй в первую и из третьей во вторую. Не могу понять как определить источник и приемник. В процедурах Перетаскивание, НачалоПеретаскивания, ПроверкаПеретаскивания и ОкончаниеПеретаскивания есть параметр ПараметрыПеретаскивания, но в нем нет указания на источник и приемник. И еще один вопрос: Если попытаться перетащить из одной таблицы в нее же, то никаких действий и ошибок не должно происходить. Поскольку так и не определил источник и приемник, то пришлось сравнивать по Типу. &НаКлиенте Процедура ВторойСписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЭлементМассива) = Тип("ДанныеФормыЭлементКоллекции") Тогда СтрокаСписка = ВторойСписок.Добавить(); СтрокаСписка.Объект = ЭлементМассива.Объект; ПервыйСписок.Удалить(ЭлементМассива); КонецЕсли; КонецЦикла; КонецПроцедуры Это работает, но мне не очень нравится. Может как-то по другому можно реализовать? |
|||
1
Волшебник
09.08.24
✎
10:17
|
Что за таблицы? Почему запрещено обратное перетаскивание?
|
|||
2
НоваяВолна
09.08.24
✎
10:23
|
(1) Обычные таблицы значений - реквизиты формы. По логике задачи должны быть реализованы перемещения 1=>2=>3 то есть значения последовательно перемещаются. Ещё возможен возврат из конца в начало, т.е. 3=>1, с выполнением определенных действий. А вот других обратных перемещений быть не должно.
|
|||
3
Волшебник
09.08.24
✎
10:25
|
(2) В чём их прикладной смысл?
|
|||
4
Мультук
гуру
09.08.24
✎
10:27
|
(3)
Может человек игру пишет на 1С ? :-) |
|||
5
Волшебник
09.08.24
✎
10:30
|
(4) Может не человек?
|
|||
6
НоваяВолна
09.08.24
✎
10:33
|
(3) Прикладной смысл в изменении статуса объекта при перемещении из одной таблицы в другую.
|
|||
7
НоваяВолна
09.08.24
✎
10:38
|
(3) Можно придумать и другой прикладной смысл. Например подбор номенклатуры в документ перетаскиванием из окна подбора. Но при этом надо убедиться, что перетаскивание идет именно из окна подбора, а не из другой параллельно открытой обработки, для которой тоже разрешено перетаскивание.
В любом случае вопрос не в практическом смысле, а в том как определить источник и приемник перетаскивания. |
|||
8
Волшебник
09.08.24
✎
10:47
|
(7) Не надо придумывать. Какой у Вас?
|
|||
9
Garykom
гуру
09.08.24
✎
10:53
|
(0) Ты теорию конечных автоматов изучал/знаешь?
У тебя несколько событий есть, для начала и окончания - фуйли еще тебе надо с... |
|||
10
Garykom
гуру
09.08.24
✎
10:59
|
НачалоПеретаскивания - срабатывает где?
ОкончаниеПеретаскивания - где? |
|||
11
НоваяВолна
09.08.24
✎
11:09
|
(9) Начало перетаскивания знает только об источнике из которого перетаскивается, а окончание только о приемнике перетаскивания. Мне надо например при окончании перетаскивания (а лучше перед окончанием, например в проверке перетаскивания) знать и источник и приемник. И если они не соответствуют определенным правилам не производить перетаскивание.
|
|||
12
Мультук
гуру
09.08.24
✎
11:12
|
(11)
Создать и использовать реквизит формы "КтоНачалПеретаскивание"? |
|||
13
maxab72
09.08.24
✎
11:38
|
(11) Так заведи переменную, куда сперва при начале перетаскивания будешь помещать источник, а при окончании - проверять откуда перетащили и если все в порядке, очищать переменную.
|
|||
14
НоваяВолна
09.08.24
✎
11:57
|
(12) (13) так и сделал, работает
|
|||
15
Garykom
гуру
09.08.24
✎
12:05
|
(14) Поздравляю, ты реализовал wiki:Конечный_автомат
|
|||
16
Волшебник
09.08.24
✎
12:26
|
(14) Со смыслом Вам ещё придётся поработать. Пока получается бессмысленная возня
|
|||
17
Garykom
гуру
09.08.24
✎
12:46
|
(13) Еще можно в НачалоПеретаскивания дополнительно засовывать Источник в
ПараметрыПеретаскивания.Значение.Добавить И ловить его в Перетаскивание |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |