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

Публикация № 290899

Программирование - Практика программирования

HTML PDF ActiveX

75
Объекты 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" (возможно с указанием порта).


  
75

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

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

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. 1c-intelligence 8238 07.07.14 21:34 Сейчас в теме
Файл pdf еще можно хранить в базе, в реквизите типа ХранилищеЗначения, каком-нибудь справочнике, потом получать на него навигационную ссылку, и эту ссылку подставлять в тег. Это вариант для веб-клиента.
NN2P; pt_olga; AllexSoft; BigB; dour-dead; fillipok; sapervodichka; +7 Ответить
2. 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 8238 16.07.14 07:25 Сейчас в теме
Для тонкого клиента, когда файл хранится где-то в хранилище значения, можно при открытии формы писать его во временный файл, и в поле html уже ссылаться на временный файл. При этом поле html разбирается даже без расширения файла, что это pdf и нормально его показывает.
5. нормальный такой 89 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 >";


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

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

с pdf-все ок. А как быть с mht-файлом? Какой тип этого embed? Может кто в курсе?
8. vpaoli 26 31.07.15 15:25 Сейчас в теме
Использую (5) нормальный такой, все отлично, но есть необходимость отключить показаз pdf-линейки с кнопками ( в том числе сохранение файла) . Нет ни у кого решения на эту тему ?
17. place.ru 06.03.19 11:27 Сейчас в теме
(8) удалось убрать эту линейку с кнопками в итоге? сейчас сам столкнулся с этим
18. vpaoli 26 06.03.19 16:02 Сейчас в теме
(17) ну Вы проснулись почти через 4 года )) Да уж не помню справился или нет... скорее всего справился , но как именно мой головной мозг уже не помнит.
16. sermalp 28.08.18 12:22 Сейчас в теме
(5)

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

Спасибо!
23. myxins1989 47 16.08.19 11:07 Сейчас в теме
(5)
При использовании Временного Хранилаща - вам не нужно хранить временные файлы ан сервере!

Т.е. временное хранилище не хранит файлы на сервере?
7. Patriot1C 02.04.15 16:30 Сейчас в теме
"Объекты ActiveX недоступны для размещения в управляемых формах" - не верьте 1C.
<OBJECT> - и есть ActiveХ объект в НТМL поле, которое в Winodws само является ActiveX

9. Чарик 2 31.07.15 15:43 Сейчас в теме
интересное решение, иногда нужно через веб-1с отображать различные документы
10. user636219_dmitriy.gomzin 29.12.16 09:34 Сейчас в теме
Неожиданно перестал отображать в поле XTML следующий код "<EMBED width=100% height=100% type="application/pdf" src="C:\Users\USER\AppData\Local\Temp\2\v8_6C52_1a.pdf"></EMBED>" Возможно после установки платформы 8.3.9, проверить не могу. Через iframe все работает, т.е. вот так "<iframe src="C:\Users\USER\AppData\Local\Temp\2\v8_6C52_1a.pdf"></iframe>. Но iframe отображает pdf в отдельном окне, запуская акробат. Заворачивал embed в object то же самое. Не показывает файл и все. Настройки IE не менялись. Есть идеи?
rpgshnik; +1 Ответить
11. ipoloskov 65 08.02.17 19:08 Сейчас в теме
(10) аналогичная ситуация. Причем клиенты не жалуются, значит, у них все нормально открывается. А у меня пустое окно. IE11
с iframe работает
12. KazanKokos 7 07.04.17 16:45 Сейчас в теме
А xls так смотреть можно? хочется чтобы оператор перед тем как отправить файл на регламент визуально убедилась что он именно от нужного поставщика
14. rpgshnik 1313 01.09.17 11:48 Сейчас в теме
(12)
Для обычных форм https://infostart.ru/public/293839/ (хитрая, конвертирует exel или word в PDF и аналогично как тут показано его можно выводить на экран для предварительного просмотра)
Для управляемых форм https://infostart.ru/public/120714/ (но она не идеальная, но открывает прямо ворд допустим в окне 1С, нужно быть админом на компе как понимаю).
15. lion-killer 22 04.07.18 13:54 Сейчас в теме
Вместо просмотра открывается сохранение файла. Что я делаю не так?
19. mentozavr 29 06.05.19 17:20 Сейчас в теме
На обычном клиенте все работает нормально. а на web клиенте показывать pdf отказывается
20. sapervodichka 1396 06.05.19 17:42 Сейчас в теме
(19) Значит вы что-то не по мануалу сделали, у коллег работает. Задайте на форуме вопрос с описанием действий для воспроизведения. Здесь в комментариях вы указали недостаточно информации, чтобы что-то подсказать по теме.
21. mentozavr 29 06.05.19 20:57 Сейчас в теме
(20) Делаю собственную конфигурацию под свои нужды. появилась необходимость отображения документа (в будущем и других) в поле HTML.
На толстом клиенте все отображается замышательно
когда открываю на web клиенте то ничего не отображается пишет "Не удалось загрузить PDF-документ."
в поле html передается ссылка <ht ml><EMB ED id='PDF' width=100% height=100% type="application/pdf" src="e1cib/data/Документ.РаботаСКандидатом.ДанныеРезюме?ref=b8fab42e991711d511e96b2bd81ec6db"></EMBED></html>

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресМ = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"ДанныеРезюме");
//#Если ВебКлиент Тогда
//АдресМ = ПолучитьНавигационнуюСсылкуИнформационнойБазы()+"/#"+ ПолучитьНавигационнуюСсылку(Объект.Ссылка,"ДанныеРезюме");
//#КонецЕсли
//сообщить (АдресМ);
#Если ВебКлиент Тогда
Если Не ПодключитьРасширениеРаботыСФайлами() Тогда
УстановитьРасширениеРаботыСФайлами();
ПодключитьРасширениеРаботыСФайлами();
КонецЕсли;
#КонецЕсли
Реквизит1 = "<ht ml><EMB ED id='PDF' width=100% height=100% type=""application/pdf"" src="""+АдресМ+"""></EMBED></html>";
сообщить (Реквизит1);

//Реквизит1 = АдресМ;
КонецПроцедуры
В чем может быть проблема, может кто сталкивался. Спасибо заранее.
22. DO_WHILE_LOOP 320 03.08.19 12:00 Сейчас в теме
Можно использовать и такой вариант...
Прикрепленные файлы:
sapervodichka; +1 Ответить
24. myxins1989 47 16.08.19 11:12 Сейчас в теме
(22) На IE8 для base64 ограничение в 32Кб
25. DO_WHILE_LOOP 320 16.08.19 14:50 Сейчас в теме
(24) там как раз для IE Base64 перегоняется в blob, а для остальных Base64
Оставьте свое сообщение