Transferred a partial file 1с ошибка ftp

Возникла ошибка при получении файла из 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С), с помощью 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 аналогичная ситуация.

Содержание

  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
сообщений

Работа всех программ 1С в бухгалтерии всегда подвержена определенному риску за которым требуется неустанно следить. В нашем случае мы попробуем разобраться с проблему, почему при обращении к серверу 1C может показаться «Ошибка HTTP. Could’t resolve host name» или похожая. После некоторых манипуляций нам удалось решить ее и сейчас мы расскажем как с ней справится.

Причина возникновения ошибки

Основная проблема заключается с сетевыми настройками на стороне клиента 1С при работе с IIS (Internet Information Server). Обычно сервера могут быть обозначены как IP-адрес или «сетевой адрес». В данном случае он называется server1c. В рабочем состоянии локальный dns-сервер должен отправлять ip-адрес клиенту при запросе домена, но этого не происходит. Причиной является нарушение работы службы локальных адресов IIS.

Способ решения ошибки HTTP в 1C

В данном случае решить проблему оказалось достаточно просто. Для соединения с сервером необходимо указать именно его IP-адрес, а не локальное доменное имя. Недоступность или некорректность его определения в сетевом окружении и приводит к такой ошибке.

После данных изменений можно проверить работу на остальных ПК, где установлено подключение к серверу 1С через локальное имя и изменить его.

Версия 1С-Битрикс: Управление сайтом 21.400.100
Версия платформы 1С: 8.3.18.1289
Прикладное решение 1С: 1С:Комплексная автоматизация 2

При выгрузке заказов из Битрикс в 1С получаю ошибку:
На стороне сайта:

This page contains the following errors:
error on line 1 at column 1:
Document is empty Below is a rendering of the page up to the first
error.

На стороне 1С (логин, пароль и адрес правильные):

{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(1456)}: Ошибка при вызове
метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет:
Transferred a partial file
Не удалось получить данные с сервера.
Проверьте правильность адреса сервера, порт, имя пользователя и
пароль, а также настройки подключения к Интернет.
Не удалось прочитать
данные, загруженные с сервера.

Пробовал сброс настроек через php:

COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y» ); COption::SetOptionString(«sale», «secure_1c_exchange», «N» );

После сброса вижу заказы по адресу:
мой сайт/bitrix/admin/1c_exchange.php?type=sale&mode=query#authorize, но в 1С всё равно ошибка.
Как я понял, это происходит из-за пустой строки или лишних символов в ней.
Эта ошибка возникает не только у меня. Перечитал пол интернета, но не смог найти рабочего способа решения проблемы.
Подскажите, пожалуйста, как исправить эту ошибку? Или куда копать, хотя бы?

Столкнулся с проблемой установки удаленного хранилища на IIS 7.5. Часто бывает,  что администраторы Заказчика в этом разбираться не хотят, а работа с удаленным хранилищем штука весьма полезная и удобная. Статей про настройки на IIS 6.0 много, а на IIS 7.5 нет. После манипуляций решил помочь коллегам. IIS 7.5 входит в состав Windows 7 и Window Server 2008. В статье представлен пример для установки на Windows 7 (для Windows Server 2008  отличается только сама установки немного).

1. Устанавливаем службу IIS.

В оснастке программы и компоненты нажимаем пункт «Включение  или отключение компонентов Windows» и выбираем пункт «Службы IIS». Раскрываем дерево и в пункте «Компоненты разработки приложений» устанавливаем флаг «Расширения ISAPI», все остальные настройки по умолчанию, нажимаем ОК.

Рисунок 1. Установка сервера IIS

 

2. Устанавливаем сервер хранилища.

Из оснастки «Программы и компоненты» выбираем пункт соответствующей версии 1С Предприятия 8.2 и нажимаем «Изменить» и выбираем пункт «Изменить», в открывшемся окне дополнительных компонентов выбираем «Сервер хранилища конфигураций» и устанавливаем компонент.

Рисунок 2. Установка сервера хранилища

 

По умолчанию каталог хранилища находится в папке пользователя, меня это не утроило, соответственно меняем в реестре командную строку запуска службы (каталог после ключа -d)

«C:Program Files (x86)1cv828.2.16.362incrserver.exe» -srvc -port 1542 -range 1560:1591 -d d:1C_CONFIGCONFIGS82WEBREPO

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

Рисунок 3. Проверка строки запуска сервера хранилища

 

Теперь стандартными средствами создаем хранилище конфигурации, при этом в каталоге, который мы указали в качества каталога сервера хранилища, размещаются КАТАЛОГИ хранилищ конфигураций (для каждой конфигурации свой каталог).

3. Настройка сервера IIS.

В каталоге c:inetpubwwwroot создаем папку для хранения настроек сервера, например «appstorage1C»:

Рисунок 4. Каталог настройки сервера IIS

 

В каталоге создаем файл с расширением .1ccr следующего содержания:

<?xml version=»1.0″ encoding=»UTF-8″?> 
<repository connectString=»tcp://ИМЯКОМПЬЮТЕРА»/>

После создания папки входим в Панель Управления – Администрирование – Диспетчер служб IIS.

Рисунок 5. Общий вид оснастки «Диспетчер служб IIS «

 

Раскрываем ветку и в группе Default Web Site видим созданную нами папку (если папка не видна, перезапустите службу сервера IIS). На папке нажимаем правой кнопкой мыши и выбираем пункт «Преобразовать в приложение»

Рисунок 6. Преобразование в приложение

 

В открывшемся окне настроек не меняем, жмем ОК.

Рисунок 7. Диалог создания приожения

 

Выбираем наше созданное приложение и в правом окне выбираем пункт «Сопоставление обработчиков».

Рисунок 8. Пункт «Сопоставление обработчиков»

 

Выбираем пункт «Добавить сопоставление сценария »

Рисунок 9. Настройка сопоставления сценария

 

В открывшемся окне заполняем сопоставление следующим образом:

Рисунок 10. Диалог «Изменение сопоставления сценария»

 

В списке обработчиков появляется новый обработчик, после этого в столбце «Действия» выбираем пункт «Изменение разрешений функции» и в открывшемся окне устанавливаем флаг «Выполнение».

Рисунок 11. Диалог «Изменение разрешений функции»

 

Если вы будете использовать серев хранилища на машине с 64-х разрядной операционной системой, тогда необходимо разрешить использование 32-х разрядных приложений (сервер хранилища именно 32 разрядное). Для этого в диспетчере служб IIS выбираем пункт «Пулы приложений», в колонке «Действия» выбираем пункт «Дополнительные параметры» и в открывшемся окне устанавливаем разрешение на использование 32-х разрядных приложений:

Рисунок 12. Окно дополнительных параметров пула приложений

 

Для изменения порта запуска сервера (бывает администраторы блокирую порт 80) необходимо активизировать в дереве подключений пункт «Default Web Site», в панели «Действия» выбираем пункт «Привязки» и меняем порт:

Рисунок 13. Окно привязки сайта

 

Собственно настройки выполнены. Проверим наши настройки. Для этого правой кнопок нажимаем на созданном приложении. Выбираем пункт «Управление приложениями — Обзор».

Рисунок 14. Проверка приложения

 

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

Для подключения к хранилищу необходимо использовать следующую строку:

_http://IP адрес сервера/Имя каталога в папке wwwroot/Имя файл 1 ccr /Имя каталога хранилища

Пример:

_http://192.168.0.102/appstorage1C/repository.1ccr/example82

Само хранилище создается локально типовыми средствами в каталоге, который указан в параметре сервера хранилища.

   alxbzm

15.10.09 — 00:33

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

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

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

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

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

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

   Advan

1 — 15.10.09 — 01:03

провайдер какой?

   Advan

2 — 15.10.09 — 01:09

было что подобное вылечилось сменой провайдера

   alxbzm

3 — 15.10.09 — 01:20

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

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

   alxbzm

4 — 15.10.09 — 12:28

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

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

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

   Fragster

5 — 15.10.09 — 12:33

а там пассивный/активный режим переключать можно? попробуй!

   alxbzm

6 — 15.10.09 — 12:46

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

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

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

(000046) 15.10.2009 12:31:18 — 000 (xxx.xxx.xxx.xxx)> RETR Message.zip
(000046) 15.10.2009 12:31:18 — 000 (xxx.xxx.xxx.xxx)> 150 Connection accepted
(000046) 15.10.2009 12:31:18 — 000 (xxx.xxx.xxx.xxx)> 426 Connection closed; transfer aborted.

   Advan

7 — 15.10.09 — 12:51

А провайдер то у тебя всетаки какой? У меня была такая проблема с мегафоном, решилось созданием VPN соединения.

   alxbzm

8 — 15.10.09 — 12:52

(7) какой-какой — локальная сеть у меня провайдер )))) уже по инету ниче не тестирую — пытаюсь хотя бы в локалке поднять.

   Advan

9 — 15.10.09 — 12:55

(8)Тогда хрен знает
Попробуй виндовский FTP и поменяй порт
1с чаще зависает чем рвет соединение — с помощью проводника пускает на FTP? 1с использует стандартные виндовские библиотеки

   Advan

10 — 15.10.09 — 12:56

к томуже попробуй на другой комп FTP перенести — может просто память/жесткий, сетевуха глючат

   Advan

11 — 15.10.09 — 12:57

и еще права доступа?

   alxbzm

12 — 15.10.09 — 13:02

ftp.exe не поддерживает пассивный режим. Кстати, через проводник взлетело… Блин — неужели очередная недокументированная багофича 1Це…

   Advan

13 — 15.10.09 — 13:04

(12)А вот это уже странно — 1с использует теже библиотеки что и винда.
А движек то у тебя какой?

   Advan

14 — 15.10.09 — 13:04

и винда какая?

   alxbzm

15 — 15.10.09 — 13:05

(14) На сервере W2K3, локально WinXp

   alxbzm

16 — 15.10.09 — 13:06

(13) движок 8.1.13.41

   alxbzm

17 — 15.10.09 — 13:11

+(12) Проводник тоже использует команду PASV в отличие от 1С, которая использует EPSV. Все-таки подозреваю что дело в этой команде. Возможно, FileZilla некорректно работает с этой командой. RFC никто не сможет расшифровать по поводу как должна работать EPSV и в чем отличие от PASV? ))))

   alxbzm

18 — 15.10.09 — 13:11

(17) *сможет = поможет )))))

   sidalexsandr

19 — 15.10.09 — 13:15

alxbzm товарищ а ты не пробовал обновить ftp сервер свой на последнюю версию. Ведь на то и обновления чтобы исправлять баги программ.

  

alxbzm

20 — 15.10.09 — 13:25

(19) — не поверишь — первое что попробовал. Установил 0.9.33. Свежее на данный момент нет.

Предложите бесплатную альтернативу — буду очень признателен — попробую на ней.

Ошибка работы с Интернет: 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.

Заключение

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

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

Реклама магазина самообслуживания: треска, стоящая в очереди за cобственной печенью.

Здраствуйте, требуется совет бывалых! Необходимо получить данные с внешнего веб-сервиса (не 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С-ным) для начала передать файл.

А ну еще и веб-сервер может резать/ограничивать доступный размер данных при передаче.

Говорит же SoapUI нормально получает

Имеется ввиду создавать COM-объект? Спасибо, попробую так.

Тэги: 1С 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
сообщений

Читают тему:

Понравилась статья? Поделить с друзьями:
  • Transfer domain naming master ошибка при синтаксическом
  • Trip computer ваз 2114 как посмотреть ошибки
  • Transfer aborted ошибка
  • Trip computer ваз 2110 ошибки
  • Transducer alarm ошибка fanuc