Возникла ошибка при получении файла из 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 аналогичная ситуация.
Содержание
- Знатоки FTP есть?
- 1С: тайм-аут соединения http (Transferred a partial file)
- Ошибка работы с Интернет: Transferred a partial file
- Ошибка работы с Интернет: Transferred a partial file
- Предположение:
- Характеристика клиента:
- Прочие условия:
- Решение:
- Пример кода
- Заключение
Знатоки 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
Само хранилище создается локально типовыми средствами в каталоге, который указан в параметре сервера хранилища.
15.10.09 — 00:33
Пытаюсь подключиться к FTP серверу через FTPСоединение и при выполнении метода Получить() получаю ошибку
Ошибка работы с Интернет: ftp://xxx.xxx.xxx.xxx:21Transferred a partial file
Анализ последних логов сервера (имеем Filezilla Server) показывает, что сначала клиент запрашивает размер файла (командой SIZE), потом командой RETR пытается его получить и после этого сразу же (без таймаутов — видимо кто-то принудительно разрывает) соединение прекращается.
Гугление по данному вопросу ясности не внесло.
Моя догадка, что клиент спрашивает размер файла, а потом выясняется что объявленный размер не соответствует действительности (хотя я слабо представляю как это происходит), но файл не закачивается при этом ни на байт — на диске создается пустой файл.
В общем, даже не понимаю куда копать и что смотреть. P.S.: передача в пассивном режиме, если это как-то может помочь…
1 — 15.10.09 — 01:03
провайдер какой?
2 — 15.10.09 — 01:09
было что подобное вылечилось сменой провайдера
3 — 15.10.09 — 01:20
Да не… Провайдер тут ни при чем…. Связь 100% стабильная — я даже локально пробовал — такая же фигня… думаю, с настройками самой FileZill’ы проблемы… Вопрос в том, как узнать из-за чего именно соединение на передачу данных не получается.
Самое интересное, что родной клиент (FileZilla) коннектится без проблем. Единственное различие, что родной клиент переводит сервак в пассивный режим командой PASV, а вот 1С-ный клиент командой EPSV. Вот думаю здесь может быть собака зарыта…. Еще бы как-нибудь посмотреть логи 1с-ного клиента, но по-моему такая фича не предусмотрена…
4 — 15.10.09 — 12:28
+(3) — хотя нет — локально все-таки соединяется без проблем. Не могу понять в чем же может быть проблема: файерволы отключены и локально и удаленно.
В чем же разница между локальным и удаленным подключением? Проводил эксперименты на двух компьютерах, находящихся в одной подсети. Локально подключался не на localhost, а на внешний сетевой адрес компьютера — все работает. FileZilla Server и локально и удаленно установлен с идентичными настройками.
В общем, помощь в данном вопросе все еще актуальна. Просто ну очень не хочется переходить на ВК в таком «штатном» вопросе.
5 — 15.10.09 — 12:33
а там пассивный/активный режим переключать можно? попробуй!
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.
7 — 15.10.09 — 12:51
А провайдер то у тебя всетаки какой? У меня была такая проблема с мегафоном, решилось созданием VPN соединения.
8 — 15.10.09 — 12:52
(7) какой-какой — локальная сеть у меня провайдер )))) уже по инету ниче не тестирую — пытаюсь хотя бы в локалке поднять.
9 — 15.10.09 — 12:55
(8)Тогда хрен знает
Попробуй виндовский FTP и поменяй порт
1с чаще зависает чем рвет соединение — с помощью проводника пускает на FTP? 1с использует стандартные виндовские библиотеки
10 — 15.10.09 — 12:56
к томуже попробуй на другой комп FTP перенести — может просто память/жесткий, сетевуха глючат
11 — 15.10.09 — 12:57
и еще права доступа?
12 — 15.10.09 — 13:02
ftp.exe не поддерживает пассивный режим. Кстати, через проводник взлетело… Блин — неужели очередная недокументированная багофича 1Це…
13 — 15.10.09 — 13:04
(12)А вот это уже странно — 1с использует теже библиотеки что и винда.
А движек то у тебя какой?
14 — 15.10.09 — 13:04
и винда какая?
15 — 15.10.09 — 13:05
(14) На сервере W2K3, локально WinXp
16 — 15.10.09 — 13:06
(13) движок 8.1.13.41
17 — 15.10.09 — 13:11
+(12) Проводник тоже использует команду PASV в отличие от 1С, которая использует EPSV. Все-таки подозреваю что дело в этой команде. Возможно, FileZilla некорректно работает с этой командой. RFC никто не сможет расшифровать по поводу как должна работать EPSV и в чем отличие от PASV? ))))
18 — 15.10.09 — 13:11
(17) *сможет = поможет )))))
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
сообщений
Читают тему: