21.11.2022 Роман Мавлютов 41235
Печать 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-документа


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

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


Наши проекты

Компания IBS
Компания IBS

Отрасль:
Системный интегратор

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

- Интеграция систем – АСУП и «1С:Управление производственным предприятием»...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

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

Управление отношениями с клиентами (CRM) ...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

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

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конф...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

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

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение но...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

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

- Разработка подсистемы оперативного учета транзакций...

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

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

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

- Налоговый учет;...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

МГК "Световые Технологии"
МГК "Световые Технологии"

Отрасль:

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

Специалисты "Кодерлайн" произвели доработки в системе 1С:ЕРП 2.4 с учетом треб...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

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

- Настройка подсистемы кадрового учета;
- Перенос персональных данных;
- З...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

Управление персоналом и кадровый учет (HRM) Кадровый учет Расчет зарплаты Рег...

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

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

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

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