// Процедуры и функции &НаКлиенте Процедура ОбновитьТекстБраузера(ТекАдресФайлаВХранилище) Если ЭтоТест Тогда // {{ Для теста ОбновитьТекстБраузера_Тест(ТекАдресФайлаВХранилище); // }} Для теста Иначе Браузер = ?(ЭтоВебКлиент, ТекАдресФайлаВХранилище, "file:///" + СтрЗаменить(ПутьКФайлуPDF, "\", "/")); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СозданиеДвоичныхДанныхИзФайлаЗавершение(ДвоичныеДанные, ДополнительныеПараметры) Экспорт ТекАдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); ОбновитьТекстБраузера(ТекАдресФайлаВХранилище); Если ЭтоТест Тогда Если Не ЭтоВебКлиент Тогда // {{ Для теста ПутьКФайлу_HTML = "" + ПутьКФайлуPDF + ".html"; ПараметрыЗаписиТекстовогоДокумента = Новый Структура; ПараметрыЗаписиТекстовогоДокумента.Вставить("ПутьКФайлу", ПутьКФайлу_HTML); ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст(Браузер); ТекстовыйДокумент.НачатьЗапись(Новый ОписаниеОповещения("ПослеНачалаЗаписиТекстовогоДокумента", ЭтотОбъект, ПараметрыЗаписиТекстовогоДокумента), ПутьКФайлу_HTML); // }} Для теста КонецЕсли; КонецЕсли; КонецПроцедуры // {{ Для теста #Область Тест &НаКлиенте Процедура ОбновитьТекстБраузера_Тест(ТекАдресФайлаВХранилище) // Формирование может быть вынесено на сервер (при необходимости использования в регламентных и фоновых заданиях) ТекУникальныйИдентификатор = СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); Если ЭтоВебКлиент Тогда Браузер = "<!DOCTYPE html> |<html> |<head> |<meta charset='utf-8'> |<meta name='viewport' content='width=device-width, initial-scale=1.0'> |<meta http-equiv='X-UA-Compatible' content='IE=edge'> |<style>html,body{margin:0;padding:0;} iframe{width:100%;height:99.4vh;border:none;}</style> |</head> |<body id='" + ТекУникальныйИдентификатор + "'> |<iframe src='" + ТекАдресФайлаВХранилище + "'></iframe> |</body> |</html> |"; Иначе Браузер = "<!DOCTYPE html> |<html> |<head> |<meta charset='utf-8'> |<meta name='viewport' content='width=device-width, initial-scale=1.0'> |<meta http-equiv='X-UA-Compatible' content='IE=edge'> |<style>html,body{margin:0;padding:0;} embed, iframe{width:100%;height:99.4vh;border:none;} button {display: inline-block;border-radius: 2px;color: #4b4b4b;font-family: Arial;font-size: 10pt;position: relative;margin: 0;vertical-align: top;word-spacing: normal;box-sizing: border-box;border: 1px solid rgba(0,0,0,0.3);border-bottom-color: rgba(0, 0, 0, 0.3);border-bottom-color: rgba(0,0,0,0.4);background-color: #fff;box-shadow: 0 1px 0 0 rgba(0,0,0,0.2);height: 27px;}</style> |<script> |var fileName = '" + ?(ЗначениеЗаполнено(ИмяФайлаPDF), ИмяФайлаPDF, "document.pdf") + "'; |var data='" + СтрЗаменить(Base64Строка(ПолучитьИзВременногоХранилища(ТекАдресФайлаВХранилище)), Символы.ВК + Символы.ПС, "") + "'; |var byteCharacters = atob(data); |var byteNumbers = new Array(byteCharacters.length); |for (var i = 0; i < byteCharacters.length; i++) { | byteNumbers[i] = byteCharacters.charCodeAt(i); |} |var byteArray = new Uint8Array(byteNumbers); |var blob = new Blob([byteArray], {type: 'application/pdf'}); |function openPDF(blob, fileName) { | window.navigator.msSaveOrOpenBlob(blob, fileName); |} |window.onload = function() { |if (window.navigator && window.navigator.msSaveOrOpenBlob) { // IE workaround | document.body.innerHTML = ""<br><br><br><center><button fileName)'>Просмотреть - "" + fileName + ""</button></center>""; |} |else { // much easier if not IE | document.body.innerHTML = ""<iframe src='"" + window.URL.createObjectURL(blob) + ""'></iframe>""; |} |} |</script> |</head> |<body id='" + ТекУникальныйИдентификатор + "'> |</body> |</html> |"; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеНачалаЗаписиТекстовогоДокумента(Результат, ДополнительныеПараметры) Экспорт Если Результат Тогда Если ДополнительныеПараметры.Свойство("ПутьКФайлу") Тогда ТекПутьКФайлу = ДополнительныеПараметры.ПутьКФайлу; #Если ВебКлиент Тогда ТекПутьКФайлу_НавигационнаяСсылка = ""; #Иначе ТекПутьКФайлу_НавигационнаяСсылка = "file:///" + ТекПутьКФайлу; #КонецЕсли Попытка ПоказатьОповещениеПользователя("Save", ТекПутьКФайлу_НавигационнаяСсылка, ТекПутьКФайлу, БиблиотекаКартинок.Информация32); Исключение ПоказатьОповещениеПользователя("Save", , ТекПутьКФайлу); КонецПопытки; КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти // }} Для теста &НаКлиенте Процедура ОбновитьТекстБраузераКлиент(ПутьКФайлу, АдресФайла = "") Если ЗначениеЗаполнено(АдресФайла) Тогда ОбновитьТекстБраузера(АдресФайла); Иначе Если ЗначениеЗаполнено(ПутьКФайлу) Тогда // {{ Для теста ФайлНаДиске = Новый Файл(ПутьКФайлу); ИмяФайлаPDF = ФайлНаДиске.Имя; ФайлНаДиске = Неопределено; // }} Для теста НачатьСозданиеДвоичныхДанныхИзФайла(Новый ОписаниеОповещения("СозданиеДвоичныхДанныхИзФайлаЗавершение", ЭтотОбъект, Параметры), ПутьКФайлу); КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПомещениеФайловЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт ПутьКФайлуPDF = ВыбранноеИмяФайла; АдресФайлаPDF = Адрес; ОбновитьТекстБраузераКлиент(ПутьКФайлуPDF, АдресФайлаPDF); КонецПроцедуры &НаКлиенте Процедура ПутьКФайлуПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт Если Не ВыбранныеФайлы = Неопределено Тогда ПутьКФайлуPDF = ВыбранныеФайлы[0]; ОбновитьТекстБраузераКлиент(ПутьКФайлуPDF); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПутьКФайлуНачалоВыбораЗавершение(Результат) Экспорт АдресФайлаPDF = ""; ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Заголовок = "Укажите имя файла"; ДиалогВыбораФайла.Фильтр = "Документ PDF (*.pdf)|*.pdf"; ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина; ДиалогВыбораФайла.МножественныйВыбор = Ложь; ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлуPDF; #Если ВебКлиент Тогда Если ПодключитьРасширениеРаботыСФайлами() Тогда ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ПутьКФайлуПослеВыбораФайла", ЭтотОбъект)); Иначе НачатьПомещениеФайла(Новый ОписаниеОповещения("ПомещениеФайловЗавершение", ЭтотОбъект), , ДиалогВыбораФайла, Истина, УникальныйИдентификатор); КонецЕсли; #Иначе ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ПутьКФайлуПослеВыбораФайла", ЭтотОбъект)); #КонецЕсли КонецПроцедуры &НаКлиенте Процедура ПутьКФайлуНачалоВыбораЗавершениеВебКлиент(Подключено, ДополнительныеПараметры) Экспорт Если Не Подключено Тогда НачатьУстановкуРасширенияРаботыСФайлами(Новый ОписаниеОповещения("ПутьКФайлуНачалоВыбораЗавершение", ЭтотОбъект)); Иначе ПутьКФайлуНачалоВыбораЗавершение(Неопределено); КонецЕсли; КонецПроцедуры // Обработчики событий &НаКлиенте Процедура ПриОткрытии(Отказ) #Если ВебКлиент Тогда ЭтоВебКлиент = Истина; #Иначе ЭтоВебКлиент = Ложь; #КонецЕсли КонецПроцедуры &НаКлиенте Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) #Если ВебКлиент Тогда НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения("ПутьКФайлуНачалоВыбораЗавершениеВебКлиент", ЭтотОбъект)); #Иначе ПутьКФайлуНачалоВыбораЗавершение(Неопределено); #КонецЕсли КонецПроцедуры // Обработчики команд &НаКлиенте Процедура КомандаОбновить(Команда) ОбновитьТекстБраузераКлиент(ПутьКФайлуPDF, АдресФайлаPDF); КонецПроцедуры
Просмотр файлов PDF
Разработка - Обработки - Универсальные обработки
Специальные предложения
См. также
Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо
2 стартмани
06.10.2014 159193 2671 ekaruk 168
Работа с картами в 1С на примере бесплатной библиотеки Leaflet
1 стартмани
31.03.2021 2429 6 Parsec1C 8
Универсальная обработка переноса данных из основной конфигурации в расширение
5 стартмани
05.10.2020 5897 39 biz-intel 46
Улучшенная обработка универсального обмена данными в формате XML (УФ)
1 стартмани
23.06.2020 7463 99 Lem0n 1
Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен
1 стартмани
01.05.2020 11166 106 sapervodichka 1
Электронная таблица в 1С средствами табличного документа
1 стартмани
23.04.2019 19351 73 user706545_kseg1971 40
Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо
1 стартмани
22.10.2014 214802 4288 ekaruk 184
Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2 Промо
5 стартмани
05.09.2016 23208 166 SEOAngels 11
Обнуление остатков регистров бухгалтерии и накопления
2 стартмани
19.11.2018 28038 379 morozov.sv 53
Универсальный инструмент для переноса данных через табличный документ (УФ)
5 стартмани
15.10.2018 38853 143 json 44
Перемещение остатков по счету МЦ04 между материально ответственными лицами для конфигураций (8.2). Промо
1 стартмани
22.11.2012 18064 102 niksaf 4
Просмотр, изменение реквизитов объекта. Сравнение двух одинаковых объектов метаданных ИБ
1 стартмани
26.04.2018 20248 25 Vin_Tik 0
Построение маршрута доставки с расчётом расстояния для любой базы УФ
10 стартмани
24.02.2018 38786 45 KorotkovRV 16
Работа с картами 1С 4 в 1: Яндекс, Google , 2ГИС, OpenStreetMap(OpenLayers) Промо
1 стартмани
28.12.2012 111193 2696 Smaylukk 365
Программная работа с графическими схемами. Готовое решение
1 стартмани
18.02.2018 20668 22 Yashazz 13
Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена) Промо
4 стартмани
11.11.2015 42766 108 catsam 8
Консоль сравнения данных (1С 8, 1С 7.7, SQL, CSV, TXT, DBF, XLS, DOC, XML, JSON, табличный документ) (версия 15.9.61)
1 стартмани
13.02.2017 37170 140 sertak 117
Разбор адреса на составляющие с помощью Яндекс API и Google API
1 стартмани
10.02.2017 29926 114 Ivon 24
Универсальная обработка "Изменение записей регистров сведений и накопления" (8X) Промо
2 стартмани
24.05.2015 73744 1700 Erofeevgv 73
Образец внешней обработки с длительной операцией на базе БСП 2.3 (Переработанная)
1 стартмани
30.11.2016 34082 177 ЕСТЬNULL 15
Поиск и отключение зависших сеансов на сервере 1С: Предприятия
1 стартмани
14.09.2016 35405 63 wowchik_85 12
Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора.
1 стартмани
07.09.2016 45330 159 Aphanas 4
Универсальный поиск объектов по глобальному уникальному идентификатору (ГУИД, GUID)
1 стартмани
06.09.2016 35799 107 Dzenn 9
Оптимальный способ расчета контрольной суммы объекта/записи регистра (CRC32, MD5, SHA1, SHA256)
1 стартмани
01.08.2016 34461 7 hakerxp 9
ЕГАИС: код алкогольной продукции из штрихкода акцизной марки
1 стартмани
11.02.2016 60046 159 OrcaMax 29
Генерация QR-кода программная и интерактивная (код открыт, управляемая форма, обычное и управляемое приложение, API)
3 стартмани
04.02.2016 51569 177 TuneSoft 30
Создание договоров по шаблонам Word в УТ 11.2, БП 3.0 с возможностью хранения в справочнике "Файлы"
10 стартмани
08.10.2015 37726 275 Diversus 69