Как программно сформировать печатную форму и прикрепить её к документу в 1С:Документооборот

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

В процессе автоматизации документооборота часто возникает задача: программно сформировать печатную форму (например, лист согласования или отчет по визам) и автоматически вложить её в карточку внутреннего документа. Это особенно актуально, когда конечному согласующему необходимо видеть все резолюции предыдущих участников процесса непосредственно во вложении к задаче или в электронном письме. Разберем подробно, какими инструментами для этого располагает 1С:Документооборот и Библиотека стандартных подсистем (БСП).

Способ 1: Использование механизмов БСП для работы с файлами

Рассмотрим классический путь решения задачи через формирование табличного документа и его сохранение в информационную базу. Этот метод универсален и подходит для большинства конфигураций на базе БСП.

Шаг 1. Генерация табличного документа. Сначала нам необходимо получить объект ТабличныйДокумент. Это может быть результат работы стандартного менеджера печати или ваш собственный макет.

Шаг 2. Сохранение во временный файл. Чтобы прикрепить файл к документу, его нужно сначала физически записать на диск (на стороне сервера). Разберем пример кода для сохранения в формате PDF:


ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
ТабличныйДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.PDF);

Шаг 3. Добавление файла в карточку документа. Для этого используем программный интерфейс подсистемы РаботаСФайлами. Нам потребуется ссылка на документ-владелец и путь к созданному файлу. Проанализируем пример функции добавления:


ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайла = СсылкаНаВнутреннийДокумент;
ПараметрыФайла.ИмяБезРасширения = "Лист_согласования";
ПараметрыФайла.Расширение = "pdf";

Результат = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ИмяВременногоФайла);

Важно помнить, что после выполнения операции временный файл необходимо удалить с диска, используя УдалитьФайлы(ИмяВременногоФайла).

Способ 2: Использование штатного «Листа согласования»

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

Рассмотрим алгоритм действий:

  1. Вызываем экспортную процедуру получения листа согласования (в 1С:ДО 2.1 и 3.0 названия функций могут отличаться, но суть остается прежней — получение табличного документа через менеджер печати справочника ВнутренниеДокументы).
  2. Программно конвертируем его в PDF, как было описано выше.
  3. Прикрепляем к документу перед стартом этапа, на котором он требуется финальному согласующему.

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

ВизыСогласования.ПолучитьТаблицуВиз(ДокументСсылка)

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

Способ 3: Автозаполнение шаблонов файлов (Заполняемые предметы)

Этот способ считается наиболее «правильным» и естественным для 1С:Документооборот. Вместо жесткого кодинга печатных форм мы используем Word-файлы с настроенными правилами автозаполнения.

Выясним, как это работает программно:

  1. Создание шаблона: В справочнике «Файлы» создается шаблон (например, в формате DOCX).
  2. Настройка правил: В правилах автозаполнения указывается, какие поля документа куда вставлять.
  3. Использование скриптов: Если нужно вывести список всех согласующих, мы пишем небольшой скрипт прямо в правилах автозаполнения. Скрипт на языке 1С соберет данные из регистра сведений или справочника виз и вернет строку или таблицу для вставки в Word.

Для того чтобы файл обновился перед отправкой задачи пользователю, можно использовать дополнительные обработчики бизнес-процессов. Например, на событии «При старте» задачи можно вызвать обновление файла по шаблону. В этом случае система сама перезаполнит данные актуальными резолюциями.

Способ 4: Оптимизация почтовых уведомлений

Если цель задачи — сделать так, чтобы пользователь видел историю согласования в письме, не обязательно плодить лишние файлы в карточке документа. Можно изменить формат самого уведомления.

Разберем, как получить HTML-обзор документа для вставки в тело письма:

ОбзорДокумента.ПолучитьОбзорВнутреннегоДокумента(СсылкаНаДокумент)

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

Программный интерфейс (API) для разработчика

При реализации любого из выбранных подходов нам пригодятся следующие функции и методы:

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

← На главную