Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 22:35

Скачивание файлов из интернета по ссылке в 1С

Автор Karatel, 16 ноя 2023, 09:42

0 Пользователей и 1 гость просматривают эту тему.

Karatel

Добрый день, есть связка 1С + битрикс, в битриксе есть поле где отображается ссылка, по переходу по ней скачивается файл pdf, вот мне необходимо обратиться к этой ссылке, скачать файл данный и прикрепить его в 1С
    Адрес = "Адрес сайта";
ИмяФайла = "/services/lists/120/file/0/" + ID
+ "/PROPERTY_458/" + IDДоговор + "/?ncc=y&download=y&download=y";
СоединениеHTTP   =  Новый HTTPСоединение(Адрес,443,,,,,Новый ЗащищенноеСоединениеOpenSSL(),Ложь);
Каталог = ПолучитьИмяВременногоФайла(".pdf");
  СоединениеHTTP.Получить(ИмяФайла,Каталог);  
Сообщить(""+ТекущаяДата()+" Файл загружено в " + Каталог+ИмяФайла);
ВходящийФайл = Новый Файл(Каталог);
Попытка
КопироватьФайл(ИмяФайла,Каталог);
Через копировать не работает пишет каталог не обноружен, как можно сделать правильно, чтобы получить данный файл в формате пдф и вставить в 1С

Максим75

Karatel, так у Вас ИмяФайла - это по синтаксису HTTPЗапрос, в Каталог вернутся данные ресурса (ответ).
А потом Вы пытаетесь что, откуда и куда скопировать?
В КопироватьФайл первый параметр - откуда (вангую, что нет такого каталога, у Вас же ИмяФайла - это что?), второй параметр - куда.
А Вам скорее всего надо временный файл скопировать куда-то (в существующий каталог на диске)

Karatel

Максим75, Без копирования пробовал, у меня в Temp создавался файл, но при открытии файла писал ошибку, вроде того то не правильная кодировка pdf и не открывал, поэтому решил попробовать через копировать. По сути Соединение.Получить(ИмяФайла,Каталог) Я уже получаю скаченный в этом файле документ верно?

Максим75

Цитата: Karatel от 16 ноя 2023, 11:13По сути Соединение.Получить(ИмяФайла,Каталог) Я уже получаю скаченный в этом файле документ верно?
Вы получаете HTTPОтвет. А что в нем - я не знаю. Может и не файл вообще. Т.е. в файл пишется что-то, к которого тип HTTPОтвет.
Посмотрите в синтаксис-помощнике, что возвращается при выполнении метода GET (Получить по-Вашему) у HTTPСоединии.

antoneus

Так вроде надо в Получить передавать httpзапрос. Вот так попробуйте

Запрос = Новый HTTPЗапрос(ИмяФайла);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
    Данные = Ответ.ПолучитьТелоКакДвоичныеДанные();
    Данные.Записать(Каталог)

Karatel

antoneus, Создается всё верно, записывает данные, но выдает ошибку при открытии

Похожие темы (5)

Рейтинг@Mail.ru

Поиск