Как программно получить внешнюю печатную форму и сохранить её в присоединенные файлы документа?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Автоматизация работы с электронным документооборотом (ЭДО) часто требует не только формирования печатных форм, но и их автоматического сохранения в карточке объекта. Рассмотрим, как реализовать этот процесс программно, избегая «мусорных» методов и используя возможности Библиотеки Стандартных Подсистем (БСП).

Алгоритм решения задачи

Для реализации этой задачи необходимо выполнить последовательность действий, которая имитирует стандартный процесс печати, но выполняется на стороне сервера без участия пользователя:

  1. Поиск внешней печатной формы (ВПФ) в справочнике ДополнительныеОтчетыИОбработки.
  2. Формирование печатной формы (получение табличного документа) через вызов метода Печать внешней обработки.
  3. Преобразование полученного табличного документа в бинарный формат (PDF или Excel).
  4. Присоединение полученного файла к целевому документу через РаботаСФайлами.

Шаг 1: Получение внешней печатной формы

В типовых конфигурациях на базе БСП взаимодействие с внешними обработками осуществляется через менеджер ДополнительныеОтчетыИОбработки. Для получения формы используйте метод:


// Пример вызова для получения печатной формы
ПараметрыИсточника = Новый Структура;
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИменаМакетов);
ОбъектыПечати = Новый СписокЗначений;
ДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(
    ДополнительнаяОбработкаСсылка, 
    ПараметрыИсточника, 
    КоллекцияПечатныхФорм, 
    ОбъектыПечати, 
    ПараметрыВивода
);

Этот подход позволяет работать с формами стандартно, соблюдая логику конфигурации.

Шаг 2: Обработка печатной формы и создание файла

После того как вы получили ТабличныйДокумент, его необходимо сохранить. Хотя некоторые разработчики предпочитают создавать временные файлы на диске, более эффективным способом является запись в двоичные данные или во временное хранилище.

Разберем пример сохранения печатной формы программно:


// Получаем макет из внешней обработки
ТабличныйДокумент = ПолучитьПечатнуюФорму(СсылкаНаДокумент);
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

// Создание присоединенного файла через БСП
РаботаСФайлами.СоздатьПрисоединенныйФайлНаОснованииФайла(
    ВладелецФайлов, 
    МенеджерПрисоединенныхФайлов, 
    ТекущаяВерсияОбъект, 
    ФайлИсточникОбъект
);

// Обязательно удаляем временный файл для чистоты системы
УдалитьФайлы(ИмяФайла);

Важные рекомендации при разработке

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

Проанализировав эти шаги, мы видим, что решение задачи сводится к вызову методов УправлениеПечатью и РаботаСФайлами. Основная сложность заключается в подготовке правильной структуры параметров для ВПФ, которую можно подсмотреть в отладчике при обычном вызове печати пользователем.

Используйте этот подход для создания инструментов массового формирования документов, что значительно упростит работу с ЭДО в вашей организации.

← На главную