Имя: Пароль:
1C
1С v8
http сервис не возвращает никакого ответа
0 Мистикан
 
07.05.19
00:40
mssql 2012, 8.3.8, IIS
При помещении данных более 15 мегабайт в тело ответа до клиента вообще не приходит никакой ответ, код сервиса выполняется полностью. В чем может быть проблема?
Код сервиса:
        ЗапросСтрока = Запрос.ПолучитьТелоКакСтроку();
        
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ЗапросСтрока);
        ПараметрыЗапроса = ПрочитатьJSON(ЧтениеJSON,,"ДатаУспешнойЗагрузки",ФорматДатыJSON.ISO);
        
        Склад = Справочники.Склады.ПолучитьСсылку(Новый УникальныйИдентификатор(ПараметрыЗапроса.ИДСклада));
        Касса = Справочники.КассыККМ.ПолучитьСсылку(Новый УникальныйИдентификатор(ПараметрыЗапроса.ИДКассы));
        
        
        //+++    Чтобы инициировать полное обновление справочной информации для нужной кассы
        //         нужно очистить историю загрузки или указать пустую дату в последней записи успешной загрузки
        //        (для отладки или пригодится в процессе)
        ПолныйОбмен = Ложь;
        ДатаУспешногоОбменаФУД = Дата("00010101000000");    
        ПоследняяУспешнаяЗагрузка = РегистрыСведений.ИсторияОбменаФУД.СрезПоследних(,Новый Структура("НаправлениеОбмена,Склад,Касса,СтатусОбмена",Перечисления.НаправлениеОбмена.Загрузка,Склад,Касса,Перечисления.СтатусыОбменаФУД.Успешно));
        Если ПоследняяУспешнаяЗагрузка.Количество() <> 0 Тогда
            Если ПоследняяУспешнаяЗагрузка[0].ДатаУспешногоОбмена = Дата("00010101000000") Тогда
                ПолныйОбмен = Истина;    
            Иначе
                ДатаУспешногоОбменаФУД = ПоследняяУспешнаяЗагрузка[0].ДатаУспешногоОбмена;
            КонецЕсли;
        Иначе
            ПолныйОбмен = Истина;
            ДатаУспешногоОбменаФУД = Дата("00010101000000");
        КонецЕсли;
        //---
        Если ДатаУспешногоОбменаФУД = Дата("00010101000000") Тогда
            ДатаЗапроса = ДатаУспешногоОбменаФУД;
        Иначе
            ДатаЗапроса = ПараметрыЗапроса.ДатаУспешнойЗагрузки;
        КонецЕсли;
        
        
        Если ТипЗнч(ПараметрыЗапроса) = Тип("Структура") Тогда
            МассивНоменклатуры = ПолучитьМассивНоменклатуры(ПолныйОбмен,ДатаЗапроса);        
            МассивЦен = ПолучитьМассивЦен(ПолныйОбмен,Склад,ДатаЗапроса);
            МассивКассиров = ПолучитьМассивКассиров(ПолныйОбмен,Склад,ДатаЗапроса);
            МассивНастройкиГруппыФР = ПолучитьМассивНастройкиГруппыФР(ПолныйОбмен,Касса,ДатаЗапроса);
            СтруктураВыгрузки = Новый Структура("Номенклатура,Цены,Кассиры,НастройкиГруппыФР",МассивНоменклатуры,МассивЦен,МассивКассиров,МассивНастройкиГруппыФР);
            СтрокаJSON = ПолучитьСтрокуJSON(СтруктураВыгрузки);    
            Ответ = СтрокаJSON;
        Иначе
            Ответ = Строка(ТипЗнч(ПараметрыЗапроса));
        КонецЕсли;
        
        HTTPОтвет = Новый HTTPСервисОтвет(200);
        HTTPОтвет.УстановитьТелоИзСтроки(Ответ);
        
        мз = РегистрыСведений.ИсторияОбменаФУД.СоздатьМенеджерЗаписи();
        мз.Период = ТекущаяДата();
        мз.НаправлениеОбмена = Перечисления.НаправлениеОбмена.Загрузка;
        мз.Склад = Склад;
        мз.Касса = Касса;
        мз.СтатусОбмена = Перечисления.СтатусыОбменаФУД.Успешно;
        мз.ДатаУспешногоОбмена = ПараметрыЗапроса.ДатаУспешнойЗагрузки;
        мз.Записать(Истина);
    Исключение
        HTTPОтвет = Новый HTTPСервисОтвет(520);
        HTTPОтвет.УстановитьТелоИзСтроки(ОписаниеОшибки());
        
        мз = РегистрыСведений.ИсторияОбменаФУД.СоздатьМенеджерЗаписи();
        мз.Период = ТекущаяДата();
        мз.НаправлениеОбмена = Перечисления.НаправлениеОбмена.Загрузка;
        мз.Склад = Склад;
        мз.Касса = Касса;
        мз.СтатусОбмена = Перечисления.СтатусыОбменаФУД.Ошибка;
        мз.ДатаУспешногоОбмена = ПараметрыЗапроса.ДатаУспешнойЗагрузки;
        мз.Описание = ОписаниеОшибки();
        мз.Записать(Истина);
    КонецПопытки;
    Возврат HTTPОтвет;
1 Fram
 
07.05.19
00:46
каким клиентом проверял? обычным браузером или постманом пробовал?
ну и 15Мб как то лишка для http запроса. разбить бы.
2 Мистикан
 
07.05.19
00:49
(1) нет еще... на другом конце розница... как я понимаю IIS не пропускает... но я в нем нуб.
3 palsergeich
 
07.05.19
00:52
(2) Есть настройка в ИИС максимальный размер запроса.
4 palsergeich
 
07.05.19
00:53
5 palsergeich
 
07.05.19
00:53
Увеличь - должно помочь
6 Мистикан
 
07.05.19
00:55
увеличивал до 200мб пару раз прошло. потом опять вернулось на круги своя.
7 palsergeich
 
07.05.19
00:56
(6) Ну дык может там больше 200 мб?
8 Мистикан
 
07.05.19
00:56
тоже нагуглил эту статью
9 Мистикан
 
07.05.19
00:56
(7) нет.. 39 мб не более.. но затыкается на 15+
10 palsergeich
 
07.05.19
00:58
Пес знает, у нас сметы по пол гига одним HTTP запросом отправлялись.
Ты точно там где надо крутанул?
11 palsergeich
 
07.05.19
00:58
(10) Ой не сметы, а конструкторская дока
12 palsergeich
 
07.05.19
00:59
Там еще бывает не на ИИС, а на железке ограничение
13 Мистикан
 
07.05.19
01:00
(10) да вроде да.. сейчас перепроверил.. оказывается 2gb стоит вообще
14 Мистикан
 
07.05.19
01:00
(12) на железке?
15 NorthWind
 
07.05.19
06:51
(0) судя по тому что я видел - не приняты такие объемы. Если надо возвращать большой массив данных, то обычно делают несколько запросов, а в качестве параметров указывают, с какого по какой элемент списка возвращать.
16 Cyberhawk
 
07.05.19
08:27
Начиная где-то с 8.3.8 мультипарт работает из коробки, нужно лишь правильно заголовок "Content-Type" задать, ну и разделитель
17 Мистикан
 
07.05.19
19:00
(16) ок спасибо за наводку.. поищу инфу
18 Cyberhawk
 
07.05.19
19:06
(17) Даже в Зазеркалье кажись готовый пример был, коли ИТС не осилил
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.