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

29.06.17

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Работа с DropBox из 1С (API v. 2)
.cf 26,53Kb ver:1.0.0.0
53
53 Скачать (1 SM) Купить за 1 850 руб.
Конфигурация 1С_client (API v. 1)
.cf 23,00Kb ver:7
31
31 Скачать (1 SM) Купить за 1 850 руб.

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

Таким образом можно организовать автоматический обмен различными файлами между различными базами данных / приложениями, если нет желания/возможностей установить обычное приложение 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 приложение

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1555    1    1    

4

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18570    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20716    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    476    2    0    

5

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    92195    184    217    

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

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

Чтобы, например, организовать обмен данными между географически разнесенными базами, используют ftp или почту для передачи сообщений. Как показывает практика, dropbox в смысле передачи файлов достаточно надежен, работает быстро и качественно. Но есть одно НО: клиент Dropbox не работает как сервис.
А значит необходимо где-то держать открытую сессию с запущенным клиентом.
Данная разработка может обойти это ограничение, если код прописать для регламентного задания, которое будет выполняться с заданной периодичностью и обновлять нужные файлы.
biformatus; +1 Ответить
12. le_ 244 05.09.14 10:56 Сейчас в теме
(11) valdubov@mail.ru, да, у меня одна из задач так и решается - в регламентном задании проверяется наличие нужных файлов в определенном каталоге dropbox и нужное скачивается и обрабатывается (упоминал об этом в (6)).
13. le_ 244 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_ 244 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_ 244 06.09.14 17:48 Сейчас в теме
(14) CAIN, в этом месте ответ сервера в формате JSON преобразуется в структуру. Видимо, там получается какой-то недопустимый ключ.
Посмотрите, каково в этом месте значение переменой ИмяЗначения, его нужно будет как-то обработать, чтобы можно было использовать в качестве ключа структуры.
16. sashocq 193 08.09.14 15:10 Сейчас в теме
(15) или использовать Соответствие.
19. Robot123 173 18.09.14 14:43 Сейчас в теме
Отличная публикация. Возник вопрос, как можно удалить файл из dropbox. В документации вроде написано через post "https://api.dropbox.com/1/fileops/delete". Но почему-то не получается.
20. le_ 244 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_ 244 04.04.17 17:33 Сейчас в теме
(23) Попробуйте седьмую версию.
25. tr2sh 24.04.17 16:56 Сейчас в теме
26. le_ 244 25.04.17 10:00 Сейчас в теме
(25) Нет, только v. 1.

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

Будет время - может, переделаю на v. 2.
27. le_ 244 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_ 244 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_ 244 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_ 244 23.06.17 15:19 Сейчас в теме
(32) Ну, я не могу вам помочь, у меня работает...
34. Dzenn 901 29.08.18 10:57 Сейчас в теме
К сожалению, вариант v2 не работает (v1 не скачивал). Сервер дропбокса пишет "This app is unable to link additional users because it has been frozen pending review.", то есть "Это приложение не может связать дополнительных пользователей, поскольку оно было заморожено в ожидании проверки."
35. le_ 244 29.08.18 19:21 Сейчас в теме
(34) Создайте свое приложение, используя эту ссылку: https://www.dropbox.com/developers/apps, получите идентификаторы - пропишите их в конфигурации. Модуль формы "Форма" обработки "РабочийСтол", процедура Авторизовать()
36. Dzenn 901 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 145 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 145 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 145 10.11.20 18:39 Сейчас в теме
(41) здравствуйте. она находится в конфигурации, которую автор приложил к публикации. это общий модуль не из типовых механизмов
Оставьте свое сообщение