Имя: Пароль:
1C
1С v8
http запрос: get - получение файла excel
0 zippygrill
 
11.02.20
11:16
Всем привет!
Возникла необходимость раздать из 1С печатную форму одного объекта. А точнее файл Excel.

описал в конфе новый http сервис с методом get. Сформировал печ.форму, сохраняю табл.документ во временный файл xls и далее Двоичные данные из него.
Двоичные данные передаю в теле запроса.

    Если Не ТелоИзДвоичныеДанные = Неопределено Тогда
        HTTPСервисОтвет.УстановитьТелоИзДвоичныхДанных(ТелоИзДвоичныеДанные);
    КонецЕсли;
    Возврат HTTPСервисОтвет;

Вопрос в чем - как лучше передать возможные ошибки при формировании и выполнении запроса get принимающей стороне?
В заголовках ответа что только не вставлял - на стороне приемника их там тупо нет. Ни моего переопределяемого кода ответа.
1 zippygrill
 
11.02.20
11:16
*Двоичные данные передаю в тело Ответа*
2 zippygrill
 
11.02.20
11:23
например, пытаюсь так передать в Ответ инфу что переданный код <> 10 символам прямо в теле запроса из Строки, вместо из двоичных данных. Но, на стороне приемника, код ответа 400, вместо 500

    HTTPСервисОтвет = Новый HTTPСервисОтвет(500);
    Если Не ТелоИзСтроки = Неопределено Тогда
        HTTPСервисОтвет.УстановитьТелоИзСтроки(ТелоИзСтроки, КодировкаТекста.UTF8);
    КонецЕсли;
3 zippygrill
 
11.02.20
11:47
апну
4 arsik
 
гуру
11.02.20
11:51
Чем на той стороне проверял?
Используй fiddler
Вот тут все написано https://its.1c.ru/db/metod8dev#content:5756:hdoc
5 zippygrill
 
11.02.20
11:54
(4) PostMan проверяю, обработкой написанной которая вызывает http ..
6 zippygrill
 
11.02.20
11:58
(4) там нет ни одного ответа на мой вопрос!

К тому же, попутно возник еще один: что в Content-Type вставлять если в теле запроса уходит двоичные данные

Ответ.Заголовки.Вставить("Content-type", "application/xml");
7 Галахад
 
гуру
11.02.20
12:03
Чот не понял. Типа того?

Структура = Новый Структура;
Структура.Вставить("Ответ", "Гуд");
Структура.Вставить("Данные", Данные);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Структура);
СтрокаXML = ЗаписьXML.Закрыть();    
    
Возврат СтрокаXML;
8 pechkin
 
11.02.20
12:04
application/octet-stream
9 pechkin
 
11.02.20
12:05
10 Garykom
 
гуру
11.02.20
12:05
(0) Возвращая JSON (или XML) внутри которого результат запроса файла и ссылка на скачивание (или нет ссылки если ошибка).
По ссылке другим запросом скачают файл.
11 Garykom
 
гуру
11.02.20
12:07
(10)+ Короче два метода get пропиши, один запрашивает формирование xls и возвращает ссылку а второй по ссылке отдает xls.
Можно сделать срок годности xls чтобы для повторных запросов почти в одно время старый отдавал а не формировал заново.
12 zippygrill
 
11.02.20
12:08
(7) если бы в xml...
13 zippygrill
 
11.02.20
12:09
(8) спс
14 Галахад
 
гуру
11.02.20
12:16
(12) А чем xml не подходит?
15 pechkin
 
11.02.20
12:20
(11) два запроса тут явно лишнее
16 zippygrill
 
11.02.20
12:26
(14) на стороне приемника некая оболочка из всяких ярлыков и нужно отдать сразу xls для просмотра
17 Garykom
 
гуру
11.02.20
12:45
(16) Тогда все проще, в случае ошибок создавай ошибочный xls (где внутри вместо данных написаны ошибки) и отдавай его
18 pechkin
 
11.02.20
13:25
(17) ошибки можно и хттп ответом выдавать.
какие то ты велосипеды изобретаешь
19 ДенисЧ
 
11.02.20
13:27
(18) @нужно отдать сразу xls для просмотра@
Код возврата но пасаран...
20 pechkin
 
11.02.20
13:29
(19) одно другому не противоречит.
как то же ошибки все равно должны обрабатыватья. например 404
21 zippygrill
 
11.02.20
13:55
(17) так и поступил. Вроде и код ошибки тот что надо возвращается..