Печать документа PDF из 1С без блокировки файла процессом 1cv8c

04.06.25

Разработка - Механизмы платформы 1С

Статья для тех, у кого процесс 1cv8c держит мертвой хваткой файл PDF после печати из объекта ДокументPDF.

Начиная с версии 8.3.21 нам стала доступна работа с PDF документами через новый объект ДокументPDF, однако, при использовании этого объекта, я столкнулся с проблемой блокировки PDF-файлов после печати, что не позволяло, например, удалить их из каталога.

 


Возможно кто-то заметил что в списке методов ДокументPDF есть метод .Прочитать() но нет метода .Закрыть().

 

 

Я решил проблему так, вместо:

пДокументPDF = Новый ДокументPDF(); 
Попытка 
	пДокументPDF.Прочитать("Строка путь к файлу");
	пДокументPDF.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
Исключение
	ОбщегоНазначенияКлиент.СообщитьПользователю("Ошибка при работе с PDF: " + ОписаниеОшибки());
КонецПопытки;

Заменил на:

пДокументPDF = Новый ДокументPDF(); 
Попытка 
	рПоток = Новый ФайловыйПоток("Строка путь к файлу",РежимОткрытияФайла.Открыть);
	пДокументPDF.Прочитать(рПоток);
	пДокументPDF.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
	рПоток.Закрыть();
Исключение
	ОбщегоНазначенияКлиент.СообщитьПользователю("Ошибка при работе с PDF: " + ОписаниеОшибки());
КонецПопытки;
пДокументPDF = Неопределено;

"пДокументPDF = Неопределено" обнуляю переменную на всякий случай освобождая память, ФайловыйПоток имеет метод Закрыть() который позволяет явно закрыть поток и освободить файл после завершения работы с ним.

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

Печать PDF Поток

См. также

Механизмы платформы 1С Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    7877    bayselonarrend    126    

61

Механизмы платформы 1С Программист Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    11644    dsdred    70    

114

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    15410    bayselonarrend    21    

165

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    9052    dsdred    18    

83

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    33543    YA_418728146    33    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 918 04.06.25 10:56 Сейчас в теме
обнуляю переменную на всякий случай освобождая память
Не обязательно это делать, после выхода из функции переменные обнулятся.
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение