1. TimofeySin 44 29.03.11 20:08 Сейчас в теме

Как сделать Drag`n`drop между 1С и explorer`ом

Как перетаскивать из 1С понятно... А вот как перетаскивать файлы в 1С? Пробовал ставить отладчик на событие "Перетаскивание", но реакции нет, при этом 1С открывает любой файл как текстовый.
Как поймать это?
Ответы
Избранное Подписка Сортировка: Древо
2. TimofeySin 44 30.03.11 12:44 Сейчас в теме
Разобрался, оказывается это событие "ПроверкаПеретаскивания"
Может будет интересно кому:
////Отключаем стандартную обработку на этапе проверка перетаскивания (иначе просто откроет файл как текстовый)
&НаКлиенте
Процедура ФайлыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	СтандартнаяОбработка = ложь;
КонецПроцедуры

////В событии перетаскивание сохраняем полученный файл во временное хранилище 
&НаКлиенте
Процедура ФайлыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	СтандартнаяОбработка = ложь;
	НовыйФайл = Новый Файл(ПараметрыПеретаскивания.Значение.ПолноеИмя);
	АдресФайла = "";
	ПоместитьФайл(АдресФайла,ПараметрыПеретаскивания.Значение.ПолноеИмя,,Ложь);
	КопируемФайлСервер(АдресФайла,ПараметрыПеретаскивания.Значение.Имя,ЭтаФорма.НашаКарта);
КонецПроцедуры

//// Ну а здесь я его сохраняю в закрытую от пользователей папку
Процедура КопируемФайлСервер(АдресФайла,ИмяФайла,НомерКарты)
	Адрес = "C:\Users\TT\Desktop\UAZ_3163\"+НомерКарты+"\";
	Файл = НайтиФайлы("C:\Users\TT\Desktop\UAZ_3163\",НомерКарты);
	//// не уверен нужна ли эта проверка, ведь если уже есть такая папка, то ошибки это не вызывает
        Если Файл.Количество() = 0 тогда
		СоздатьКаталог("C:\Users\TT\Desktop\UAZ_3163\"+НомерКарты);
	КонецЕсли;
	НашФайл = ПолучитьИзВременногоХранилища(АдресФайла); 
	Файл = НайтиФайлы(Адрес+ИмяФайла);
	ИмяФайлаБезрасширения = Лев(ИмяФайла,Найти(ИмяФайла,".")-1);
	Расширение = Прав(ИмяФайла,СтрДлина(ИмяФайла) - Найти(ИмяФайла,".")+1);
	//// Добавил уникальный индификатор к имени файла, чтоб юзеры не мучались переименованием файлов (ун. инд. это текущая секунда дня)
        НашФайл.Записать(Адрес+ИмяФайлаБезрасширения+"_"+СтрЗаменить(Строка(Час(ТекущаяДата())*360 + Минута(ТекущаяДата())*60+ Секунда(ТекущаяДата())),Символы.НПП,"")+Расширение);                                          
	///Процедура считывает все файлы из текущей папки и заполняем ими список
        ЗаполнениеСписка(Адрес);
КонецПроцедуры





Показать
3. krasavcheg 26.06.13 11:23 Сейчас в теме
Расскажи подробнее пожалуйста, как ты это реализовал?
Мне тоже необходимо к примеру, с рабочего стола переместить файл в 1С 8.2 путем drag&drop
Заранее благодарен!
4. Guyer 8 26.06.13 13:58 Сейчас в теме
Надо попробовать.... Прикольно.
5. avtokratorWT 26.06.13 14:09 Сейчас в теме
ТимофейСан оформи, пожалуйста, это ввиде небольшой конфиги... Очень актуальная вещь...
6. max996 3 26.06.13 18:17 Сейчас в теме
странно... почему разработчик не предусмотрел? (
7. polinam 26.06.13 20:43 Сейчас в теме
Только сейчас понял, что мне, оказывается, это тоже нужно. Спасибо, TimofeySin, что разобрался и разъяснил.
8. Kinestetik 20 25.02.15 15:24 Сейчас в теме
не пашет.......делаю в толстом клиенте, обычном приложении.........событие не генерируется....

перетаскиваю на табличноеполе, обработчики везде подключил. посмотрите, что не так в аттаче
Прикрепленные файлы:
МатрицаЗаказовБоржоми.epf
9. Kinestetik 20 25.02.15 15:39 Сейчас в теме
Допетрил!!! Важное замечание: чтоб заработало, ставим галки у табличного поля:

- РазрешитьНачалоПеретаскивания
- РазрешитьПеретаскивание

Ответ нашел на просторах WWW
10. Euroset1 7 29.11.15 03:23 Сейчас в теме
Чтобы перетащить файл из винды в 1с, нужно (УФ):
1) На форме 1с расположить объект формы, ему установить 2 галочки "разрешить начало перетаскивания" и "разрешить перетаскивание"
2) в этом же объекте обязательно прописать событие "проверка перетаскивания" - в нем прописать стандартную обработку = ложь
3) в этом же объекте обязательно прописать событие "перетаскивание" - в нем прописать стандартную обработку = ложь и дальше по коду разбирать перетаскиваемое чудо на предмет его происхождения. то, что мы перетаскиваем, находится в "ПараметрыПеретаскивания.Значение". Для случаев с файлом, это будет переменная типа "файл".

Учтите, что перетаскивать можно не только файлы и не только из винды, соседние оьъекты формы тоже могут обмениваться записями любых типов.
11. nikita0832 169 25.04.16 17:21 Сейчас в теме
В своей конфигурации реализовал перетаскивание через папку на обменнике в виде формы ХТМЛ документа, у которой значение- строковый адрес папки на обменнике. Фактически файлы в 1С не прикрепляются и никак не обрабатываются, зато работать с ними очень быстро и удобно. Минусы - назойливые сообщения безопасности, которые лечатся настройками свйоств безопасности браузера в системе, а также при перетаскивании из одного окна проводника в 1С в другое, 1С-ка пытается открыть перетаскиваемый файл. При перетаскивании из внешнего проводника (и наоборот) такой проблемы нет. Может кто знает как запретить 1С-ке открывать перетаскиваемые файлы для формы целиком или для поля ХТМЛ документа?
12. frkbvfnjh 437 02.06.16 13:01 Сейчас в теме
А как сделать для поля табличного документа? Все настроено так же, но именно для файлов не работает, хотя из др. элементов туда нормально все тягается.
13. doleynikov 24.01.19 15:13 Сейчас в теме
Привет! Может кто-то увидит ;-) Уважаемые знатоки, подскажите начинающему: как написать реакцию на drag&drop картинки на html документе? если на него кликнуть - открывается системный просмотр картинок, если в 1С перетащить картинку - открывается вкладка с содержимым файла-картинки.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
Полный день

Программист 1С
Москва
зарплата от 100 000 руб. до 130 000 руб.
Полный день

Бизнес-аналитик 1С ERP
Пермь
зарплата от 80 000 руб.
Полный день

Программист 1С УТ 11
Омск
зарплата от 60 000 руб.
Полный день

Бизнес-аналитик 1С УТ 11
Омск
зарплата от 60 000 руб.
Полный день