Имя: Пароль:
1C
 
Отправка больших двоичных файлов на веб сервис 8.3
0 pomorcevart
 
19.03.18
10:10
Добрый день!

Есть веб сервис. На который отправляются файлы размером 8 мегабайт.

На 8.2 все работает нормально, за секунды.
На 8.3 висит и отваливается по тайм ауту.

О=Новый WSОпределения("https://sync.delrus.ru/sync/svc.asmx?WSDL";,Пользователь,Пароль);
        С=О.Сервисы[0];
        П=Новый WSПрокси(О,С.URIПространстваИмен,С.Имя,С.ТочкиПодключения[0].Имя);
        П.Пользователь=Пользователь;
        П.Пароль=Пароль;
        Ф=П.ФабрикаXDTO;
        П0=Ф.Создать(Ф.Пакеты.Получить(С.URIПространстваИмен).Получить("PutData00"));
        
        Х=Новый ЧтениеТекста(Адрес);
        П0.db_id=ПолучениеДанныхЧерезВебСервисы.ЧисловойКодБазыДанных();      // Код базы 1С
        П0.query=Х.Прочитать();  // Запрос в XML
        Х.Закрыть();
        Р=П.PutData00(П0);


Вот та последней строке вываливается ошибка:
{Справочник.Номенклатура.Форма.ФормаЭлементаУправляемая.Форма(189)}: Ошибка при вызове метода контекста (PutData00): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {https://sync.delrus.ru/}:svc:PutData00(): При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет:   Failure when receiving data from the peer: Ошибка работы с Интернет:   Failure when receiving data from the peer

8.2 и 8.3 установлены на одном сервере, настройки одинаковые, только порты разные для подключения.

Прокси и файрволл проверили, все отключено.

Может кто сталкивался с подобным?

Заранее благодарю.
1 breezee
 
19.03.18
10:44
(0) Кто вас учил так переменные называть?(
2 pomorcevart
 
19.03.18
10:48
(1) База досталась в наследство.
3 DmitrO
 
19.03.18
10:54
Я сталкивался.
Веб-сервер тоже один? У IIS по-дефолту есть ограничение на прием по объему данных в одном запросе.
4 pomorcevart
 
19.03.18
11:01
(3) Все тоже самое, 2 базы с одинаковыми конфигурациями, на одном сервере, 1 база на 8.3, вторая на 8.2. В первой ошибка, во второй за секунду прикрепляются файлы и все улетает.
5 pomorcevart
 
19.03.18
11:03
(3) Насколько я знаю, там около 30 мегабайт ограничение, а тут 8. Хотяяя, если отправляем одно страничный маленький файл, то он и с 8.3 улетает без проблем.
6 pomorcevart
 
20.03.18
08:30
Файлы XML даже одинаковые, которые отправляются на веб сервис.

    Адрес = КаталогВременныхФайлов() + ИдентификаторЗаявки + ".xml";
    ФайлНаУнификацию = Новый ЗаписьXML;
    ФайлНаУнификацию.ОткрытьФайл(Адрес);
    ФайлНаУнификацию.ЗаписатьОбъявлениеXML();
    ФайлНаУнификацию.ЗаписатьНачалоЭлемента("Запросы");
    Для Каждого Эл Из ТаблицаФайловСертификатов.ТаблицаФайлов Цикл
        Если Эл.Пометка Тогда
            Ф = Новый Файл(Эл.ИмяФайла);
            ФайлНаУнификацию.ЗаписатьНачалоЭлемента("Сертификат");
            ФайлНаУнификацию.ЗаписатьАтрибут("РегНомер", "");
            ФайлНаУнификацию.ЗаписатьАтрибут("УнКод", Формат(ТаблицаФайловСертификатов.ТаблицаФайлов.Индекс(Эл) + 1, "ЧГ="));
            ФайлНаУнификацию.ЗаписатьНачалоЭлемента("Файл");
            ФайлНаУнификацию.ЗаписатьАтрибут("Расширение", Ф.Расширение);
            ФайлНаУнификацию.ЗаписатьАтрибут("Файл", Base64Строка(Новый ДвоичныеДанные(Эл.ИмяФайла)));
            ФайлНаУнификацию.ЗаписатьКонецЭлемента();
            ФайлНаУнификацию.ЗаписатьКонецЭлемента();
        КонецЕсли;
    КонецЦикла;
    ФайлНаУнификацию.ЗаписатьНачалоЭлемента("Запрос");
    СтруктураРеквизитов = ПолучитьСтруктуруРеквизитовНаСервере();
    Для каждого Элемент Из СтруктураРеквизитов Цикл
        ФайлНаУнификацию.ЗаписатьАтрибут(Элемент.Ключ, Элемент.Значение);
    КонецЦикла;
    ФайлНаУнификацию.ЗаписатьАтрибут("ИдентификаторЗапроса", ИдентификаторЗаявки);
    ФайлНаУнификацию.ЗаписатьАтрибут("Примечание", ?(ЗначениеЗаполнено(ТаблицаФайловСертификатов.СписокРеквизитов[0].Значение),"Автор запроса: " + ТаблицаФайловСертификатов.СписокРеквизитов[0].Значение,"") + ?(ЗначениеЗаполнено(ТаблицаФайловСертификатов.СписокРеквизитов[1].Значение),"; " + ТаблицаФайловСертификатов.СписокРеквизитов[1].Значение,"") + ?(ЗначениеЗаполнено(ТаблицаФайловСертификатов.СписокРеквизитов[2].Значение),"; комментарий: " + ТаблицаФайловСертификатов.СписокРеквизитов[2].Значение,""));
    Для Каждого Эл Из ТаблицаФайловСертификатов.ТаблицаФайлов Цикл
        Если Эл.Пометка Тогда
            ФайлНаУнификацию.ЗаписатьНачалоЭлемента("Сертификат");
            ФайлНаУнификацию.ЗаписатьАтрибут("УнКод", Формат(ТаблицаФайловСертификатов.ТаблицаФайлов.Индекс(Эл) + 1, "ЧГ="));
            ФайлНаУнификацию.ЗаписатьКонецЭлемента();
        КонецЕсли
    КонецЦикла;
    ФайлНаУнификацию.ЗаписатьКонецЭлемента();
    ФайлНаУнификацию.ЗаписатьКонецЭлемента();
    ФайлНаУнификацию.Закрыть();
    
    
    Попытка
        О=Новый WSОпределения("https://sync.delrus.ru/sync/svc.asmx?WSDL";,Пользователь,Пароль);
        С=О.Сервисы[0];
        П=Новый WSПрокси(О,С.URIПространстваИмен,С.Имя,С.ТочкиПодключения[0].Имя);
        П.Пользователь=Пользователь;
        П.Пароль=Пароль;
        Ф=П.ФабрикаXDTO;
        П0=Ф.Создать(Ф.Пакеты.Получить(С.URIПространстваИмен).Получить("PutData00"));
        
        Х=Новый ЧтениеТекста(Адрес);
        П0.db_id=ПолучениеДанныхЧерезВебСервисы.ЧисловойКодБазыДанных();      // Код базы 1С
        П0.query=Х.Прочитать();  // Запрос в XML
        Х.Закрыть();
        Р=П.PutData00(П0);
        Объект.СтатусТовара = ПолучитьЗначениеПеречисленияСтатусТовараНомНаСервере("ОтправленВЦО");
        ГСЧ =  Новый ГенераторСлучайныхЧисел();
        Объект.ИдентификаторЗаявки = ИдентификаторЗаявки;
        Объект.СтатусТовара = Перечисления.СтатусТовараНом.ОтправленВЦО;
        ЭтаФорма.Записать();
        Элементы.ВыгрузитьВЦО.Доступность = Ложь;
        Элементы.ПроверитьЗаявку.Доступность = Истина;
        УстановитьНедоступностьРеквизитовСинхронизации();
        Предупреждение("Номенклатура: " + Объект.Наименование + " успешно выгружена на сайт УСН");
        ЭтаФорма.Закрыть();
    Исключение
        Сообщить(ОписаниеОшибки());
        Объект.ИдентификаторЗаявки = "";
    КонецПопытки;
7 Сияющий в темноте
 
20.03.18
10:13
проверяйти через прокси,что там посылается,сравнивайте заголовки и таймауты
Ошибка? Это не ошибка, это системная функция.