Имя: Пароль:
1C
1С v8
Перетаскивание объектов и 1С
0 Fedor-1971
 
20.02.15
10:50
Доброй пятницы!
Есть файл в проводнике, цепляем его мышкой тащим в поле на форме, штатными средствами отрабатываем перенос оного в хранилище и т.д. Тут всё относительно просто.
  А вот обратная задача: есть поле на форме, например, картинки, типа цепляем картинку и тащим в проводник (флажок "начало перетаскивания").
Вот тут кроется засада как определить куда пытались перетащить картинку? (как минимум папку, более сложную задачу перетаскивания в другое приложение пока не рассматриваем).
1 ДенисЧ
 
20.02.15
10:51
А зачем? Это должна понимать принимающая программа...
2 Fedor-1971
 
20.02.15
11:01
Как зачем?
Если есть средства отработки "Притащили", надо бы и средства работы с вариантом "Утащили".
  Самый простой пример:
Справочник контрагентов с прикреплёнными сканами, например, договоров, картинки лежат в папке на диске. Операция Притащили - забирает скан в хранилище, а операция Утащили - берёт конкретный скан и сохраняет в указанную папку. Стандартной реализации просто не получится из-за простой дилеммы "что я хочу положить в папку?" всю информацию о контрагенте или только данный скан. Потому логичнее сделать какой-то обработчик события типа "ПритащилиВоВнешнююПрограмму" с параметрами, что за программа (Проводник, Exel, Word ...) и какие-то специфичные для каждой программы данные о текущем положении (для проводника - папка, для Exel -  текущий лист и т.д.)
3 patria0muerte
 
20.02.15
11:02
Странного вы хотите, батенька...
4 Fedor-1971
 
20.02.15
11:05
(3) да не странного из проводника файл в Outlook притаскивается, и обратно утаскивается. Хотелось бы и в 1С реализовать нечто подобное
5 Fish
 
20.02.15
11:05
(2) "с параметрами, что за программа... и какие-то специфичные для каждой программы данные" - А ты в курсе, что различных программ неограниченное количество?
6 Fedor-1971
 
20.02.15
11:08
(5) в курсе, как минимум сама программа, а текущее состояние - это просто мечта (есть - хорошо, для стандартных встроенных в винду, нет сами разберёмся)
7 Fedor-1971
 
20.02.15
11:15
в данном контексте окно в котором отпустили мышку. Как-то коряво получится, если приНачалеПеретаскивания придётся запустить мониторилку Куда собственно притащили и потом сгенерить внешнее событие ПритащилиВотСюда.
  Хотя, надо посмотреть , может и возникает какое-то внешнее событие при отпускании мышки, а я про него просто не знаю.
8 D_E_S_131
 
20.02.15
11:30
(7) "ОкончаниеПеретаскивания" не дает сделать нужное?
А вообще так бы для чего нужен был ДиалогВыбораФайла, если можно все взять и так просто перетащить.
9 Fedor-1971
 
20.02.15
11:33
(8) нет, оно отрабатывает только внутри 1С (это проверил сразу).
Можно и просто кнопку сделать ПоложитьВПапку, но попробуй объясни заказчику "Притащить могу, а вот вытащить нет"
10 Fedor-1971
 
20.02.15
11:34
9+ тогда нужно делать один интерфейс: Присоединяем через ВыборФайла и выгружаем через него-же.
11 Господин ПЖ
 
20.02.15
11:34
нельзя просто так взять и перетащить
12 Fish
 
20.02.15
11:36
(9) "попробуй объясни заказчику "Притащить могу, а вот вытащить нет"" - заказчики тупые или объяснять не умеешь?
13 Fedor-1971
 
20.02.15
11:37
(11) это понятно, что нужен обработчик, только к чему его привязать?
(12) Умею, сам задумался.
14 Torquader
 
22.02.15
01:28
Вообще-то, в системе никто не следит за тем, кто принимает перетаскивание - отправляющий заявляет, что перетаскивание начато и заявляет форматы, которые он готов передать принимающему, а нужный формат из списка выбирает принимающий.
То есть вы можете заявить файл с данными для перетаскивания - и не важно - куда потащат - будет или получение файла - или отказ.