Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

http запрос: get - получение файла excel

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

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

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

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

    HTTPСервисОтвет = Новый HTTPСервисОтвет(500);
    Если Не ТелоИзСтроки = Неопределено Тогда 
        HTTPСервисОтвет.УстановитьТелоИзСтроки(ТелоИзСтроки, КодировкаТекста.UTF8);
    КонецЕсли;
   zippygrill
 
3 - 11.02.20 - 11:47
апну
   arsik
 
4 - 11.02.20 - 11:51
Чем на той стороне проверял?
Используй fiddler
Вот тут все написано https://its.1c.ru/db/metod8dev#content:5756:hdoc
   zippygrill
 
5 - 11.02.20 - 11:54
(4) PostMan проверяю, обработкой написанной которая вызывает http ..
   zippygrill
 
6 - 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;
   pechkin
 
8 - 11.02.20 - 12:04
application/octet-stream
   pechkin
 
9 - 11.02.20 - 12:05
   Garykom
 
10 - 11.02.20 - 12:05
(0) Возвращая JSON (или XML) внутри которого результат запроса файла и ссылка на скачивание (или нет ссылки если ошибка).
По ссылке другим запросом скачают файл.
   Garykom
 
11 - 11.02.20 - 12:07
(10)+ Короче два метода get пропиши, один запрашивает формирование xls и возвращает ссылку а второй по ссылке отдает xls.
Можно сделать срок годности xls чтобы для повторных запросов почти в одно время старый отдавал а не формировал заново.
   zippygrill
 
12 - 11.02.20 - 12:08
(7) если бы в xml...
   zippygrill
 
13 - 11.02.20 - 12:09
(8) спс
   Галахад
 
14 - 11.02.20 - 12:16
(12) А чем xml не подходит?
   pechkin
 
15 - 11.02.20 - 12:20
(11) два запроса тут явно лишнее
   zippygrill
 
16 - 11.02.20 - 12:26
(14) на стороне приемника некая оболочка из всяких ярлыков и нужно отдать сразу xls для просмотра
   Garykom
 
17 - 11.02.20 - 12:45
(16) Тогда все проще, в случае ошибок создавай ошибочный xls (где внутри вместо данных написаны ошибки) и отдавай его
   pechkin
 
18 - 11.02.20 - 13:25
(17) ошибки можно и хттп ответом выдавать.
какие то ты велосипеды изобретаешь
   ДенисЧ
 
19 - 11.02.20 - 13:27
(18) @нужно отдать сразу xls для просмотра@
Код возврата но пасаран...
   pechkin
 
20 - 11.02.20 - 13:29
(19) одно другому не противоречит.
как то же ошибки все равно должны обрабатыватья. например 404
   zippygrill
 
21 - 11.02.20 - 13:55
(17) так и поступил. Вроде и код ошибки тот что надо возвращается..


Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.