Transferred a partial file 1с ошибка http при обращении к серверу

Возникла ошибка при получении файла из 1C:Bitrix. Добавления циклической попытки получения решает проблему, но работа нестабильно

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

Возникла ошибка при получении файла из 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.

Заключение

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

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

Женщина побеждает как реклама: повторяя одно и то же.

Содержание

  1. Знатоки FTP есть?
  2. 1С: тайм-аут соединения http (Transferred a partial file)
  3. Ошибка работы с Интернет: Transferred a partial file
  4. Ошибка работы с Интернет: Transferred a partial file
  5. Предположение:
  6. Характеристика клиента:
  7. Прочие условия:
  8. Решение:
  9. Пример кода
  10. Заключение

Знатоки FTP есть?

Пытаюсь подключиться к FTP серверу через FTPСоединение и при выполнении метода Получить() получаю ошибку

Ошибка работы с Интернет: ftp://xxx.xxx.xxx.xxx:21Transferred a partial file

Анализ последних логов сервера (имеем Filezilla Server) показывает, что сначала клиент запрашивает размер файла (командой SIZE), потом командой RETR пытается его получить и после этого сразу же (без таймаутов — видимо кто-то принудительно разрывает) соединение прекращается.

Гугление по данному вопросу ясности не внесло.

Моя догадка, что клиент спрашивает размер файла, а потом выясняется что объявленный размер не соответствует действительности (хотя я слабо представляю как это происходит), но файл не закачивается при этом ни на байт — на диске создается пустой файл.

В общем, даже не понимаю куда копать и что смотреть. P.S.: передача в пассивном режиме, если это как-то может помочь.

Да не. Провайдер тут ни при чем. Связь 100% стабильная — я даже локально пробовал — такая же фигня. думаю, с настройками самой FileZill’ы проблемы. Вопрос в том, как узнать из-за чего именно соединение на передачу данных не получается.

Самое интересное, что родной клиент (FileZilla) коннектится без проблем. Единственное различие, что родной клиент переводит сервак в пассивный режим командой PASV, а вот 1С-ный клиент командой EPSV. Вот думаю здесь может быть собака зарыта. Еще бы как-нибудь посмотреть логи 1с-ного клиента, но по-моему такая фича не предусмотрена.

+(3) — хотя нет — локально все-таки соединяется без проблем. Не могу понять в чем же может быть проблема: файерволы отключены и локально и удаленно.

В чем же разница между локальным и удаленным подключением? Проводил эксперименты на двух компьютерах, находящихся в одной подсети. Локально подключался не на localhost, а на внешний сетевой адрес компьютера — все работает. FileZilla Server и локально и удаленно установлен с идентичными настройками.

В общем, помощь в данном вопросе все еще актуальна. Просто ну очень не хочется переходить на ВК в таком «штатном» вопросе.

(5) переключить можно везде (и в сервере и на клиенте), только активный режим мне не нужен — в рабочем использовании у меня есть один сервер, который из-за прокси должен работать (и кстати нормально работает, вот только не с встроенным клиентом 1С v8), поэтому этот режим я не тестировал — пытаюсь все-таки настроить пассивный режим. Кстати, компонента DialMail.dll в пассивном режиме тоже нормально работает.

Мне сам смысл ошибке не понятен — я бы еще понял бы если бы какие-то порты были бы перекрыты — соединение по таймауту отваливалось бы, так тут сразу соединение обрывается, причем большое подозрение что рвет его клиент 1С.

Вот это пишет сервер в своем логе и на этом соединение заканчивается:

Источник

1С: тайм-аут соединения http (Transferred a partial file)

Здраствуйте, требуется совет бывалых!

Необходимо получить данные с внешнего веб-сервиса (не 1С), с помощью WS-ссылки получить данные невозможно, т.к. он поднят и написан на SOAP/Java (1С Java-сервисы не понимает толком, точнее не разбирает структуру толком), поэтому создаю новое HTTP-соединение, заполняю шапку и файл-отправки, выполняю метод «ОтправитьДляОбработки».
Если таким способом забирать небольшие объемы данных — все отрабатывается отлично, а на больших после примерно тайм-аута в 50 сек выходит ошибка «Ошибка работы с Интернет: Transferred a partial file».
Тайм-аут в соединении установлен 0, пробовал принудительно указывать 600 — безрезультатно.

В какую сторону копать?
1) soapUI отлично получает и отрабатывает данные, поэтому думаю дело не в настройках файерволла.
2) Через WS-ссылку данные получает, но выводит пустую таблицу.
3) В логах сервера, на котором поднят вебсервис пишет что отдал все данные полностью.
4) Платформа 8.2.17.153, на 8.2.14.540 аналогичная ситуация.

Может не с програмой проблема, а с соединением. Такое встречал когда MTU не совпадал на модеме(точнее через ВПН), у провайдера и на вин.компе.

Попробуй чем то другим (не 1С-ным) для начала передать файл.

Источник

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

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

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

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

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

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

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

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

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

Решение:

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

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

Пример кода

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

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

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

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

Заключение

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

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

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

Источник

Показывать по
10
20
40
сообщений

Новая тема

Ответить

NNR

Дата регистрации: 06.01.2008
Сообщений: 78

Долгое время не работала в программе 1С Предприятие — бухгалтерия, сейчас хочу выполнить все обновления. программа долго грузится, затем появляется надпись — transferred a partial file. Как быть в такой ситуации.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

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

uinny

Дата регистрации: 12.01.2008
Сообщений: 4814

И не забывать обновлять платформу.

VVP

Дата регистрации: 12.10.2006
Сообщений: 4950

Можно один раз — на крайнюю.

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Может не обновиться на крайнюю.

Показывать по
10
20
40
сообщений

Понравилась статья? Поделить с друзьями:
  • Transferred a partial file 1с ошибка ftp
  • Transfer error code 10 теле 2
  • Transfer error 16842752 0x1010000 connection error
  • Transducer error перевод
  • Transducer alarm ошибка fanuc