Работа с DropBox из 1С

29.06.17

Интеграция - WEB-интеграция

Пример работы с сервисом dropbox без установки приложения dropbox (средствами, которые предоставляют 1С и Windows по-умолчанию).

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

Наименование Файл Версия Размер
Работа с DropBox из 1С (API v. 2)
.cf 26,53Kb
53
.cf 1.0.0.0 26,53Kb 53 Скачать
Конфигурация 1С_client (API v. 1)
.cf 23,00Kb
31
.cf 7 23,00Kb 31 Скачать

Для чего это нужно.

Таким образом можно организовать автоматический обмен различными файлами между различными базами данных / приложениями, если нет желания/возможностей установить обычное приложение dropbox.

Что внутри.

В качестве примера такой работы представлена конфигурация, в которой реализовано следующее:

  1. Авторизация приложения на сервисе dropbox. Авторизация производится один раз, дальше можно работать без ввода логинов/паролей.
  2. Получение дерева каталогов и их содержимого для вашей учетной записи.
  3. Загрузка файла в dropbox.
  4. Скачивание файла из dropbox.
  5. Удаление файла с сервера dropbox.

Фактически, эта конфигурация - это приложение, которое разработано в соответствие с документацией dropbox по разработке клиентских приложений.

Использованная документация

DropBox Core API
Using OAuth in "PLAINTEXT" mode
Dropbox for HTTP Developers
Dropbox OAuth guide

P.S.

Для создания своего собственного приложения нужно использовать Developer App Console.

--
Обновлено 18.09.2014: добавлена функция удаления файла с сервера

Обновлено 04.04.2017: небольшие доработки, связанные с изменениями в самом Dropbox

Обновлено 27.04.2017: добавлена конфигурация, в которой используется Dropbox API v. 2, функции и интерфейс аналогичны первой версии. Конфигурация разрабатывалась и тестировалась на версии платформы 8.3.9.2233, в основном всё реализовано средствами платформы, т.о., на других релизах платформы что-то может пойти не так.
API v. 1 будет отключен разработчиками Dropbox 28.09.2017

клиент dropbox приложение

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15655    9    17    

9

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12809    30    8    

10

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17419    6    15    

13

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25686    9    0    

7

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16253    41    49    

22
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. davdykin 25 29.08.14 03:10 Сейчас в теме
Мысль интересная. На больших объемах файлов (метров 10-15) не тестировали, проблем не возникает?
2. le_ 237 29.08.14 12:01 Сейчас в теме
(1) davdykin, досконально не тестировал, но файл размером 12,1 МБ скачался нормально.
3. pswd 29.08.14 12:39 Сейчас в теме
А что касаемо обновления или изменения файла другим пользователем. Есть информация об обновлениях и автоматической скачки актуальных данных?
4. le_ 237 29.08.14 13:25 Сейчас в теме
(3) pswd, dropbox API позволяет получить данные по изменениям файлов, их версиям и даже по удаленным файлам.
В конфигурации я не стал это использовать. У меня просто пример работы с базовыми функциями.
5. nSpirit2 01.09.14 10:22 Сейчас в теме
А простите зачем это вообще? Я вот просто совсем не могу себе представить ситуацию зачем клиент DropBox в 1С о_0. Я не знаю как вы а я как то очень опасаюсь аутентификации открытым текстом... Утекут еще ваши секретные данные) Ну и если я правильно помню то для использования в бизнесе за DropBox платить надо.
6. le_ 237 01.09.14 13:15 Сейчас в теме
(5) nSpirit2, все запросы к dropbox в этом примере идут по протоколу HTTPS. Пароли в открытом виде не передаются. В самой конфигурации пароль от аккаунта не хранится, хранятся AppId и токены, которые желательно скрыть от посторонних глаз.

OAuth 1.0 also has a "PLAINTEXT" mode specifically for SSL.
https://www.dropbox.com/developers/blog/20/using-oauth-in-plaintext-mode

Подробнее об OAuth можно почитать здесь.

Кроме того, создавая своё приложение, со своим собственным AppId есть возможность дать доступ этому приложению только в один единственный каталог вашего аккаунта.

А использовать всё это можно для обмена.

Для чего это понадобилось лично мне: есть некое приложение, в котором разработчиками предусмотрена возможность выгрузки базы в dropbox. Это приложение делает ежедневные выгрузки, а я из регламентного задания 1С-ки читаю содержимое определенного каталога и нужное загружаю в базу.
7. nSpirit2 01.09.14 13:34 Сейчас в теме
(6) ну что же спасибо за ответ.

9.4. PLAINTEXT

The PLAINTEXT method does not provide any security protection and SHOULD only be used over a secure channel such as HTTPS. It does not use the Signature Base String.


Как видите все передает он все используя сигнатуру соединения(Читай пароль от приложения передается в открытую и шифруется только самим соединением). Да я параноик :).

На самом деле публикация отличная. А не могли бы вы ответить почему вариант с установкой Копии ДроБокса и простой работай с файлами вы предпочли использовать протокол. Вы как-то проверяете целостность файлов при передаче? Я просто использую именно так если необходим синхрон через плохой интерент. А вообще за публикацию большой + !
8. le_ 237 01.09.14 14:16 Сейчас в теме
(7) nSpirit2, в этом примере целостность файлов не проверяется.
В случае со скачиванием, целостность файла можно проверить средствами платформы/ОС/спец. утилитами. Запрос GET к файлу возвращает хэш, размер и другие параметры в заголовке ответа сервера.

Хэш каталога можно получить специальной API-функцией.

В случае загрузки больших файлов на их сервер, есть API-функция chunked_upload, которая загружает большие файлы фрагментами определенного размера, с проверкой целостности и есть возможность продолжить загрузку в случае её прерывания.

Почему не использую их приложение - считаю, что если можно обойтись без него, то оно не нужно ) Не хочется устанавливать лишнее на сервер.
nSpirit2; +1 Ответить
9. Sergoninfostarru 2 03.09.14 12:16 Сейчас в теме
Dropbox достаточно часто меняет версию, причем автоматически, если установлен на компьютер. Поэтому, данное решение буде работать только пока dropbox существенно не изменится. Кроме того, нужно постоянно держать 1С открытой, чтоб не прохлопать очередной файл, а это не всегда хорошо, особенно, когда база в файловом режиме.
10. le_ 237 03.09.14 16:32 Сейчас в теме
(9) Sergoninfostarru, вряд ли API будет меняться так же часто, как они выпускают версии своего приложения. Если бы это было так, всем разработчикам, которые пишут свои приложения для dropbox пришлось бы постоянно их переделывать.

Зачем держать 1С открытой?
11. Valerich 1633 04.09.14 19:54 Сейчас в теме
Идея отличная.

Чтобы, например, организовать обмен данными между географически разнесенными базами, используют ftp или почту для передачи сообщений. Как показывает практика, dropbox в смысле передачи файлов достаточно надежен, работает быстро и качественно. Но есть одно НО: клиент Dropbox не работает как сервис.
А значит необходимо где-то держать открытую сессию с запущенным клиентом.
Данная разработка может обойти это ограничение, если код прописать для регламентного задания, которое будет выполняться с заданной периодичностью и обновлять нужные файлы.
biformatus; +1 Ответить
12. le_ 237 05.09.14 10:56 Сейчас в теме
(11) valdubov@mail.ru, да, у меня одна из задач так и решается - в регламентном задании проверяется наличие нужных файлов в определенном каталоге dropbox и нужное скачивается и обрабатывается (упоминал об этом в (6)).
13. le_ 237 05.09.14 17:57 Сейчас в теме
В конфигурации используется WinHttpRequest для отправки запросов к серверу dropbox.
Меня тут спросили, возможно ли обойтись без этого объекта. Ответ: да, возможно.
Можно обойтись одним лишь только объектом 1С HTTPСоединение.
ОтправитьДляОбработки() - это POST
Получить() - это GET

Самый первый запрос для получения токена будет выглядеть так:

//получаем токен
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "OAuth oauth_version=""1.0"", oauth_signature_method=""PLAINTEXT"", oauth_consumer_key=""" + ДанныеАвторизации.AppId + """, oauth_signature=""" + ДанныеАвторизации.AppS + "&""");
Соединение = Новый HTTPСоединение("api.dropbox.com",,,,,Истина);

Ф1 = ПолучитьимяВременногоФайла("txt");
ЗТ = Новый ЗаписьТекста(Ф1);
ЗТ.Закрыть();
ЗТ = Неопределено;

Ф2 = ПолучитьимяВременногоФайла("txt");
ЗТ = Новый ЗаписьТекста(Ф2);
ЗТ.Закрыть();
ЗТ = Неопределено;
	
Попытка
	Ответ = Соединение.ОтправитьДляОбработки(Ф1, "1/oauth/request_token", Ф2, Заголовки);
Исключение
	Сообщить("Описание ошибки: " + ОписаниеОшибки());
	Возврат;
КонецПопытки;

Если Ответ.КодСостояния = 200 Тогда
	//...
Показать

Ответ с токенами будет содержаться в файле по пути Ф2.
Все остальное - по аналогии. Отправка файла на сервер в конфигурации для примера изначально была реализована с помощью объекта HTTPСоединение.
Очевидно, что с WinHttpRequest всё проще, но если нет возможности использовать его, то... можно и без него обойтись.
17. sashocq 193 09.09.14 14:58 Сейчас в теме
(13) а что это за вызов такой?
Соединение = Новый HTTPСоединение("api.dropbox.com",,,,,Истина);

6-й параметр Таймаут (Число)
7-й параметр ЗащищенноеСоединение (тип ЗащищенноеСоединениеOpenSSL или ЗащищенноеСоединениеNSS)
Других конструкторов у HTTPСоединение нет. Или я что не так понимаю?
18. le_ 237 09.09.14 16:37 Сейчас в теме
(17) sashocq, в 8.2 два конструктора. Из 8.3 один убрали.
Прикрепленные файлы:
14. CAIN 16 06.09.14 16:20 Сейчас в теме
Возникает ошибка после аутентификации
ОбщийМодуль.ОбщийКлиент.Модуль(180)}: Ошибка при вызове метода контекста (Вставить)
Результат.Вставить(?(Найти("0123456789", Лев(ИмяЗначения, 1)) > 0, "_" + СтрЗаменить(ИмяЗначения, " ", "_"), СтрЗаменить(ИмяЗначения, " ", "_")), Значение);
по причине:
Задано неправильное имя атрибута структуры
15. le_ 237 06.09.14 17:48 Сейчас в теме
(14) CAIN, в этом месте ответ сервера в формате JSON преобразуется в структуру. Видимо, там получается какой-то недопустимый ключ.
Посмотрите, каково в этом месте значение переменой ИмяЗначения, его нужно будет как-то обработать, чтобы можно было использовать в качестве ключа структуры.
16. sashocq 193 08.09.14 15:10 Сейчас в теме
(15) или использовать Соответствие.
19. Robot123 171 18.09.14 14:43 Сейчас в теме
Отличная публикация. Возник вопрос, как можно удалить файл из dropbox. В документации вроде написано через post "https://api.dropbox.com/1/fileops/delete". Но почему-то не получается.
20. le_ 237 18.09.14 15:57 Сейчас в теме
(19) Robot123, обновил файл в публикации - добавил туда пример функции удаления файла с сервера DropBox.
21. deminded 7 19.11.14 14:21 Сейчас в теме
Большое спасибо, пригодилось для быстрого решения задачи по выгрузке фотоматериалов партнерам, использующим dropbox.
22. crazy.admin91119 18.12.14 17:12 Сейчас в теме
Думаю это лишнее, на дропбокс данные важные хранить
никто не боится утечки инфы?
DataReducer; +1 Ответить
23. zekrus 151 04.04.17 13:46 Сейчас в теме
Добрый день!
Тема весьма актуальная, учитывая количество файлов в разных папках (давно пора было прибраться).
Жалко ругается (см вложение)
С уважением
Прикрепленные файлы:
Ошибка.txt
24. le_ 237 04.04.17 17:33 Сейчас в теме
(23) Попробуйте седьмую версию.
25. tr2sh 24.04.17 16:56 Сейчас в теме
26. le_ 237 25.04.17 10:00 Сейчас в теме
(25) Нет, только v. 1.

28.06.2017 API v. 1 будет отключен Dropbox.

Будет время - может, переделаю на v. 2.
27. le_ 237 27.04.17 10:23 Сейчас в теме
(25) Теперь реализовано. (см. файлы публикации)
28. pa3ueji 2 22.06.17 21:48 Сейчас в теме
Работа с DropBox из 1С (API v. 2)

	
	ФормаАвторизации.HTML = "https://www.dropbox.com/oauth2/authorize?response_type=code&client_id=" + ДанныеАвторизации.AppId + "&locale=ru-RU&state=mnbvcxz0987654321";
	ДанныеАвторизации.Вставить("oauth_token", ФормаАвторизации.ОткрытьМодально());


ФормаАвторизации открывается с пустым HTML: при первом входе в процедуру HTMLДокументСформирован, Элементы.html.Документ.URLUnencoded = about:blank.
И после ничего не изменяется и HTML остается пустым.

Правильно ли я понимаю, что там должна быть форма авторизации вместо пустой страницы, если так то где ошибка?
29. le_ 237 23.06.17 09:11 Сейчас в теме
(28) Страница может не загружаться, если 1С-ка не имеет доступа в интернет.
30. pa3ueji 2 23.06.17 12:30 Сейчас в теме
(29)
Страница может не загружаться, если 1С-ка не имеет доступа в интернет

(29)

ФормаАвторизации.HTML = "https://www.google.ru/" - загружается корректно.
31. le_ 237 23.06.17 13:40 Сейчас в теме
(30) Может, к дропбоксу у вас доступ запрещен. Попробуйте открыть его в IE...
https://www.dropbox.com/
32. pa3ueji 2 23.06.17 14:26 Сейчас в теме
В браузере страница("https://www.dropbox.com/oauth2/authorize?response_type=code&client_id=" + ДанныеАвторизации.AppId + "&locale=ru-RU&state=mnbvcxz0987654321")
открывается успешно.
33. le_ 237 23.06.17 15:19 Сейчас в теме
(32) Ну, я не могу вам помочь, у меня работает...
34. Dzenn 869 29.08.18 10:57 Сейчас в теме
К сожалению, вариант v2 не работает (v1 не скачивал). Сервер дропбокса пишет "This app is unable to link additional users because it has been frozen pending review.", то есть "Это приложение не может связать дополнительных пользователей, поскольку оно было заморожено в ожидании проверки."
35. le_ 237 29.08.18 19:21 Сейчас в теме
(34) Создайте свое приложение, используя эту ссылку: https://www.dropbox.com/developers/apps, получите идентификаторы - пропишите их в конфигурации. Модуль формы "Форма" обработки "РабочийСтол", процедура Авторизовать()
36. Dzenn 869 30.08.18 09:44 Сейчас в теме
(35)
(34) Создайте свое приложение, используя эту ссылку: https://www.dropbox.com/developers/apps, получите идентификаторы - пропишите их в конфигурации. Модуль формы "Форма" обработки "РабочийСтол", процедура Авторизовать()
Благодарю!
37. cfifgoth 13.10.18 17:55 Сейчас в теме
Добрый день. Помогите пожалуйста с проблемой. При попытке доступа к Dropbox через "Работа с DropBox из 1С (API v. 2)" возникает надпись "This app is unable to link additional users because it has been frozen pending review". Как решить данную проблему?
38. cfifgoth 13.10.18 18:28 Сейчас в теме
(37)
This app is unable to link additional users because it has been frozen pending review

Спасибо, вопрос снят, не внимательно читаю,))
39. lisrws 143 07.04.20 13:31 Сейчас в теме
Если папка в которую пытаемся загрузить товар на русском, то выдает ошибку. Замените в ЗагрузитьФайл фрагмент
Заголовки.Вставить("Dropbox-API-Arg", "{""path"": """ + Элементы.Файлы.ТекущиеДанные.Файл + "/" + ОбщийКлиент.КодироватьВUnicode(Ф.Имя, Истина, Истина) + """, ""mode"": ""overwrite"", ""autorename"": false, ""mute"": true}");

на
Заголовки.Вставить("Dropbox-API-Arg", "{""path"": """ + ОбщийКлиент.КодироватьВUnicode(Элементы.Файлы.ТекущиеДанные.Файл, Истина, Истина) + "/" + ОбщийКлиент.КодироватьВUnicode(Ф.Имя, Истина, Истина) + """, ""mode"": ""overwrite"", ""autorename"": false, ""mute"": true}");
40. lisrws 143 08.04.20 09:22 Сейчас в теме
(39) также вместо строки
HTTPЗапрос.УстановитьТелоИзСтроки(Запрос);

лучше используйте
HTTPЗапрос.УстановитьТелоИзСтроки(Запрос, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);

тогда будет работать даже на режиме совместимости 8.2. долго не мог понять чего на старой не хочет работать. там символ BOM передавался. короче, если у вас старая конфа и почему-то не фурычит, сделайте как написал выше
41. fessya 10.11.20 17:46 Сейчас в теме
(39)
ОбщийКлиент.КодироватьВUnicode


Здравствуйте! Не могу найти эту функцию.
Не подскажете где она находится?
42. lisrws 143 10.11.20 18:39 Сейчас в теме
(41) здравствуйте. она находится в конфигурации, которую автор приложил к публикации. это общий модуль не из типовых механизмов
Оставьте свое сообщение