Имя: Пароль:
1C
1С v8
ПолучитьТелоКакДвоичныеДанные() не до конца скачивает файл?
0 MiracMC
 
25.03.20
18:14
Доброго времени суток.

Пытаюсь скачать файл с сайта с ЗАМЕНОЙ ранее скачанного файла уже на диске. Некое обновление данных с сохранением полного пути к ним..

[code]
Домен = "yyy.yy";
адресс = "\myfile\myfile.txt";
куда = "d:\myfile.txt";

Соединение = Новый HTTPСоединение(Домен,,,,,,,);
Запрос = Новый HTTPЗапрос(адресс);
Результат = Соединение.Получить(Запрос);
    
Результат.ПолучитьТелоКакДвоичныеДанные().Записать(куда);
[Code\]

В итоге работает через раз.
пробовал под разными пользователями с разными правами как в 1С так и на папку.
Но сегодня под пользователем Х все работает норм... и завтра работает норм... в поле завтра - не сработает.

Что значит не сработает.. целевой файл ан диске станем с весом = 238 байт (238 байт) хотя сам файл реально весит = 94,8 КБ (97 154 байт)
ну и как результат не открывается и не считывается.

Сама же 1С ошибок при скачивании не выдает...
1 Fragster
 
гуру
25.03.20
18:18
а ты открой блокнотом твой файл размером 238 байт
может там написано 502 сервис анавэибл, или 419 юзер из овер квота или еще что
2 MiracMC
 
25.03.20
18:47
(1)
так.. внесу конкретику...
я таким образом скачиваю обновленный файл внешней обработки 1С в формате epf
сейчас открыл этот самый файл "блокнотом".. вот что внутри

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://хххххх.com/1c_dist/file_30012.epf">here</a>.</p>;
</body></html>

я так понимаю что это то что 1С записала в файл при ПолучитьТелоКакДвоичныеДанные().Записать()
Но почему?

по ссылке есть пройти - файл скачивается нормально.
и при этом то работает то нет....
3 ДенисЧ
 
25.03.20
18:49
Потому что по ссылке у тебя работает умный бровзер, который знает, что такое 302 Moved permamnently.
А твой тупой скрипт - не знает
4 Fragster
 
гуру
25.03.20
18:58
есть прекрасное: https://github.com/vbondarevsky/Connector
5 MiracMC
 
25.03.20
18:58
(3) так а как объяснить что что оно то работает то нет...??
6 Fragster
 
гуру
25.03.20
19:01
(5) кубернетес какой-нибудь
7 Fragster
 
гуру
25.03.20
19:01
и прочие cdn
8 Fragster
 
гуру
25.03.20
19:02
или вообще новую версию выкладывает
9 MiracMC
 
25.03.20
19:11
(4) не подходит ничего внешнего... все штатно надо(
(8) дык нет. я сам ее выкладываю.. это можно исключить...

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

хост с которого качаю - тоже мой..

но не понимаю я как так то.. то да то нет....
10 Fragster
 
гуру
25.03.20
19:35
вообще похоже на настроенный редирект http - https
11 MiracMC
 
25.03.20
20:11
(10) ... так и есть.. есть редирект такой...
но, опять таки, почему иногда то да то нет.... под настроение или это можно чем то объяснить?
12 Fragster
 
гуру
26.03.20
10:25
(11) редирект есть всегда, а вот пользюк сует ссылку с хттп
13 drcrasher
 
26.03.20
10:36
(2) религия запрещает использовать БСП ПолучениеФайловИзИнтернета?
14 MiracMC
 
31.03.20
14:31
Проблему поборол четким определением с SSL соединятся или без


НТТПС = 5;
Если СтрЧислоВхождений(СокрЛП(адресс),"https://";) = 1 Тогда
    НТТПС = 1;
ИначеЕсли СтрЧислоВхождений(СокрЛП(адресс),"http://";) = 1 Тогда
    НТТПС = 0;
КонецЕсли;
Если НТТПС = 1 Тогда
    Соединение = Новый HTTPСоединение(Домен,,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ИначеЕсли НТТПС = 0 Тогда
    Соединение = Новый HTTPСоединение(Домен,,,,,,);
Иначе
    Сообщить("Не смогли определить тип соединения");
КонецЕсли;

и использовал чтение возвращаемого параметра

Результат = Соединение.Получить(Запрос);
кодСостояниеЗапроса = Результат.КодСостояния;
Если Результат.КодСостояния = 302 Тогда
    НеожиданнаяОстановкаОбновления = 1;
КонецЕслИ;    


Спасибо за напутствия!
15 Ёпрст
 
31.03.20
14:34
(14) переменная НТТПС  и второе условие лишнее в этом коде
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой