Я не программирую на 1С и для меня это оказалось очень сложной задачей. В открытых источниках никакой внятной информации не нашел о том, как распечатать PDF файл в 1С УНФ.
Всякий нейросети типа дипсика и чатГПТ оказались бессильны в этом вопросе.
Результат публикую, с целью что бы поисковые системы заиндексировали это добро и может быть когда нибудь и кому нибудь эта информация окажется полезной.
Как создавать HTTP сервис не описываю об этом много информации и роликов есть. Публикую только сам код который сохраняет PDF файл во временном файле и возвращает его.
Функция ПолучитьФайлЗаказаПолучитФайлЗаказа(Запрос)
УстановитьПривилегированныйРежим(Истина);
НомерЗаказа = Запрос.ПараметрыЗапроса.Получить("salesOrderCode");
ВыбЗаказ = Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(НомерЗаказа),ТекущаяДата());
Если ВыбЗаказ.Ссылка.Пустая() Тогда
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ОтветСтруктура = Новый Структура;
ОтветСтруктура.Вставить("status", false);
ОтветСтруктура.Вставить("Description", "Заказ с номером "+НомерЗаказа+" не найден в БД!");
ЗаписатьJSON(ЗаписьJSON, ОтветСтруктура);
СтрокаJSON = ЗаписьJSON.Закрыть();
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-type", "application/json;charset=utf-8");
Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
УстановитьПривилегированныйРежим(Ложь);
Возврат Ответ;
КонецЕсли;
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ЗаказПокупателя");
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
ОбъектыПечатиСчета = Новый СписокЗначений;
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ВыбЗаказ.ПолучитьОбъект().Ссылка);
Документы.ЗаказПокупателя.Печать(МассивОбъектов,ПараметрыВывода,КоллекцияПечатныхФорм,ОбъектыПечатиСчета,ПараметрыВывода);
СтрЗаказ = КоллекцияПечатныхФорм[0];
ТабЗаказ = СтрЗаказ.ТабличныйДокумент;
ВремФайлЗаказа = ПолучитьИмяВременногоФайла("pdf");
ТабЗаказ.Записать(ВремФайлЗаказа,ТипФайлаТабличногоДокумента.PDF);
order_name = "order_print_form";
Данные = Новый ДвоичныеДанные(ВремФайлЗаказа);
//
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки["Content-Type"] = "application/pdf";
Ответ.Заголовки["Content-Disposition"] =
"attachment; filename=""" + order_name + ".pdf""";
Ответ.Заголовки["Cache-Control"] = "private";
Ответ.УстановитьТелоИзДвоичныхДанных(Данные);
Возврат Ответ;
КонецФункции
Комментариев нет:
Отправить комментарий