Имя: Пароль:
1C
1С v8
http сервисы отправка файлов
0 ilya Nikolaevich71
 
12.10.16
14:36
добрый день. платформа 8.3.8. Нужно реализовать отправку файлов в формате пдф из 1с, по обращению к моему сервису.

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

может ктото делал? подскажет?

Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Length", МояКартинка.Размер());
Ответ.Заголовки.Вставить("Content-Disposition","form-data; name=""AttachedFile1""; filename=""1.pdf""");
1 Amfiaray
 
12.10.16
14:40
Вот так работает:
HTTPОтвет = Новый HTTPСервисОтвет(200);
Таб = Новый ТабличныйДокумент;
ИмяФайла = ПолучитьИмяВременногоФайла(".pdf");
Таб.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
ДД = Новый ДвоичныеДанные(ИмяФайла);
ЗаписьXML  = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("invoice");
ЗаписьXML.ЗаписатьАтрибут("binary", Base64Строка(ДД));
ЗаписьXML.ЗаписатьКонецЭлемента();
СтрокаXML = ЗаписьXML.Закрыть();
HTTPОтвет.УстановитьТелоИзСтроки(СтрокаXML);
Возврат HTTPОтвет;
2 ilya Nikolaevich71
 
12.10.16
14:47
Amfiaray - спасибо за ответ.

тоесть мне вернется строка хмл с кучей символов? я просто даже протестить не могу, я то ожидаю увидеть файлик на скачивание, как на обычных сайтах! или такой возможности нет?
3 Amfiaray
 
12.10.16
14:52
Есть.
Там кажется вроде так надо:
HTTPОтвет = Новый HTTPСервисОтвет(200);
Таб = Новый ТабличныйДокумент;
ИмяФайла = ПолучитьИмяВременногоФайла(".pdf");
Таб.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
HTTPОтвет.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанные(ИмяФайла));
Возврат HTTPОтвет;
4 Stepa86
 
12.10.16
14:57
я вот так xlsx отдаю

таблДок = _ВебСервисыВызовСервера.ПрайсЛистВТабличныйДокумент();
        имяФайла = ПолучитьИмяВременногоФайла( "xlsx" );
        
        таблДок.Записать( имяФайла, ТипФайлаТабличногоДокумента.XLSX );
        
        двДанные = Новый ДвоичныеДанные( имяФайла );
        
        УдалитьФайлы( имяФайла );
        
        Ответ = Новый HTTPСервисОтвет(200);
        Ответ.УстановитьТелоИзДвоичныхДанных( двДанные );
        
        // заставляем браузер показать окно сохранения файла
        Ответ.Заголовки.Вставить("Content-Type", "application/xlsx");
        Ответ.Заголовки.Вставить("Content-Disposition", "attachment; filename=" + КодироватьСтроку( "Price.xlsx", СпособКодированияСтроки.КодировкаURL));
5 ilya Nikolaevich71
 
12.10.16
15:20
спасибо большое, очень много времени сэкономили.

тема закрыта