Предыстория:
Клиент попросил реализовать в конфигурации 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 (первая колонка, первая строка).