Доступ из 1С 7.7 к файлу Excel из Dropbox


Рассматривается технология организации доступа из 1С версии 7.7 к данным из файла Excel, расположенного в Dropbox. Тестировалось на релизе платформы 7.70.027, конфигурация «Моя бухгалтерия» от Хьюмен Системс.

Предыстория:
Клиент попросил реализовать в конфигурации 1С 7.7 расчет цен в накладной по ценам из файла Excel. Ничего сложного вроде, однако в процессе возникли нюансы..
   Файл Excel , из которого необходимо тянуть цены для расчета, расположен в Dropbox. Ну тоже вроде не проблема вроде — формируем в Dropbox прямую ссылку при помощи команды в самом Dropbox "Поделиться" — получаем прямую ссылку, скачиваем файл Excel на локальный диск и читаем его. Для скачивания файла с Dropbox используем компоненту v7plus.dll. Однако тут возникает неприятный нюанс — компонента v7plus.dll не умеет работать с https ссылками, а адрес прямой ссылка на файл Dropbox как раз в формате https (https://www.dropbox.com/s/XXXXXXXXX.xlsx?dl=0)
    Уже отчаявшись, наткнулся на возможность использования объекта Windows "WinHttp.WinHttpRequest.5.1", однако непосредственного примера скачивания файла по https ссылке не нашел. В итоге нашел решение, которым и хочу поделиться:
Для скачивания файла по ссылке https используется следующий код:

     // Определяем имя локального файла для сохранения
ИмяФ =  КаталогВременныхФайлов() + "prices.xls";

// Указываем нужную ссылку на файл
СсылкаНаФайлDropbox = "тут произвольная ссылка на нужный файл, http или https"

WinHttp = Создатьобъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("GET", СсылкаНаФайлDropbox, 0);
WinHttp.Send();

Если WinHttp.Status = 200 Тогда
Scr = СоздатьОбъект("MSScriptControl.ScriptControl");
Scr.Language = "vbscript";
ТекстМодуля = "
|Sub SaveToFile(ByRef FileName, ByRef WinHttp)
|    Set Stream = CreateObject(""ADODB.Stream"")
|    Stream.Type = 1
|    Stream.Mode = 3
|    Stream.Open
|    Stream.Write WinHttp.responseBody
|    Stream.SaveToFile FileName, 2
|    Stream.Close
|End Sub";

Scr.AddCode(ТекстМодуля);
Scr.Run("SaveToFile",ИмяФ, WinHttp);
Иначе
Сообщить("Ошибка!");
Возврат;
КонецЕсли;

    Вроде все хорошо, однако возникает еще один момент — файл с Dropbox не скачивается, идут какие-то данные HTML. После недолгих поисков выясняется, что для того чтобы получить ссылку именно на файл Dropbox, а не на страницу, где предлагается просмотреть файл или скачать ,нужно всего-навсего поменять в ссылке последний символ с "0" на "1" — т.е. вместо ссылки https://www.dropbox.com/s/XXXXXXXXX.xlsx?dl=0 используем https://www.dropbox.com/s/XXXXXXXXX.xlsx?dl=1

 Ура, все получилось! Скачиваем файл с DropBox ну а дальше уже его читаем и делаем все что нужно))). В нашем случае, был реализован расчет цен в накладной на отгрузку по ценам из файла Excel без изменения конфигурации базы (1С 7.7 Моя бухгалтерия от Хьюмен Системс).

Прилагается обработка, которая скачивает файл по ссылке ( не забываем для ссылок на файлы DropBox поменять в ссылке "0" в конце на "1") и выводит значение из ячейки R1C1 (первая колонка, первая строка).

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *