Имя: Пароль:
1C
1С v8
Как передать файл из 1С через http-сервис?
0 Prog111
 
13.06.19
09:44
С http-сервисами знаком слабо, возник такой вопрос:

Имеется http-сервис. В нём есть URL-шаблон. В шаблоне есть метод с типом GET с обработчиком. При обращении с сайта к 1С в модуле происходит формирование информации (в текстовом виде), которая преобразуется в json и отправляется в виде ответа на сайт обратно. Вот конечная часть процедуры:

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписатьJSON(ЗаписьJSON, МассивСтрок);
    
СтрокаДляОтвета = ЗаписьJSON.Закрыть();
    
Ответ = СформироватьHTTPОтвет(200,СтрокаДляОтвета);
    
Возврат Ответ;

КонецФункции


А вот как в качестве ответа в дополнении к JSON передать заранее сформированный средствами 1С файл (например, *.pdf)? Поискал в интернете - как-то вообще не нашёл информации, везде про загрузку на сайт примеры приведены, но не про отдачу файла в ответе.
1 Tonik992
 
13.06.19
09:47
Самый простой способ - в base64 помещайте двоичные данные.
https://html5.by/blog/wtf-base64/
2 Pro1001C
 
13.06.19
09:47
3 Prog111
 
13.06.19
09:52
(2) Вот в этом случае не могу понять: в примерах везде такая конструкция:

Соединение = Новый HTTPСоединение("http://www.mysite.com";);

Но ведь у http-сервиса другой поток: Сайт обращается к веб-серверу 1С, с определенным параметром. И по этому параметру 1С возвращает ответ (json текстовый).
Как тогда в ответе присобачить "Новый HTTPСоединение"?
4 dka80
 
13.06.19
10:07
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Disposition", СтрШаблон("attachment; filename=""%1""", ИмяФайла));
Ответ.Заголовки.Вставить("Content-Type", "application/octet-stream");
Ответ.УстановитьТелоИзДвоичныхДанных(РаботаСФайламиВызовСервера.ПолучитьДвоичныеДанныеФайла(ФайлСсылка));
5 dka80
 
13.06.19
10:11
+4
Возврат Ответ;
6 Юрий Лазаренко
 
13.06.19
10:27
(0) Если в дополнение к JSON, то как сказано в (1) файл переводить в двоичные данные, к МассивСтрок перед конвертацией его в JSON добавить эти двоичные данные и потом передать в ответе.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.