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

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С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1605    1    1    

4

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

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

36000 руб.

03.08.2020    18593    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20754    13    19    

18

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    503    2    0    

5

Обмен с ГосИС 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    92230    184    217    

337
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tindir 29.10.14 07:24 Сейчас в теме
С веб-сервисами всегда встает вопрос с количеством лицензий. идея хороша, НО есть вопрос где размещать php код? На лендинг пейдеже или в определенном разделе сайта организации или курьер таскает с собой на флешке веб страничку с явно указанными логинами и паролем (что не очень в плане безопасности)?
6. DanilaDru 263 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 263 29.10.14 11:08 Сейчас в теме
(2) flyer, Спасибо. По мере решения задач пополняю блог постами :)
3. WanGoff 138 29.10.14 09:30 Сейчас в теме
Как по мне, немного банальный пост.
Но, может я ошибаюсь и она кому-то поможет. Лайки покажут.
igo1; EliasShy; qwinter; Трактор; +4 Ответить
4. DanilaDru 263 29.10.14 11:07 Сейчас в теме
(3) WanGoff, спасибо за отзыв.
Наверное если бы я завернул это в подсистему, то было бы не так банально.
7. John_d 5916 29.10.14 11:21 Сейчас в теме
Интересно. Хорошая идея.
8. AganinEvgeniy 2 29.10.14 11:26 Сейчас в теме
Статья не плохая ... но я бы наверное ещё и отбор по периоду прикрутил. Не думаю, что у клиента нужно распечатывать данные за уже прошедшие годы...да и наверное и месяцы.
10. DanilaDru 263 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 263 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 263 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 263 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 263 12.01.15 17:58 Сейчас в теме
(23) Mafoni, ограничиваете ролями доступ для пользователя, который указывается в SoapClient
25. lnnd 18 17.03.15 15:55 Сейчас в теме
Оставьте свое сообщение