Transferred a partial file 1С

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

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

  • медлительность битрикса
  • медлительность или некорректная работа 1с
  • удаленность сайта или его расположение
  • особенности платформы или клиентской части

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

Платформа 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.

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

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

Реклама — двигатель торговли: сотня двигает, один торгует.

Добавить комментарий

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