21.11.2022 Роман Мавлютов 39483
Печать PDF-документов средствами платформы 1С

Содержание:

1.      Описание возможностей конфигурации платформы 1С для работы с PDF-документами

2.      Пример работы с PDF-документами в системе конфигурации 1С  

 

1.  Описание возможностей конфигурации платформы 1С для работы с PDF-документами


В версии 8.3.21 платформы 1С появились инструменты для работы с PDF-документами.


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


// Пример печати массива файлов внешним приложением Ghostscript

&НаКлиенте

Процедура НапечататьИзПриложенияПоИменамФайловGhostscript(МассивИменФайловДляПечати)

      

       Shell = Новый COMОбъект("WScript.Shell");

       ИменаФайловСтрокой = СтрСоединить(МассивИменФайловДляПечати, " ");

       ПутьИмениПринтераПоУмолчанию ="HKCU\Software\Microsoft\WindowsNT\"

                                    + "CurrentVersion\Windows\Device";

       ПараметрыПринтераПоУмолчанию = Shell.RegRead(ПутьИмениПринтераПоУмолчанию);

       МассивПараметровПринтера = СтрРазделить(ПараметрыПринтераПоУмолчанию, ",");

      

       Если МассивПараметровПринтера.Количество() > 0 Тогда

             ИмяПринтера = МассивПараметровПринтера.Получить(0);

            

             ШаблонСтрокиПечатиGhostscript = "gswin64c -dBATCH -dNOPAUSE "

                           + "-sDEVICE=mswinpr2 -sOutputFile=""%printer%%1"" "

                           + "-dFIXEDMEDIA -dFitPage -sPAPERSIZE=%2 "

                           + "-c ""<< /NumCopies %3>> setpagedevice"" -f %4";               

             СтрокаПечати = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

                    ШаблонСтрокиПечатиGhostscript,

                    ИмяПринтера,

                    НРег(РазмерСтраницы), // Например РазмерСтраницы = "a3" раскладка                  

                    КоличествоКопий,      // английская, регистр нижний

                    ИменаФайловСтрокой);

             Shell.Run(СтрокаПечати, 0);

       КонецЕсли;   

КонецПроцедуры


1)       Реализован объект ДокументPDF, который позволяет работать с 1С документами PDF синхронно и асинхронно.

Для того, чтобы прочитать PDF- документ, необходимо использовать метод ДокументPDF.Прочитать(). Читать файл можно не только с диска, но и из потока.


2)       С помощью свойства ДокументPDF.ТипФайла можно определить, в каком формате записан открытый документ (в обычном или в формате долгосрочного хранения PDF/A).


3)       В 1С документы PDF можно защитить паролем. Пароль можно передать во втором параметре метода Прочитать().


4)       Для проверки наличия пароля у 1C документа PDF, предназначен метод глобального контекста ДокументЗащищенПаролем(). Проверить наличие пароля можно для файла на диске и для документа, размещенного в потоке.


5)       Документ PDF можно записать в файл на диске или поток с помощью метода Записать(). При записи можно установить пароль.


6)       Для просмотра 1С документа PDF предназначен метод ДокументPDF.Показать(). Данный метод открывает форму просмотра документа PDF и позволяет сохранить измененный PDF- документ в указанный файл.


7)       Реализована возможность печати документов PDF средствами конфигурации программы 1С. Для печати документа предназначен метод ДокументPDF .Напечатать().

Перед печатью предоставляется возможность открыть диалог параметров формы печати документа 1С.


8)       Реализована возможность просмотра и проверки подлинности 1С электронных подписей документа. Поддерживается работа с зашифрованными документами.

Используя объект ДокументPDF все операции с подписями можно проделать через сам документ PDF, не открывая его отдельно на чтение и отдельно на запись.

Для добавления электронной подписи задействуются два механизма платформы: механизм работы с документом PDF и механизм криптографии. Для этого используется объект типа ОписаниеПодписиPDF, описывающий цифровую подпись.

Кроме цифровой подписи документа PDF, средствами платформы можно добавить в документ представление подписи (Картинка или ТабличныйДокумент). Для этого используется объект типа ОписаниеОтображаемогоОбъектаPDF.


9)       Для отображения документа в форме PDF реализованы: реквизит формы типа ДокументPDF и поле формы вида ПолеPDFдокумента.

У поля формы, имеется обработчик события НажатиеНаНавигационнойСсылке. Он будет вызван, если пользователь нажимает какую-либо гиперссылку отображаемого PDF -документа.

Для отображения дополнительной информации PDF -документа (например, состояния подписей) служит дополнение СостояниеПросмотра поля формы ПолеPDFДокумента.


10)   Объекты ЗаписьPDF и ЧтениеPDF позволяют изменять и читать вложения 1С документа PDF.

Объект КоллекцияВложенийPDF предназначен для формирования коллекции вложений. Для работы с вложениями обьекта ДокументPDF используется свойство Вложения (тип КоллекцияВложенийPDF).   


2.      Пример работы с PDF- документами в системе конфигурации 1С


Для сокращения размера примеров приведем только функционально-значимые моменты реализации и рассмотрим только синхронные методы работы.

 

1) Имеется заранее сформированный список 1С документов PDF.

 


Просмотр, печать, изображения, вложения документов PDF


2) Для PDF просмотра документа используем метод ДокументPDF.Показать (), предварительно прочитав данные документа.


Метод ДокументPDF.Прочитать() позволяет считывать файл PDF как с диска, так и из потока:

·        Для создания файла на диске, можно использовать метод Записать() для объекта типа ДвоичныеДанные.

·        Для стандартизированной работы с файлами на диске, можно использовать функционал БСП (подсистема Работа с файлами).

·        Для считывания файла из потока необходимо предварительно открыть поток данных в файле. Например использовать метод ОткрытьПотокДляЧтения() для объекта типа ДвоичныеДанные.

    

// Открывает окно для показа и редактирования PDF-документа

// Параметры:

//   ДанныеФайлаPDF - Строка, Поток - путь к файлу на диске или поток данных файла

&НаКлиенте

Процедура ПоказатьДокументPDF(ДанныеФайлаPDF)

                  

     пДокументPDF = Новый ДокументPDF();

     пДокументPDF.Прочитать(ДанныеФайлаPDF);

     пДокументPDF.Показать("Заголовок документа PDF");

КонецПроцедуры


Откроется форма просмотра 1С документа PDF.

 


Заголовок документа PDF


3) Для печати PDF- документа используем метод ДокументPDF.Напечатать(), предварительно прочитав данные документа методом ДокументPDF.Прочитать().

    

// Выводит PDF документ на печать

// Параметры:

//   ДанныеФайлаPDF - Строка, Поток - путь к файлу на диске или поток данных файла

&НаКлиенте

Процедура НапечататьДокументPDF(ДанныеФайлаPDF)

                  

     пДокументPDF = Новый ДокументPDF();

     пДокументPDF.Прочитать(ДанныеФайлаPDF);

     пДокументPDF.Напечатать(РежимИспользованияДиалогаПечати.Использовать);

КонецПроцедуры


Откроется диалог параметров страницы печати документа PDF.

 


Диалог параметров страницы


4) Добавим графический объект в PDF- документ, используя метод ЗаписьPDF.ЗаписатьОтображаемыйОбъект(Описание). Для этого предварительно сформируем описание графического объекта (картинки или табличного документа).

    

// Добавляет графический объект в PDF документ

// (картинку или табличный документ)

// Параметры:

//   ПутьФайлаPDF - Строка - путь к файлу на диске

&НаКлиенте

Процедура ДобавитьИзображениеPDF(ПутьФайлаPDF)

    

     Описание = Новый ОписаниеОтображаемогоОбъектаPDF;

     Описание.Имя           = "Картинка";

     Описание.Ширина        = 100;

     Описание.Высота        = 100;

     Описание.Лево          = 100;

     Описание.Верх          = 5;

     Описание.НомерСтраницы = 1;

     Описание.Объект        = БиблиотекаКартинок.ДлительнаяОперация48;

    

     ЗаписьPDF = Новый ЗаписьPDF(ПутьФайлаPDF);

     ЗаписьPDF.ЗаписатьОтображаемыйОбъект(Описание);

КонецПроцедуры

 

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

 


Заголовок документа PDF


5) Для примера работы с коллекцией КоллекцияВложенийPDF, добавим файл в PDF- документ, используя метод ДокументPDF.Вложения.Добавить().

    

// Добавляет вложение в PDF документ

// Параметры:

//   ПутьФайлаPDF - Строка - путь к файлу на диске

//   ПутьФайлаВложенияКартинка - Строка - путь к файлу вложению на диске

&НаКлиенте

Процедура ДобавитьВложениеPDF(ПутьФайлаPDF, ПутьФайлаВложенияКартинка)

    

     // Сформируем двоичные данные файлов

     ФайлPDF              = Новый ДвоичныеДанные(ПутьФайлаPDF);

     ФайлВложениеКартинка = Новый ДвоичныеДанные(ПутьФайлаВложенияКартинка);

     ПотокФайлPDF         = ФайлPDF.ОткрытьПотокДляЧтения();

    

     пДокументPDF = Новый ДокументPDF();

     // Прочитаем файл из потока во избежание

     // ошибки совместного доступа к файлу при записи

     пДокументPDF.Прочитать(ПотокФайлPDF);

     пДокументPDF.Вложения.Добавить("ФайлВложение", ФайлВложениеКартинка);

     пДокументPDF.Записать(ПутьФайлаPDF);

КонецПроцедуры


Во вложениях PDF-документа появится добавленный объект.

 


Добавленный объект во вложениях PDF-документа


Специалист компании "Кодерлайн"

Роман Мавлютов


Наши проекты

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

- Взаиморасчеты с поставщиками
- Учет прихода ТМЦ
- Взаиморасчеты с поку...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Комплексная автоматизация

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управле...

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

Отрасль:
Производство

Внедренное типовое решение:
1С:Комплексная автоматизация

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

ООО «Экслтрейд»
ООО «Экслтрейд»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

ЗАО «Ламбумиз»
ЗАО «Ламбумиз»

Отрасль:
Производство картонной упаковки

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Маркетинг;
- Продажи;
- Планирование закупок;
- Закупки;
- Регламенти...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ОАО «Интер РАО – Электрогенерация»
ОАО «Интер РАО – Электрогенерация»

Отрасль:
Электрогенерация

Внедренное типовое решение:
1С:Управление производственным предприятием

Для работы 2500 пользователей в 9 часовых поясах организована территориально-...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение