gifts2017

Работа с Яндекс.Диском (обычная и управляемая форма)

Опубликовал Xer shi (Xershi) в раздел Обработки - Универсальные обработки

Возникла необходимость хранить картинки, а может и другие файлы в Яндекс.Диске? Нет ничего проще, работай с Ядекс.Диском прямо из 1С!

Введение

Яндекс.Диск — облачный сервис, принадлежащий компании Яндекс, позволяющий пользователям хранить свои данные на серверах в «облаке» и передавать их другим пользователям в Интернете. Работа построена на синхронизации данных между различными устройствами. В мае 2012 года регистрация новых пользователей была доступна только по приглашениям. В настоящее время регистрация пользователей доступна всем.

Описание

Обработка «Работа с Яндекс.Диском (обычная и управляемая форма)» представляет собой полностью автономное решение, с точки зрения встраивания в любую конфигурацию, как на обычных, так и на управляемых формах! А версия платформы не играет роли! 

Обработка показывает работу с кодом:

ЯндексДискСтрокаПодключения = "https://%user%:%password%@webdav.yandex.ru/%Каталог%";
	

Внимание! Загрузка одного файла ограничена 2 Гб. Обработка прошла тестирование загрузки файла размером 1.1 Гб. Файл размером 2.2 ГБ через 30 секунд отваливается с ошибкой 

Ошибка копирования файлов: Ошибка доступа к файлу 'https://Логин:xxxxxxx@webdav.yandex.ru/ПапкаИз1С/Видео.rar': Ошибка работы с Интернет:   Failed sending data to the peer

Весь функционал проиллюстирован в скриншотах.

P.S. Если материал вам помог, поблагодарите автора, поставив звездочку!
    

 

Скачать файлы

Наименование Файл Версия Размер
Работа с Яндекс.Диском 60
.epf 14,63Kb
10.07.16
60
.epf 1 14,63Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Пишу код как картины (yurii_host) 10.07.16 22:53
Правильно ли я понимаю, что данная обработка умеет работать с файлами в облаке исключительно средствами http без необходимости установки приложения Яндекс.Диск?
2. Xer shi (Xershi) 11.07.16 00:05
(1) yurii_host, все верно! Для работы нужен только логин, пароль и доступ в интернет!
3. Алексей Патюков (apatyukov) 11.07.16 06:19
(1) yurii_host, Единственно что автор не указал, файлы размером больше 2 гб не проходят при таком способе подключения.
4. Xer shi (Xershi) 11.07.16 07:56
(3) apatyukov, а вы тестировали этот метод? А чем отличается загрузка 2гб+ не в курсе?
5. Алексей Патюков (apatyukov) 11.07.16 08:18
(4) Xershi, yandex принудительно прерывает коннект.

https://yandex.ru/support/disk/uploading.html
6. Xer shi (Xershi) 11.07.16 08:48
(5) apatyukov, так у меня же и используется WebDAV.
Для загрузки файлов размером больше 2 ГБ используйте программу «Яндекс.Диск» (в версии для Windows, для Mac OS или для Linux) или WebDAV-клиент. Браузеры не смогут обработать такие большие файлы.
7. Алексей Патюков (apatyukov) 11.07.16 09:36
(6) Xershi, ну так попробуй выгрузить 3гб.
8. Xer shi (Xershi) 11.07.16 12:49
(7) apatyukov, протестировал обработку - загрузка файла 1.1 Гб прошла, а вот 2.2 ГБ через 30 секунд отваливается:
Ошибка копирования файлов: Ошибка доступа к файлу 'https://Логин:xxxxxxx@webdav.yandex.ru/ПапкаИз1С/Видео.rar': Ошибка работы с Интернет:   Failed sending data to the peer

На хакере описали как заставить висеть коннект бесконечно:
request.ReadWriteTimeout = -1;
Но как это применить к моей разработке, пока не знаю.

Если есть идеи велком!

Поэтому пока добавлю в описание, ограничение до 2 Гб.
11. Алексей Патюков (apatyukov) 11.07.16 14:32
(8) Xershi, собственно что и требовалось доказать.
12. Сергей Кудашкин (sikuda) 11.07.16 22:42
13. Xer shi (Xershi) 11.07.16 23:09
(12) sikuda, да там ссылка на https://tech.yandex.ru/disk/api/concepts/about-docpage/, а я пока не сильно писал HTTP-запросы. Но я думаю дело за малым. Но смущает регистрация https://tech.yandex.ru/oauth/.
14. Алексей Роза (DoctorRoza) 12.07.16 08:59
+ на дальнейшее развитие!
pozdeev-artem; dj_serega; +2 Ответить
15. Сергей Кудашкин (sikuda) 12.07.16 09:51
(13) Xershi, Ну если совсем не заморачиваться с безопасностью то диск яндекс можно подключить к своему компьютеру как виртуальный
https://yandex.ru/support/disk/webdav/webdav-win.xml
И он вообще будет мало отличаться от реального. Только скоростью.
Если Вы не хотите передавать пароль в открытом виде или Вам на вашей фирме серьезно относятся к безопасности. То лучше немного напрячься - получить token на год
Причем token можно получить как на чтение так и на полный доступ. Здесь уже открываются другие перспективы...


Вот насчет файлов в 3 гб. надо попробовать.
16. Xer shi (Xershi) 12.07.16 10:00
(15) sikuda, вчера потестировал сервис, ничего не вышло с запросами, Так что отложим до лучших времен. У меня задача выгружать фото на ядиск, а их размер с текущими камерами на телефонах намного ниже 2 гб, так что задачу я решил.
17. Александр Шакмаев (shakmaev) 12.07.16 12:46
1С прекрасно работает с Webdav. К чему делать обработку? Простите, немного не понял.

Путь1 = "https://login:pass@webdav.yandex.ru/path/to/file.txt";
Путь2 = "c:\file.txt";
КопироватьФайл(Путь1, Путь2);
УдалитьФайлы(Путь1);
КопироватьФайл(Путь2, Путь1);
...Показать Скрыть
18. Xer shi (Xershi) 12.07.16 13:02
(17) shakmaev, вы сами и ответили на свой вопрос. Обработку пишут для пользователя.
19. Александр Кунташов (kuntashov) 13.07.16 07:58
Реализация REST API Я.Диска с OAuth-авторизацией в виде библиотеки для 1Script https://github.com/kuntashov/oscript-yadisk
Пример использования - скрипт для публикации файлов на Я.Диске: https://github.com/kuntashov/oscript-yadisk-uploader
p.s.
1Script: http://oscript.io
Подробнее об 1Script на ИС: http://infostart.ru/public/327581/
Ovrfox; so-quest; artbear; JohnyDeath; nems; cleaner_it; sikuda; Aleskey_K; +8 Ответить 1
20. Xer shi (Xershi) 13.07.16 08:57
(19) kuntashov, реализация в виде библиотеки это самое просто решение, но интересно будет написать все кодом 1С. Конечно тогда будет ограничение на версию 1С: 8.3.
21. Александр Кунташов (kuntashov) 14.07.16 08:00
но интересно будет написать все кодом 1С


Там и написано все "кодом 1С". По ссылке поленились, видимо, пройти?
22. Xer shi (Xershi) 14.07.16 08:50
(21) kuntashov, использование скрипта это лишнее звено, вот о чем речь была.
23. Александр Кунташов (kuntashov) 14.07.16 12:40
(22) Xershi, вообще-то код будет работать и, например, в модуле обработки практически "как есть" (копированием-вставкой с небольшими доработками, связанными с необходимостью замены использования библиотеки json на штатные методы 1С для парсинга json).

Плюс там описана процедура авторизации oauth и получения токена, с чем у вас возникли трудности, судя по вашему же комментарию выше.
24. Xer shi (Xershi) 14.07.16 12:41
(23) kuntashov, а вот это уже интересно. Много кода портировать придется?
25. Александр Кунташов (kuntashov) 14.07.16 14:29
(24) Xershi, явные отличия есть только в методах работы с json (но на самом деле они взяты из разработки http://infostart.ru/public/119601/, т.е. можно использовать его же вместо штатных методов платформы) + используется модуль логирования. Но вызовы методов этих библиотек локализованы и могут быть заменены.
26. alem alem (alem) 22.08.16 09:51
Здравствуйте, скачал файл - не работает. Может подскажите в чем причина? При входе в почту \ диск - файлы добавляются \ удаляются.
При копировании строки подключения в браузер система даже запрашивает пароль, но дальше ничего не происходит

При чтении

Файл не обнаружен 'https://imsb1c:xxxxxxx@webdav.yandex.ru/imsb/СКД.jpg'
по причине:
Ошибка работы с Интернет: ресурс не найден (404).

При записи

Ошибка при выполнении файловой операции 'https://imsb1c:xxxxxxx@webdav.yandex.ru/imsb/СКД.jpg'
по причине:
Ошибка работы с Интернет: запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса (409).
27. Xer shi (Xershi) 22.08.16 09:57
(26) alem, проверяйте настройки вашего ПК. Скорее всего антивирус блокирует.
28. alem alem (alem) 22.08.16 10:26
(27) Xershi, отключил, тоже самое.

у меня win 10, это может влиять?

+ "При копировании строки подключения в браузер система даже запрашивает пароль, но дальше ничего не происходит "
29. Xer shi (Xershi) 22.08.16 10:35
(28) alem, на 10 я не тестировал.
xxxxxxx это у вас такой пароль?
Введите туда реальные данные!
Если и с реальным паролем через браузер качать не будет, то проблема в винде. Ищите решение в интернете. Скорее всего там еще куча всяких блокировщиков, аля защита от фишинга и прочее!
30. alem alem (alem) 22.08.16 11:03
там данные реальные, при ошибки система меняет пароль на хххххх, код полностью ваш, убрал только "попытку", чтобы видеть ошибку

в яндексе настраивать что то нужно?
31. alem alem (alem) 22.08.16 11:06
попробовал с сервера 2008 r2 - не работает
32. Xer shi (Xershi) 22.08.16 11:08
(30) alem, настраивать ничего не нужно. Нужно ввести логин и пароль. Если эта строка в браузере не работает, то я вам уже сказал, проверяйте настройки винды.
33. Xer shi (Xershi) 22.08.16 11:14
(31) alem, значит у вас проблемы в настройках сети или ваш провайдер ограничил доступ. Спросите админа сети, какие есть ограничения. Можете также написать запрос в яндекс, чтобы они сообщили вам что нужно для работы сервиса!
Сейчас проверил работу обработки: проблем нет!
Решите технические вопросы, которые не связаны с работой обработки и у вас все тоже заработает!
34. alem alem (alem) 24.08.16 05:09
Работает, но только если на компе не установлено приложение диска (если диск установлен, но отключен - не работает)
35. Xer shi (Xershi) 24.08.16 08:59
(34) alem, скорее всего он работает как служба и перехватывает запросы. Попробуйте найти его в службах?
Приложение позволяет же отправлять файлы более 2 ГБ, поэтому они так сделали.
36. Олег Николаев (o.nikolaev) 05.09.16 00:23
На 8.2 падает платформа, было бы неплохо предупреждать о том что на 8.2, как минимум, такой подход не работает.
37. Xer shi (Xershi) 05.09.16 09:05
(36) o.nikolaev, а какой у вас релиз? Несовместимости с 8.2 в коде нет. Скорее всего у вас длл сбоит.
38. Олег Николаев (o.nikolaev) 07.10.16 01:02
(37) Xershi, 8.2.19.130
Какая именно dll "сбоит"?
39. Xer shi (Xershi) 07.10.16 08:53
(38) o.nikolaev, открывайте лог винды и дамп спец утилитой.
Переустановка платформы не помогает?
40. serg pavl (botman4) 19.10.16 21:49
41. Xer shi (Xershi) 19.10.16 22:13
(40) botman4, если переписать синтаксис, то скорее всего да.
Но нужно тестировать.