gifts2017

Размещение PDF в Поле HTML управляемой формы для просмотра веб-клиентом

Опубликовал Dmitry Malyshev (SaperVodichka) в раздел Программирование - Практика программирования

Объекты ActiveX недоступны для размещения в управляемых формах, как было ранее в обычных, при этом необходимость размещения таких объектов востребована.
Покопался на форумах, мне нужно было разместить файл PDF в управляемой форме, чтобы доступ был в веб-клиенте. В тонком клиенте получилось (не как в обычной форме, но довольно просто), а в веб-клиенте потребовалось покопаться. Привожу описание как сделал размещение файла PDF, с целью чтобы вы не спотыкались на моих граблях.    
Объекты ActiveX недоступны для размещения в управляемых формах, как было ранее в обычных, при этом необходимость размещения таких объектов востребована. 
Покопался на форумах, мне нужно было разместить файл PDF в управляемой форме, чтобы доступ был в веб-клиенте. В тонком клиенте получилось (не как в обычной форме, но довольно просто), а в веб-клиенте потребовалось покопаться. Привожу описание как сделал размещение файла PDF.  

Сразу замечу, что у Вас уже должен быть установлен веб-сервер и база 1С опубликована на нем.
Моя ситуация: веб-сервер IIS, база 1С 8.3 в клиент-серверном варианте.
В качестве примера создаю простую обработку с управляемой формой.

1) В начале нам необходимо разместить на форме объект, который будет визуально отображать наш файл.
Для этого:
- Добавим реквизит формы "Реквизит1" с типом "Строка"
- Разместим реквизит на управляемой форме
- Изменим для реквизита на форме свойство "Вид", установив его в "Поле HTML документа"



 
 
2) ВАРИАНТ для Тонкий клиент, Толстый клиент:

Открытие файла осуществляется простым присваиванием реквизиту формы "Реквизит1" пути к файлу.



Примечание: Здесь, например, можно организовать диалог выбора файла и отображать конкретный файл. 
Если же, например, файлы хранятся в базе, то предварительно сохранить файл в предопределенный каталог.  


3) ВАРИАНТ для Веб-клиент:

Документ HTML в веб-клиенте приобретает тип "ВнешнийОбъект", в тонком клиенте он имеет тип "COM-объект". Исходя из этой ограничивающей особенности режима веб-клиента "Реквизит1" необходимо определять ещё на сервере тегами HTML.



data = "путь к опубликованному на веб-сервере файлу"
type = "тип приложения для открытия"
width = "ширина окна"
height = "высота окна"

ВНИМАНИЕ: Чтобы опубликовать файл на веб-сервере его достаточно поместить в корневую папку веб-сервера. Для IIS положить в папку: "...\inetpub\wwwroot" (у меня был путь "C:\inetpub\wwwroot").
Т.е. в данном примере файл лежал в C:\inetpub\wwwroot\Example_file.pdf  (в теге это текст data = "http://localhost/Example_file.pdf")

 В итоге имеем:



 
Примечание: В тексте data = "http://localhost/Example_file.pdf"localhost - это условное обозначение веб-сервера на локальном компьютере. Здесь вам нужно будет указывать либо localhost, либо ip адрес веб-сервера внутрисетевой data = "http://192.168.10.174/Example_file.pdf" или внешний адрес data = "http://195.04.04.04/Example_file.pdf" (возможно с указанием порта).


  

Скачать файлы

Наименование Файл Версия Размер
_ОткрытиеHTML.epf 25
.epf 5,80Kb
07.07.14
25
.epf 5,80Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Иван Белокаменцев (1c-intelligence) 07.07.14 21:34
Файл pdf еще можно хранить в базе, в реквизите типа ХранилищеЗначения, каком-нибудь справочнике, потом получать на него навигационную ссылку, и эту ссылку подставлять в тег. Это вариант для веб-клиента.
AllexSoft; BigB; dour-dead; fillipok; SaperVodichka; +5 Ответить 1
2. Dmitry Malyshev (SaperVodichka) 08.07.14 10:13
3. Сергей Вн (EmpireSer) 15.07.14 10:28
Как я знаю веб клиенты могут открывать и локальные файлы
Например путь к локальному файлу "new 2.txt" для веб клиента (например Хром) будет выглядить как:
file:///D:/new%20%202.txt

Может и у Вас так получится открывать локальные PDF.
4. Иван Белокаменцев (1c-intelligence) 16.07.14 07:25
Для тонкого клиента, когда файл хранится где-то в хранилище значения, можно при открытии формы писать его во временный файл, и в поле html уже ссылаться на временный файл. При этом поле html разбирается даже без расширения файла, что это pdf и нормально его показывает.
5. artur rakhmatulin (нормальный такой) 17.07.14 12:10
учитесь обрабатывать файлы на сервере. Используйте ВременноеХранилище.
В нашей конфе мы тоже пользует ПолеHTMLДокумента для отображения всяких картинок и pdf

HTML код для реквизита формы
htmlТекст = 
"< html >		
|< head >
|< /head >
|< body >"+previewTAG+"
|< /body >< /html >";
...Показать Скрыть


previewTAG - меняется в зависимоти от типа вложения, если pdf, то передаем туда
previewTAG = "< EMBED width=100% height=100% type=""application/pdf"" src="+АдресВременногоХранилища+" >< /EMBED >";


АдресВременногоХранилища - в свою очередь содержит в себе реальный АдресВременногоХранилища полученые методом глобального контекста ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)

При использовании Временного Хранилаща - вам не нужно хранить временные файлы ан сервере!
BushNik; globalteddi; Chronic; AllexSoft; monkbest; endym; ZOMI; CratosX; BigB; rozer; SaperVodichka; +11 Ответить 2
6. Евгений Моисеенко (bpc222) 16.11.14 19:49
(5) нормальный такой,

с pdf-все ок. А как быть с mht-файлом? Какой тип этого embed? Может кто в курсе?
7. Матвей Кудашкин (Patriot1C) 02.04.15 16:30
"Объекты ActiveX недоступны для размещения в управляемых формах" - не верьте 1C.
<OBJECT> - и есть ActiveХ объект в НТМL поле, которое в Winodws само является ActiveX

8. vpaoli 31.07.15 15:25
Использую (5) нормальный такой, все отлично, но есть необходимость отключить показаз pdf-линейки с кнопками ( в том числе сохранение файла) . Нет ни у кого решения на эту тему ?
9. Алекс Н (Чарик) 31.07.15 15:43
интересное решение, иногда нужно через веб-1с отображать различные документы
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа