1с ошибка работы с интернет failed sending data to the peer
В данной статье собран мой опыт по передаче данных на веб-сервер.
В ходе реализации одного проекта потребовалось организовать автоматическую передачу данных на веб-сервер посредством регламентного задания.
Покопавшись прежде всего в мануалах, синтаксис-помощнике 1С Предприятия, порыскав в Сети, я с удивлением обнаружил наличие отсутствия каких-либо вменяемых материалов по теме. Вернее, материалы в Сети есть, но там больше вопросы с абстрактными ответами.
От нечего делать, пока у нас сервер лежал, накатал обработку, иллюстрирующую пример POST-запроса без файлов.
Лёгкие пути в студию. Про передачу по ftp знаю, не тот в данном случае путь. Можно. Только я от клюшек давно отошёл, забыл её как страшный сон, и даже искать что-то по ней неохота. Гугл вам поможет.СодержимоеZIP = Base64Строка(Новый ДвоичныеДанные(АрхивФайлаZIP));
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI, Символы.ПС, ЛОЖЬ);
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("Content-disposition: form-data; name=""key""" + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("11111");
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""dump""; filename=""" + СчетчикВыгрузок+".zip" + """");
ФайлОтправки.ЗаписатьСтроку("Content-Type: application/x-zip-compressed" + Символы.ПС + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(СодержимоеZIP);
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.ЗаписатьСтроку("Content-disposition: form-data; name=""submit""" + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("Загрузить");
ФайлОтправки.ЗаписатьСтроку("--" + Boundary);
ФайлОтправки.Закрыть();
Пожалуйста помогите что не так?
Посмотреть содержимое массива $_FILES, $_POST на сервере.
В конце концов, проверить размер передаваемых данных. Ошибка работы с Интернет: server returned nothing (no headers, no data)
Такая ошибка вылетает. В чем проблема? Код взят из этой статьи.
Здравствуйте.
Возникла проблемка:
если выполнять на стороне клиента, все нормуль;
но если то же самое делать на стороне сервера (регл. заданием), приходит пустой ПОСТ на сервер :( . ФайлОтправки и файл данных - идентичны.
Посоветуйте, плиз, где искать косяк.
Ишите косяк или на веб-сервере или на сервере 1С, а то и на обоих.
Поручик пишет:Лёгкие пути в студию. Про передачу по ftp знаю, не тот в данном случае путь.
Действительно, более легкие пути шли не туда. Этот работает. Спасибо
Отличная статья, спасибо!
Единственное возник вопрос.
Переводя текст в Base64 методом:
СодержимоеZIP = Base64Строка(Новый ДвоичныеДанные(ИмяФайлаДанных));
Как сделать обратное??
Т.е. из Base64 перевести в исходный текст.
(извиняюсь за нубство, просто уже устала искать)) (21) ДвоичныеДанные.Записать(ИмяФайла), да ничего страшного, я просто имею ввиду, что быстрее такие вопросы в поиске посмотреть, ведь все методы и свойства помнить невозможно. В конфигураторе нажимаете F1, вводите в поиске ДвоичныеДанные и находите ответ на свой вопрос. Также рекомендую использовать (если есть конфигурация, типовая к примеру) поиск по конфигурации и смотреть как это сделано там. И как можно передать куки с одной сесии в другую или єто невозможно, или вытянуть куки из браузера? (26) А вы пробовали? Данные точно попадают в массив $_FILES на сервере? (27) пробовал. И со своим сайтом. И на стену ВКонтакте таким способом картинки загружаются без проблем. (28) Очень интересно. Знать бы этом когда делал проект или догадаться проверить. В этом случае статья могла и не появиться на свет.
В моём случае долго не получалось увидеть на стороне сервера что-либо в массиве $_FILES пока я не догадался вставить ещё один перенос строки в самое начало отправляемого файла (так называемая преамбула):
subbotinpu; kobayoshi; seveiven; andrey-prog; vnedreniekz; Danil.Potapov; Boroda444; GusevNA; tumr; Arc; finder; + 11 – ОтветитьСпасибо большое за статью!
Очень выручили!
Есть, правда, вопрос:
использование Base64 продиктовано тем, что данные могут содержать HTML-значимые символы? И я должен использовать кодирование base64 только в случае, если сервер производит декодирование, верно? Если же сервер этого не делает, то я могу отправлять текст файла как он в файле записан.
(30)
У меня заработало без первой пустой строки.
4 дня я убил на эту херню, пока не наткнулся на твой коммент. Спасибо тебе огромное. Я уже хотел плюнуть на это дело, и просто сделать прокси-скрипт на php. Как вот можно догадаться что дело именно в этой гребаной строке, я честно не понимаю, но в моем случае сработало
Оказалось, что проблема с параметром HTTP заголовка:
ЗаголовокHTTP.Вставить("Referer", СерверИсточник);
Двое из трех хостингов плевали на этот параметр, а zenon выдавал упомянутую выше ошибку.
Поручик, уберите этот параметр из статьи, чтоб другие не сталкивались с такой проблемой.
Статья переработана с учетом комментариев и приложена новая обработка с примерами отправки файла на сервер двумя способамии. Доброго дня. Информация очень интересна и полезна, спасибо автору. Но у меня возникает вопрос. Админ или программист на стороне сайта(я на стороне 1С программиста) требует от меня вставить в POST строку "pass=тут_пароль", куда конкретно вставить он не может сказать в заголовок ли в ФайлОтправки или еще куда. Подскажите, пожалуйста, куда этот реквизит вставить? (37) В файл отправки. Пример смотрите в обработке, там всё есть.(39) скачайте любую из приложенных обработок, они все рабочие.
(39) lazorik,Уже наверно неактуально.
В моём случае долго не получалось увидеть на стороне сервера что-либо в массиве $_FILES пока я не догадался вставить ещё один перенос строки в самое начало отправляемого файла (так называемая преамбула):
ФайлОтправки.ЗаписатьСтроку(""); // <--- вот она, недостающая строка
Спасибо.Я попробовал пользоваться ваши обработки, но результат тот же.Может сталкивались с подобной проблемой, что пустой запрос отправляет? (41) Обратите внимание на мой комментарий в этом обсуждении (30) Коллеги, а с чем может быть связана ошибка
Ошибка при вызове метода контекста (ОбъединитьФайлы): Ошибка сборки файла
ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
по причине:
Ошибка сборки файла
по причине:
Ошибка совместного доступа к файлу 'C:\Users\Obr\AppData\Local\Temp\2\v8_58C6_75.txt'
(44) Она может быть связана с ошибкой совместного доступа к файлу 'C:\Users\Obr\AppData\Local\Temp\2\v8_58C6_75.txt' (45) да я догадалась) А это было связано с тем, что был забыт метод ФайлОтправкиСередина.Закрыть(); Ну и в общем, если один из кусков собираемого файла не закрыт, его и объединить не получится, что логично.
в 8.3 Механизм теперь другой. Нет примера обработки с механизмом на 8.3? Добавлена обработка для платформы 8.3. в режиме управляемого приложения
Мне пришлось добавить перевод строки перед Баундэри, который сразу за двоичными данными. После двоичных данных у меня больше никаких разделов не было, поэтому этот же Баундэри стал последним.
Оригинальный код автора:
ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--");
Мой код:
ФайлОтправкиКонец.ЗаписатьСтроку(Символы.ПС+"--" + Boundary + "--");
Большое спасибо автору за статью! Поставил плюс!
(51) Этот вариант статьи давно устарел, но заливать новый нет желания, так как двиг сайта курочит оформление по-своему, то есть вся работа под хвост. Новая версия находится на моём сайте.По мотивам статьи. Коротенькая функция, отправляющая файлы и данные через POST без создания временных файлов.
Drivingblind; Irwin; VZhulanov; spynett; Sol; Maxis; Soloist; + 7 – Ответить
Поручик, запускаю вашу обработку "ПросмотрИнфостарт.epf", пишет:
Есть ли обработка на управляемой форме или можешь доделать эту обработку если не сложно?
(56) Сдалась она тебе. Это давно устаревший вариант, чисто для примера. (58) ясно. Поищу её где-нибудь в другом месте с авторизацией. (61) Это исключительно абстрактные примеры, а не для практического использования. Статья очень хорошая. Сколько будет стоить помощь в написании кода отправки данных из 1с на веб-серевер через post -запросы,а также комментарии по некоторым вопросам? Код необязательно , чтобы был рабочим, главное, чтобы он отражал всю логику передачи - нужен для курсовой работы. (64) Так вот, в обработке всё рабочее и прокоментирована вся логика.(65) Сергей, скажите пожалуйста, у Вас есть замечательная функция:
Код |
---|
Показать полностью |
Но она работает для 1С версии 8.2.18 и выше. Есть ли аналог для устаревших версий 1С, это нужно для 8.2.13 :(
Вы используете рекурсивное получение для адресов, которые с кодами 301, 302.
Может есть, что для моего случая?
в управляемой форме все ок (69) Выдернуть и сделать обработку для обычного приложения несколько минут. Ошибка работы с Интернет: server returned nothing (no headers, no data)
Такая ошибка вылетает. В чем проблема? (53)
(72)
А кто знает что в этом модуле объекта, почему он запаролен и почему в описанни про это ничего нет. (74) Спасибо. Помогло. Получается Поток работает обратно другим сущностям 1С? Добрый. 1С 8.3 11УТ при интеграции с сайтом выдает ошибку при выполнении функции modeimport
файлы полученные сайтом имеют приписку <pre> null и выдает ошибку!
Спасает ли ваше расширение от этого? Не знаю как это правильно называется, есть ошибка со стороны 1С решить не можем 3-ю неделю-что мне предоставить что бы вы могли понять исправит ли Ваш код-я обозвала расширение (отправка данных, загрузка файлов на веб-сервер, скачивание файла 8.3.epf) эту беду! Разумеется, не исправит. Это просто демонстрация работы. К вашей ошибке никакого отношения.
Очень полезная статья. Спасибо.
Может подскажет кто нибудь: в Postman формирую подобный запрос, отправляю файл, все проходит, все ок, из 1с формирую - сервер отвечает, что файл не был отправлен. В фидлере смотрю запросы - одинаковые почти.. не подскажите в чем причина может быть?
----------------------------598431799074143791551641
Content-Disposition: form-data; name="file"; filename="1.JPG"
Content-Type: image/jpeg
----f61966556d1911e59811e0cb4ed5f4c3
Content-Disposition: form-data; name="file"; filename="1.JPG"
Content-Type: image/jpeg
яШяа JFIF ,, яю LEAD Technologies Inc. V1.01 яЫ „
$.' "+"(6(+/1343&8<82<.231
<>
----f61966556d1911e59811e0cb4ed5f4c3--
Добрый день.
Подскажите пожалуйста, как загрузить два отдельных файла, например, файл pdf и файл с подписью этого файла (pdf)?
ИмяОтправляемогоФайла = Данные.name + "." + Данные.ТипВложения;
ИмяФайлаДанных = КаталогВременныхФайлов() + ИмяОтправляемогоФайла;
ИсходящиеДД.Записать(ИмяФайлаДанных);
ИмяФайлаПодписи = КаталогВременныхФайлов() + ИмяОтправляемогоФайла + ".sgn";
ПодписьДД.Записать(ИмяФайлаПодписи);
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
СтруктураДанных.Вставить("Boundary", Boundary);
МассивФайловДляОбъединения = Новый Массив;
ИмяФайлаОтправкиДанных = ПолучитьИмяВременногоФайла();
ФайлОтправкиДанные = Новый ЗаписьТекста(ИмяФайлаОтправкиДанных, КодировкаТекста.UTF8, Символы.ПС, Ложь);
ФайлОтправкиДанные.ЗаписатьСтроку("--" + Boundary);
ФайлОтправкиДанные.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяОтправляемогоФайла + """");
ФайлОтправкиДанные.ЗаписатьСтроку("Content-Type: application/octet-stream");
ФайлОтправкиДанные.ЗаписатьСтроку("");
ФайлОтправкиДанные.Закрыть();
МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиДанных);
ИмяФайлаДляЗагрузкиВременный = ПолучитьИмяВременногоФайла();
КопироватьФайл(ИмяФайлаДанных, ИмяФайлаДляЗагрузкиВременный);
МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузкиВременный);
ИмяФайлаОтправкиПодписи = ПолучитьИмяВременногоФайла();
ФайлОтправкиПодпись = Новый ЗаписьТекста(ИмяФайлаОтправкиПодписи, КодировкаТекста.UTF8, Символы.ПС, Ложь);
ФайлОтправкиПодпись.ЗаписатьСтроку("");
ФайлОтправкиПодпись.ЗаписатьСтроку("--" + Boundary);
ФайлОтправкиПодпись.ЗаписатьСтроку("Content-Disposition: form-data; name=""sig""; filename=""" + ИмяОтправляемогоФайла + ".sgn" + """");
ФайлОтправкиПодпись.ЗаписатьСтроку("Content-Type: application/octet-stream");
ФайлОтправкиПодпись.ЗаписатьСтроку("");
ФайлОтправкиПодпись.Закрыть();
МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиПодписи);
ИмяФайлаДляЗагрузкиВременныйПодпись = ПолучитьИмяВременногоФайла();
КопироватьФайл(ИмяФайлаПодписи, ИмяФайлаДляЗагрузкиВременныйПодпись);
МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузкиВременныйПодпись);
ИмяФайлаОтправкиОкончание = ПолучитьИмяВременногоФайла();
ФайлОтправкиОкончание = Новый ЗаписьТекста(ИмяФайлаОтправкиОкончание, КодировкаТекста.UTF8, Символы.ПС, Ложь);
ФайлОтправкиОкончание.ЗаписатьСтроку("");
ФайлОтправкиОкончание.ЗаписатьСтроку("--" + Boundary + "--");
ФайлОтправкиОкончание.Закрыть();
МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиОкончание);
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла();
ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
. Передача данных .
Файл = Новый Файл(ИмяФайлаДанных);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаДанных);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаПодписи);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаПодписи);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаДляЗагрузкиВременныйПодпись);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаДляЗагрузкиВременныйПодпись);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаОтправкиОкончание);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаОтправкиОкончание);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаОтправки);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаОтправки);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаДляЗагрузкиВременный);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаДляЗагрузкиВременный);
КонецЕсли;
Файл = Новый Файл(ИмяФайлаОтвета);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаОтвета);
КонецЕсли;
Если бы я увидел ее раньше, то наверно свою бы не писал), а доработал бы эту.
Основа та же - WSОпределления, разница больше в удобстве.
Различия:
1 - WSReader2 в управляемой форме
2 - WSReader2 позволяет хранить список WSDL и данных авторизациии, та обработка хранит только данные одного веб-сервиса
3 - WSReader2 сохраняет список веб-сервисов в файл, та обработка использует функцию СохранитьЗначение()
4 - WSReader2 определяет тип входных параметров ws-операции, что поволяет пользователю вводить параметры в поле соответствуюущего типа, правда пока что только простые типы. Та обработка всегда всегда предлагает ввести строку - в этом случае придется например помнить формат представления даты
5 - WSReader2 может вывести на экран как результат строкового типа, так и результат типа ОбъектXDTO. В последнем случае возможно получить представление в виде дерева значений, что приятнее просматривать. Сравнимаемая обработка выводит, если я не ошибся, только результат типа Строка.
6 - WSReader2 выводит типы параметров, типы возвращаемых значений операций, типы объектов
7 - В сравниваемой обработке, почему то, жестко забито пространоство имен веб сервиса. Возможно автор просто забыл убрать
Это лишь косметические различия, но главное различие в том, что WSReader2 развивается и получает новые функции.
Огромнейшее спасибо.
Перестал работать SoapUI, даже не понятно почему.
Вы льстите. SoapUI функциональнее.
Предполагаю почему SoapUI перестал работать. Ошибка в новой платформе https://bugboard.v8.1c.ru/error/000025093.html
Если нет доступа то процитирую:
"При обращении к объектам WebСервис, HTTPСервис и сервисам OData клиенту возвращается некорректное значение поля HTTP заголовка WWW-Authenticate в случае, если произошла ошибка авторизации - значение не содержит "realm="1C:Enterprise 8.3""."
Исправлена в 8.3.10.1877
Если 8.2 - это обычно подразумевает обычные формы.Внесите изменение в заголовок, чтобы не смущать других.
Кроме того
СертификатыУдостоверяющихЦентровWindows доступна с 8.3
Так что в заголовке обман потребителя.
ВЕРНИТЕ МНЕ мои $m )))))))))))
Шутка.
(21) Андрей здравствуйте. Поля сверху просто отображают свойства текущего веб сервиса.
1 - Сначала надо в таблицу WSОпераций добавить строку в которой указать ссылку на WSDL, логин и пароль
2 - Далее надо нажать кнопку получить WSDL. Обработка прочитает веб сервисы, операции и точки подключения.
3 - Выбрать Веб сервис
4 - Выбрать точку доступа. У 1С их две различаются версией SOAP
5 - Выбрать операцию которую надо выполнить
После этих шагов все поля сверху будут заполнены. И можно переходить на вторую вкладку для ввода параметров, а потом и на вкладку для вызова операции и получения результата.
Предложение на счет описания интересное. Я сам не описывал операции, потому даже не подумал про это.
Я вижу вы уже добавили нужное вам поле, я бы мог выложить ваш вариант, если вы не против.
Такая ошибка может быть вызвана неполадками подключения к Интернету. Нужно перезагрузить компьютер или пригласить системного администратора, чтобы устранить неполадки.
В общем, программа не может подключиться к интернету! А подключаться она может по разным причинам, например проверка обновления или загрузка курсов валют, если Вам это не нужно, то отключите:
Как отключить автоматическую загрузку курсов валют?
Если автоматическая загрузка курсов валют не нужна, то можно отключить её в настройках пользователя: в меню «Сервис» – «Настройка пользователя» снять флажок «Автозагрузка курсов валют при начале работы программы»:
Похожие FAQ
Загрузка данных в 1С из PDF 4В данной статье описан пример реализации загрузки данных накладных из PDF файлов для одного крупного Ритейла. И так у Нас есть несколько файлов в формате pdf, которые нам необходимо загрузить в 1С. Чтение PDF файлов из 1С Первым дело я стал Настройка счетов учета расчетов с контрагентами в 1С Бух 2.0 3
Для настройки счетов учета расчетов с контрагентами необходимо зайти в меню: Справочники/Бухгалтерский и налоговый учет/Счета учета расчетов с контрагентами Счета учета расчетов с контрагентами настраиваются при первом запуске программы, вмест Событие ПередЗаписью регистра сведений. Как перед записью изменить значение реквизита записи? 3
Событие ПередЗаписью возникает перед выполнением записи набора регистра сведений. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи набора регистра сведений. Пример проверки на условие и заполнение реквизита Цвет Табличная часть
Как настроить отбор строк? 3
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство: в обычном приложении параметр для ОтборСтрок - Отбор. в управляемом Функции получения всех плановых Начислений и Удержаний сотрудника 4
При доработке ЗУПа потребовалось во фронте расчетчика информативно выводить все плановые начисления и удержания по сотруднику на текущий момент. В результате 2 удобные функции, результат возвращают в виде таблицы значений: Функция ПолучитьСписокПла Посмотреть все результаты поиска похожих
Читайте также: