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