Но зачастую я вижу вот такую реализацию этого процесса "пруф"
ТабДок = Новый ТабличныйДокумент;
// какое-то заполнение табличного документа
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
ДанныеФайла = Новый ДвоичныеДанные(ИмяФайла);
// формирование http запроса или сервис ответа
ЗапросИлиОтвет.УстановитьТелоИзДвоичныхДанных(ДанныеФайла);
Потом начинаются обвязки по удалению временных файлов, или хранение файлов какой-то специальной директории. Мне все это казалось неким костылем. И я решил посмотреть в сторону непопулярного объекта, который очень редко можно встретить в коде, а именно ПотокВПамяти
Но для начала, посмотрим в синтакс-помощник по методу Записать объекта ТабличныйДокумент. Мы увидим что метод перегружен и имеет 2 варианта синтаксиса: В файл и В Поток. Разница будет в 1 параметре, либо мы передаем строку с указанием пути до файла, либо передадим объект поток. Как это выглядит в коде?
Поток = Новый ПотокВПамяти;
ТабДок.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
Ну вот, ничего сложного, записали, и что делать дальше? Дальше мы обращаемся к синтакс-помощнику и ищем там ПотокВПамяти. В графе "методы" последним методом будет указан "ЗакрытьИПолучитьДвоичныеДанные". Читаем описание метода:
Возвращает экземпляр объекта ДвоичныеДанные, содержащего данные, записанный в поток
Запись в поток есть? Есть. Пробуем получить данные
ДанныеФайла = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Далее нам остается только положить двоичные данные по месту назначения.
ТабДок = Новый ТабличныйДокумент;
// какое-то заполнение табличного документа
Поток = Новый ПотокВПамяти;
ТабДок.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
ДанныеФайла = Поток.ЗакрытьИПолучитьДвоичныеДанные();
// формирование http запроса или сервис ответа
ЗапросИлиОтвет.УстановитьТелоИзДвоичныхДанных(ДанныеФайла);
// а еще я хочу чтобы браузер понимал что я отправляю ему именно pdf файл
ЗапросИлиОтвет.Заголовки.Вставить("Content-Type", "application/pdf");
Магия сработала. Мы сформировали документ в формате Табличного Документа (любой отчет или печ. форма), преобразовали его в pdf, оттуда в двоичные данные и сделали все это в оперативной памяти, не засоряя дисковое пространство.
ВНИМАТЕЛЬНО ЧИТАЙТЕ СИНТАКС-ПОМОЩНИК! В нем вы можете увидеть, что через поток вы можете записывать данные только при использовании форматов txt, pdf, ods, mxl7, mxl, xlsx, docx, ansitxt. Также недоступна запись табличного документа в поток при использовании веб клиента.