Автоматизация работы с электронным документооборотом (ЭДО) часто требует не только формирования печатных форм, но и их автоматического сохранения в карточке объекта. Рассмотрим, как реализовать этот процесс программно, избегая «мусорных» методов и используя возможности Библиотеки Стандартных Подсистем (БСП).
Для реализации этой задачи необходимо выполнить последовательность действий, которая имитирует стандартный процесс печати, но выполняется на стороне сервера без участия пользователя:
ДополнительныеОтчетыИОбработки.Печать внешней обработки.РаботаСФайлами.В типовых конфигурациях на базе БСП взаимодействие с внешними обработками осуществляется через менеджер ДополнительныеОтчетыИОбработки. Для получения формы используйте метод:
// Пример вызова для получения печатной формы
ПараметрыИсточника = Новый Структура;
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИменаМакетов);
ОбъектыПечати = Новый СписокЗначений;
ДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(
ДополнительнаяОбработкаСсылка,
ПараметрыИсточника,
КоллекцияПечатныхФорм,
ОбъектыПечати,
ПараметрыВивода
);
Этот подход позволяет работать с формами стандартно, соблюдая логику конфигурации.
После того как вы получили ТабличныйДокумент, его необходимо сохранить. Хотя некоторые разработчики предпочитают создавать временные файлы на диске, более эффективным способом является запись в двоичные данные или во временное хранилище.
Разберем пример сохранения печатной формы программно:
// Получаем макет из внешней обработки
ТабличныйДокумент = ПолучитьПечатнуюФорму(СсылкаНаДокумент);
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
// Создание присоединенного файла через БСП
РаботаСФайлами.СоздатьПрисоединенныйФайлНаОснованииФайла(
ВладелецФайлов,
МенеджерПрисоединенныхФайлов,
ТекущаяВерсияОбъект,
ФайлИсточникОбъект
);
// Обязательно удаляем временный файл для чистоты системы
УдалитьФайлы(ИмяФайла);
При реализации автоматизированного процесса следует учитывать несколько критически важных моментов:
ПрисоединенныеФайлы на наличие записей с таким же именем или хэш-суммой. Это поможет избежать захламления хранилища.ВладельцаФайла. Если связь не будет корректно зарегистрирована в регистрах БСП, файл станет «сиротой» и не будет отображаться в списке вложений документа.РаботаСФайлами кажется избыточной или сложной, создайте небольшую обертку. Она должна принимать ДвоичныеДанные, имя файла и ссылку на владельца, инкапсулируя внутри себя логику записи в хранилище.Проанализировав эти шаги, мы видим, что решение задачи сводится к вызову методов УправлениеПечатью и РаботаСФайлами. Основная сложность заключается в подготовке правильной структуры параметров для ВПФ, которую можно подсмотреть в отладчике при обычном вызове печати пользователем.
Используйте этот подход для создания инструментов массового формирования документов, что значительно упростит работу с ЭДО в вашей организации.