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

1. TimofeySin 164 29.03.11 20:08 Сейчас в теме
Как перетаскивать из 1С понятно... А вот как перетаскивать файлы в 1С? Пробовал ставить отладчик на событие "Перетаскивание", но реакции нет, при этом 1С открывает любой файл как текстовый.
Как поймать это?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. TimofeySin 164 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+ Секунда(ТекущаяДата())),Символы.НПП,"")+Расширение);                                          
	///Процедура считывает все файлы из текущей папки и заполняем ими список
        ЗаполнениеСписка(Адрес);
КонецПроцедуры





Показать
Asfiry; Elisy; +2 Ответить
20. DELOVOYDOM 29.11.23 13:05 Сейчас в теме
(2)
ПоместитьФайл(АдресФайла,ПараметрыПеретаскивания.Значение.ПолноеИмя,,Ложь);

В первом сообщении Вы пишите, что перетаскивать из 1с понятно. Когда это из 1с можно было перетаскивать на рабочий стол?
Во вторых, вы пишите одно, а по коду зачем то какие то папки создаете на сервере туда что то помещаете. Причем тут перетаскивание В 1С?
Кроме этого есть РаботаСФайлами.ДобавитьФайл - почему не используете?
И как в отлавливаете строку на которую наведена мышь?
3. krasavcheg 26.06.13 11:23 Сейчас в теме
Расскажи подробнее пожалуйста, как ты это реализовал?
Мне тоже необходимо к примеру, с рабочего стола переместить файл в 1С 8.2 путем drag&drop
Заранее благодарен!
4. Guyer 20 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 23 25.02.15 15:24 Сейчас в теме
не пашет.......делаю в толстом клиенте, обычном приложении.........событие не генерируется....

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

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

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

Учтите, что перетаскивать можно не только файлы и не только из винды, соседние оьъекты формы тоже могут обмениваться записями любых типов.
Алексей777; +1 Ответить
11. zarankony 304 25.04.16 17:21 Сейчас в теме
В своей конфигурации реализовал перетаскивание через папку на обменнике в виде формы ХТМЛ документа, у которой значение- строковый адрес папки на обменнике. Фактически файлы в 1С не прикрепляются и никак не обрабатываются, зато работать с ними очень быстро и удобно. Минусы - назойливые сообщения безопасности, которые лечатся настройками свйоств безопасности браузера в системе, а также при перетаскивании из одного окна проводника в 1С в другое, 1С-ка пытается открыть перетаскиваемый файл. При перетаскивании из внешнего проводника (и наоборот) такой проблемы нет. Может кто знает как запретить 1С-ке открывать перетаскиваемые файлы для формы целиком или для поля ХТМЛ документа?
12. frkbvfnjh 786 02.06.16 13:01 Сейчас в теме
А как сделать для поля табличного документа? Все настроено так же, но именно для файлов не работает, хотя из др. элементов туда нормально все тягается.
13. doleynikov 24.01.19 15:13 Сейчас в теме
Привет! Может кто-то увидит ;-) Уважаемые знатоки, подскажите начинающему: как написать реакцию на drag&drop картинки на html документе? если на него кликнуть - открывается системный просмотр картинок, если в 1С перетащить картинку - открывается вкладка с содержимым файла-картинки.
14. DeniNikitin 36 21.06.19 18:11 Сейчас в теме
Здравствуйте! Подскажите что не так при перетаскивании просто отображается перечёркнутый кружок, платформа 8.3.13.1690, конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.70.52)? Может ещё где какие галки поставить надо?
15. DeniNikitin 36 21.06.19 18:13 Сейчас в теме
В комплексной автоматизации даже на начальной странице "Стрелочка с плюсиком" а в бп кружок перечёркнутый!
16. DeniNikitin 36 21.06.19 19:18 Сейчас в теме
Вопрос снят! 1С запускалась от имени Администратора и какой то глюк при этом происходил, убрал запуск от имени администратора всё стало перетаскиваться!!!
17. mozz 148 24.12.19 13:53 Сейчас в теме
Небольшое дополнение - если ходим копировать перетаскиванием не по одному файлу, а выделив несколько то кусок кода:

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


Надо заменить на:

Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда
          Для Каждого ЭлементМасс Из ПараметрыПеретаскивания.Значение Цикл
              НовыйФайл = Новый Файл(ЭлементМасс.ПолноеИмя);
              АдресФайла = "";
              ПоместитьФайл(АдресФайла,ЭлементМасс.ПолноеИмя,,Ложь);
              КопируемФайлСервер(АдресФайла,ЭлементМасс.Имя,ЭтаФорма.НашаКарта);
          КонецЦикла; 
Иначе
    НовыйФайл = Новый Файл(ПараметрыПеретаскивания.Значение.ПолноеИмя);
    АдресФайла = "";
    ПоместитьФайл(АдресФайла,ПараметрыПеретаскивания.Значение.ПолноеИмя,,Ложь);
    КопируемФайлСервер(АдресФайла,ПараметрыПеретаскивания.Значение.Имя,ЭтаФорма.НашаКарта);
КонецЕсли;
Показать
18. user1345957 23.05.20 15:26 Сейчас в теме
(17) А как переписать код чтобы можно было перетаскивать изображение?
У меня 1с ругается что не понимает что такое ПолноеИмя
19. palamars 29.03.21 19:23 Сейчас в теме
(18)
У меня 1с ругается что не понимает что такое ПолноеИмя

А что у вас в ПараметрыПеретаскивания.Значение?
И откуда перетаскиваете, из проводника?
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)