Выводим печатную форму документа в браузер

27.10.14

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

Подход к выводу печатной формы документа в браузер без входа в 1с

В рамках поддержки API курьерской службы появилась необходимость открывать печатную форму 1с-документа в браузере без входа в саму конфигурацию. Данная функция понадобилась для возможности печати акта приема-передачи на стороне Контрагента. 

Ниже приведу общий подход реализации данной задачи.

Исходными данными будет признак, по которому мы будем искать документ для печати, например, номер документа (number).

На стороне 1с нам понадобится создать web-сервис, который на вход будет принимать номер документа и отдавать двоичные данные pdf-файла. Возвращаемый тип: string (http://www.w3.org/2001/XMLSchema)
На стороне web-сервера сознаём php-файл, который будет выводить данные файла, полученные из 1с.

Код в 1с:

Функция Print(number) 
    НайденныйДокумент = Документы.ЗаказПокупателя.НайтиПоНомеру(number);
    ТабДок = Документы.ЗаказПокупателя.Печать(НайденныйДокумент);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
    ТабДок.Записать(ИмяВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    Возврат Base64Строка(ДвоичныеДанные);
КонецФункции


Код в php:

<?php
    header("Content-type: application/pdf; charset=UTF-8");
    $client = new SoapClient("http://api.server.com/XMLPackage.1cws?wsdl", array('login'=> 'user', 'password'=> 'password', "cache_wsdl"=> WSDL_CACHE_MEMORY, "trace" => 1,"exceptions" => 1));
    $result = $client->Print(array("number" => $_REQUEST["number"]));
    try {
        echo base64_decode($result->return);
        }
    catch (Exception $e) 
      {echo $e->getMessage();
       return;
      }
?>

http://danila.org.ua/vyivodim-pechatnuyu-formu-dokumenta-v-brauzer-iz-1s/

API печать web-сервис

См. также

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

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

128000 руб.

19.12.2023    2590    3    0    

10

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

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

60000 руб.

07.05.2019    34651    68    45    

27

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

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

57600 руб.

26.11.2024    2364    2    2    

4

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

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

36000 руб.

03.08.2020    19068    22    22    

19

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

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18838    54    50    

30

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    840    4    1    

5

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

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

24000 руб.

27.09.2024    4047    3    2    

4

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    93017    190    217    

343
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tindir 29.10.14 07:24 Сейчас в теме
С веб-сервисами всегда встает вопрос с количеством лицензий. идея хороша, НО есть вопрос где размещать php код? На лендинг пейдеже или в определенном разделе сайта организации или курьер таскает с собой на флешке веб страничку с явно указанными логинами и паролем (что не очень в плане безопасности)?
6. DanilaDru 264 29.10.14 11:14 Сейчас в теме
(1) tindir, Я размещал php-файл в директориях рядом с публикацией веб-клиента.
Доступ предоставляется по API-ключу, который так же указывается параметром в веб-сервисе. На основании API-ключа происходит сопоставление с пользователем и далее отбирается доступная информация.
26. wildwolfgolf 16.10.24 17:17 Сейчас в теме
(6) Понимаю что времени с момента написания много прошло, но может подскажете. Не очень понимаю откуда должен взяться номер? $result = $client->Print(array("number" => $_REQUEST["number"])); Вот в этой строке. Я даже пытался его вручную в поле подставить, всё равно не отрабатывает. Форма с pdf файлом открывается и пишет:
Ошибка
Не удалось загрузить PDF-документ.
2. flyer 233 29.10.14 08:09 Сейчас в теме
на вашем сайте много полезного материала. добавил в избранное. спасибо вам!
5. DanilaDru 264 29.10.14 11:08 Сейчас в теме
(2) flyer, Спасибо. По мере решения задач пополняю блог постами :)
3. WanGoff 138 29.10.14 09:30 Сейчас в теме
Как по мне, немного банальный пост.
Но, может я ошибаюсь и она кому-то поможет. Лайки покажут.
igo1; EliasShy; qwinter; Трактор; +4 Ответить
4. DanilaDru 264 29.10.14 11:07 Сейчас в теме
(3) WanGoff, спасибо за отзыв.
Наверное если бы я завернул это в подсистему, то было бы не так банально.
7. John_d 5978 29.10.14 11:21 Сейчас в теме
Интересно. Хорошая идея.
8. AganinEvgeniy 2 29.10.14 11:26 Сейчас в теме
Статья не плохая ... но я бы наверное ещё и отбор по периоду прикрутил. Не думаю, что у клиента нужно распечатывать данные за уже прошедшие годы...да и наверное и месяцы.
10. DanilaDru 264 29.10.14 11:48 Сейчас в теме
(8) AganinEvgeniy, Спасибо. Это пример для демонстрации подхода. На рабочем варианте веб-сервис получает большее количество входных параметров.
9. lefthander 29.10.14 11:41 Сейчас в теме
Огромное спасибо. Надеюсь это поможет мне решить аналогичное задание.
11. PiccaHut001 29.10.14 15:15 Сейчас в теме
может, когда-нибуть, пригодится.
12. monkbest 114 30.10.14 07:26 Сейчас в теме
а где пишется код 1С, в модуле чего?
13. DanilaDru 264 30.10.14 07:43 Сейчас в теме
(12) monkbest, print() это метод операции веб-сервиса. Пишется в модуле веб-сервиса.
14. monkbest 114 30.10.14 08:39 Сейчас в теме
(13) блин ни разу не делал еще веб сервисов, потребности не было. Все хочу для самообучения попробовать, но никак не получается. Не попадается свежей законченной статьи, либо старые про 8.1/8.2 либо вот как эта. Очень часто читаю про них свежие статьи в ленте ИС, но вот как-то они все обгрызанные что ли. Из серединки контекста вырванные. Нет пошаговой инструкции от открытия конфигуратора, до запуска в браузере
AfroditaS; +1 Ответить
17. DanilaDru 264 30.10.14 09:52 Сейчас в теме
(14) monkbest, я не ставил целью научить читателя писать веб-сервисы, извините.
18. monkbest 114 30.10.14 10:28 Сейчас в теме
(17) да я понимаю, просто мысли в слух. Грубо говоря, чтобы повторить Ваш опыт, надо еще пяток статей прочитать сначала :)
19. lefthander 30.10.14 12:43 Сейчас в теме
(18) Это направление поиска и первый шаг. Конечно готового решения на все случаи жизни не существует.
20. monkbest 114 30.10.14 13:33 Сейчас в теме
(19) lefthander, да мне не на все случаи, просто для саморазвития, понять суть механизмов. Как-то так случилось, что у заказчиков веб - не востребован, хотя во франче уже давно тружусь.
15. SemenovaMarinaV 30.10.14 09:37 Сейчас в теме
Идея хороша, но утопична
16. DanilaDru 264 30.10.14 09:51 Сейчас в теме
(15) SemenovaMarinaV, В чём утопичность?
21. SemenovaMarinaV 13.11.14 16:37 Сейчас в теме
Наверное очень полезно, когда нибудь пригодится
22. crazy.admin91119 18.12.14 17:09 Сейчас в теме
Для кого то может быть очень полезная статья :)
для меня была интересна часть про 1С :-)
23. Mafoni 12.01.15 15:45 Сейчас в теме
А как насчет безопастности сего решения ?
24. DanilaDru 264 12.01.15 17:58 Сейчас в теме
(23) Mafoni, ограничиваете ролями доступ для пользователя, который указывается в SoapClient
25. lnnd 18 17.03.15 15:55 Сейчас в теме
Оставьте свое сообщение