Получение результата выполнения дополнительного отчета на СКД в формате PDF через HTTP-сервис

27.05.25

Интеграция - WEB-интеграция

Иногда случается так, что в базу встроен готовый внешний отчет, и бизнесу требуется результаты работы данного внешнего отчета передавать посредством веб-сервиса во внешние системы по запросу.

Иногда случается так, что в базу встроен готовый внешний отчет, и бизнесу требуется результаты работы данного внешнего отчета передавать посредством веб-сервиса во внешние системы по запросу. В этом случае можно реализовать выгрузку отчета в формате PDF при запросе через HTTP-сервис.

  • В данной статье не будет рассматриваться вопрос развертывания веб-сервера под веб-сервисы 1С. Считаем, что он уже существует и настроен.
  • В данной статье не будет рассматриваться вопрос написания отчета на СКД. Считаем, что он уже существует.
  • В приведенной реализации HTTP-сервиса используется метод GET.

 

Функция ВебСервис(Запрос)

                //здесь могут быть получены параметры

                ЗначениеПараметраЗапроса = Запрос.ПараметрыURL.Получить("ИмяПараметра");

              
                //здесь могут быть выполнены предварительные процедуры обработки данных

               
                //получаем ссылку на отчет

                ОтчетСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("НаименованиеОтчетаВСправочнике",Истина);

               

                //сохраняем файл отчета на диск для дальнейшего использования

                ИмяФайла = ПолучитьИмяВременногоФайла();

                ДвоичныеДанные = ОтчетСсылка.ХранилищеОбработки.Получить();

                ДвоичныеДанные.Записать(ИмяФайла);

               

                //создаем объект отчета из сохраненного файла

                ОтчетОбъект = ВнешниеОтчеты.Создать(ИмяФайла,Ложь);

               

                //получаем схему компоновки данных и компоновщик настроек для дальнейшей работы

                СхемаКомпоновкиДанных = ОтчетОбъект.СхемаКомпоновкиДанных;

                КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;

               

                //загрузим настройки в компоновщик по названию варианта

КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Найти("ИмяВариантаНастроек").Настройки);

               

                //получаем настройки компоновки данных для дальнейшей работы

                Настройки = КомпоновщикНастроек.Настройки;

               

                //установим значение параметра(ов) ИмяПараметра

                ЗначениеПараметра = Неопределено;

                ПараметрСКД = Настройки.ПараметрыДанных.Элементы.Найти("ИмяПараметра");

                ПараметрСКД.Значение = ЗначениеПараметра;

                ПараметрСКД.Использование = Истина;

               

                //установим значение отбора(ов) ИмяДоступногоЭлементаОтбора

                ЗначениеОтбора = Неопределено;

                ОтборСКД = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

                ОтборСКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

                ОтборСКД.ЛевоеЗначение = Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("ИмяДоступногоЭлементаОтбора ").Поле;

                ОтборСКД.ПравоеЗначение = ЗначениеОтбора;

                ОтборСКД.Использование = Истина;

               

                ТабДокумент = Новый ТабличныйДокумент;

               

                //используем метод СкомпоноватьРезультат, чтобы во внешнем отчете могла быть вызвана процедура ПриКомпоновкеРезультата, если в ней производятся дополнительные действия

                ОтчетОбъект.СкомпоноватьРезультат(ТабДокумент,Новый ДанныеРасшифровкиКомпоновкиДанных);

               

                //если в результате не сформирован ТабличныйДокумент, то веб-сервис возвращает ошибку

                Если НЕ ТипЗнч(ТабДокумент)=Тип("ТабличныйДокумент") Тогда

                               Возврат ПолучитьОтветОбОшибке("Не удалось сформировать документ");

                КонецЕсли;

               

                //записываем документ на диск и получаем двоичные данные для отправки

                ЦелевоеИмяФайла = "Документ "+(Новый УникальныйИдентификатор)+".pdf";

                ПутьКФайлу = КаталогВременныхФайлов()+ЦелевоеИмяФайла;

                ТабДокумент.Записать(ПутьКФайлу,ТипФайлаТабличногоДокумента.PDF);

                ДвДанные = Новый ДвоичныеДанные(ПутьКФайлу);

               

                Ответ = Новый HTTPСервисОтвет(200);

                Ответ.Заголовки.Вставить("Content-Type", "application/pdf");

                Ответ.Заголовки.Вставить("Content-Length", ДвДанные.Размер());

                Ответ.Заголовки.Вставить("Content-Disposition", "inline; filename=""" + ЦелевоеИмяФайла+"""");

                Ответ.УстановитьТелоИзДвоичныхДанных(ДвДанные);

               

                Возврат Ответ;

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



Отдельно указываю код функции ПолучитьОтветОбОшибке


Функция ПолучитьОтветОбОшибке (ТекстОшибки)

                Ответ = Новый HTTPСервисОтвет(400);

                Ответ.Заголовки.Вставить("Content-Type", "text/plain; charset=utf-8");

                Ответ.УстановитьТелоИзСтроки(ТекстОшибки);

               

                Возврат Ответ;

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

 

1C СКД PDF HTTP-сервис метод GET

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    5049    4    0    

12

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    36144    71    45    

30

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    3627    3    3    

5

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19886    26    24    

22

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1548    11    2    

12

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    5979    4    2    

6

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 1C:Бухгалтерия Управленческий учет Платные (руб)

Решение осуществляет синхронизацию задач Битрикс24 и 1С, что позволяет в одной системе ставить задачи, контролировать выполнение всего пула задач с группировкой по ответственным и проектам, формировать управленческие отчеты по работе сотрудников (загрузка, просроченные задачи), уведомлять сотрудников о ходе выполнения задач посредством чат-бот Telegram

7200 руб.

04.05.2021    21476    14    19    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. slavik27 105 27.05.25 13:12 Сейчас в теме
то есть весь смысл примера/статьи

чтобы вернуть

ДвоичныеДанные

и указать в заголовках ответа что это "application/pdf" ?
DimaP; amig0; friskdb; akR00b; Трактор; zznobzz; aximo; +7 Ответить
Оставьте свое сообщение