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

Опубликовал 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. Если материал вам помог, поблагодарите автора, поставив звездочку!
    

 

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

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

См. также

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

https://yandex.ru/support/disk/uploading.html
6. Xer shi (Xershi) 190 11.07.16 08:48 Сейчас в теме
(5) apatyukov, так у меня же и используется WebDAV.
Для загрузки файлов размером больше 2 ГБ используйте программу «Яндекс.Диск» (в версии для Windows, для Mac OS или для Linux) или WebDAV-клиент. Браузеры не смогут обработать такие большие файлы.
7. Алексей Патюков (apatyukov) 829 11.07.16 09:36 Сейчас в теме
(6) Xershi, ну так попробуй выгрузить 3гб.
8. Xer shi (Xershi) 190 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) 829 11.07.16 14:32 Сейчас в теме
(8) Xershi, собственно что и требовалось доказать.
12. Сергей Кудашкин (sikuda) 477 11.07.16 22:42 Сейчас в теме
13. Xer shi (Xershi) 190 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) 477 12.07.16 09:51 Сейчас в теме
(13) Xershi, Ну если совсем не заморачиваться с безопасностью то диск яндекс можно подключить к своему компьютеру как виртуальный
https://yandex.ru/support/disk/webdav/webdav-win.xml
И он вообще будет мало отличаться от реального. Только скоростью.
Если Вы не хотите передавать пароль в открытом виде или Вам на вашей фирме серьезно относятся к безопасности. То лучше немного напрячься - получить token на год
Причем token можно получить как на чтение так и на полный доступ. Здесь уже открываются другие перспективы...


Вот насчет файлов в 3 гб. надо попробовать.
16. Xer shi (Xershi) 190 12.07.16 10:00 Сейчас в теме
(15) sikuda, вчера потестировал сервис, ничего не вышло с запросами, Так что отложим до лучших времен. У меня задача выгружать фото на ядиск, а их размер с текущими камерами на телефонах намного ниже 2 гб, так что задачу я решил.
17. Александр Шакмаев (shakmaev) 325 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) 190 12.07.16 13:02 Сейчас в теме
(17) shakmaev, вы сами и ответили на свой вопрос. Обработку пишут для пользователя.
19. Александр Кунташов (kuntashov) 349 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) 190 13.07.16 08:57 Сейчас в теме
(19) kuntashov, реализация в виде библиотеки это самое просто решение, но интересно будет написать все кодом 1С. Конечно тогда будет ограничение на версию 1С: 8.3.
21. Александр Кунташов (kuntashov) 349 14.07.16 08:00 Сейчас в теме
но интересно будет написать все кодом 1С


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

Плюс там описана процедура авторизации oauth и получения токена, с чем у вас возникли трудности, судя по вашему же комментарию выше.
24. Xer shi (Xershi) 190 14.07.16 12:41 Сейчас в теме
(23) kuntashov, а вот это уже интересно. Много кода портировать придется?
25. Александр Кунташов (kuntashov) 349 14.07.16 14:29 Сейчас в теме
(24) Xershi, явные отличия есть только в методах работы с json (но на самом деле они взяты из разработки http://infostart.ru/public/119601/, т.е. можно использовать его же вместо штатных методов платформы) + используется модуль логирования. Но вызовы методов этих библиотек локализованы и могут быть заменены.
26. alem alem (alem) 27 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) 190 22.08.16 09:57 Сейчас в теме
(26) alem, проверяйте настройки вашего ПК. Скорее всего антивирус блокирует.
28. alem alem (alem) 27 22.08.16 10:26 Сейчас в теме
(27) Xershi, отключил, тоже самое.

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

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

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

Выдал ошибку:
{ВнешняяОбработка.ОбменЯндексДиск.МодульОбъекта(257,11)}: Процедура или функция с указанным именем не определена (СтрНайти)
Индекс = <<?>>СтрНайти(URL, "/");
{ВнешняяОбработка.ОбменЯндексДиск.МодульОбъекта(263,11)}: Процедура или функция с указанным именем не определена (СтрНайти)
Индекс = <<?>>СтрНайти(ИмяСервера, ":");
Прикрепленные файлы:
43. Станислав Пруцков (Stan) 20 18.12.16 12:30 Сейчас в теме
Выгрузка на яндекс диск работает, загрузка с я.диска - нет. Что может быть не так?
44. Xer shi (Xershi) 190 18.12.16 19:24 Сейчас в теме
(42) добрый день! Если у вас конфигурация без совместимости 8.3.5, то "СтрНайти" нужно заменить на "Найти".
Доработаю алгоритм позже, для тех кто выше платформу использует.
45. Xer shi (Xershi) 190 19.12.16 10:43 Сейчас в теме
46. Xer shi (Xershi) 190 19.12.16 10:51 Сейчас в теме
(42) проверил свою разработку! Такой строки кода там нет!
Но судя по вашему тексту, кто-то вам сделал доработку!
И в вашей версии конфигурации включен решим совместимости ниже 8.3.6.
В моей версии есть строка:
ЭтоОбъект = Найти(ТипЗначенияСтрокой, "Object.") > 0;

Так вот до 8.3.6 есть метод "Найти", а вот с 8.3.6 нужно использовать метод "СтрНайти".
Обращайтесь к тому кто вам делал доработку или пишите в ЛС!
47. Алексей Куликов (leks88) 19.03.17 23:27 Сейчас в теме
Заметил на практике, что ошибка "ресурс не найден (404)" появляется даже без установленного приложения яндекс-диска, а по банальной причине не соответствия регистра имени файла. В моем примере файл "discount.txt" не читался, если указывал название "Discount.txt"