Капитально об программе 1С 8.0-8.3-8.4, 7.7

Ошибка работы с Интернет: Transferred a partial file

Возникла ошибка при получении файла из 1C:Bitrix средствами 1с из УТ 11.2, казалось, при обычном соединении, всё как всегда правильно.

Предположение:

Характеристика клиента:

Платформа 8.3.6.2390, Windows 7 64 bit, ssd, usb-ключ, файловый вариант.

Прочие условия:

Использование Winhttp невозможно, так как сервер заказчика работает под управлением linux.

Решение:

Игра с параметрами  таймаутов и заголовков не давала результатов, т.е. файл мог загрузиться, а мог и не загрузиться.

Парадоксально, но после добавления циклической попытки получения, загрузка стала отрабатывать с первого раза.

Пример кода

Соединение = Новый HTTPСоединение(АдресСайта, , , , , 1500 );
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "text/html;charset=UTF-8");
ЗаголовокHTTP.Вставить("Keep-Alive","timeout=30, max=100;");
ЗаголовокHTTP.Вставить("Connection","keep-alive");
ЗаголовокHTTP.Вставить("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.12785 YaBrowser/13.12.1599.12785 Safari/537.36");
ЗаголовокHTTP.Вставить("Host", АдресСайта);
HTTPЗапрос = Новый HTTPЗапрос(АдресФайла,ЗаголовокHTTP);
Попытка
	СчетчикПопыток = 1;
	Пока СчетчикПопыток<20 Цикл
		Попытка
		      Результат  = Соединение.Получить(HTTPЗапрос,ИмяФайлаЗапроса);
		      Сообщить("Получено с "+СчетчикПопыток +" попытки");
		      Прервать;
		Исключение
			СчетчикПопыток  = СчетчикПопыток+1;
		КонецПопытки;	
	КонецЦикла;	
		
	Если Результат.КодСостояния >299 Тогда
		СтрокаСообщения = "Код состояния " + Результат.КодСостояния + " файл не запрошен";
		Сообщить(СтрокаСообщения);
		Возврат Ложь;
	КонецЕсли;		
Исключение
	СтрокаСообщения = ОписаниеОшибки();
	Сообщить(СтрокаСообщения, СтатусСообщения.Важное);
	Возврат Ложь;
КонецПопытки;

Но счастье длилось недолго и 20 попыток стало мало. Пришлось увеличить количество попыток до 50 и тогда отдача пошла с 40 попытки.

Надеюсь битрикс не заблокирует эту DDoS-атаку, но пока работает.

Перезапуск 1С Предприятия опять запустило скачку с первой попытки. Платформа? Нестабильность работы сервера bitrix?

Далее: не хватает и 50, сразу после этого — с 8.

Заключение

Ситуация из разряда, когда всё делаешь правильно, но от тебя ничего не зависит и приходится использовать «костыли».

Можно вынести один положительный момент — получается хорошая универсальная «болванка» кода подключения, с отработкой большинства ньюансов.