Как программно и вручную добавить факсимиле в отчеты 1С?

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

Вопрос автоматизации вывода факсимиле в отчетах часто возникает перед разработчиками, так как стандартные печатные формы документов имеют фиксированные макеты, а отчеты, построенные на системе СКД, формируются динамически. Рассмотрим, как эффективно решить эту задачу в конфигурации КА 2.5 и других решениях на платформе 1С:Предприятие.

Вариант 1: Ручное добавление в табличный документ

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

  1. Сформируйте отчет в 1С.
  2. Перейдите в меню (три точки), выберите раздел Таблица, затем Вид и включите Редактирование.
  3. Кликните правой кнопкой мыши по ячейке, куда нужно вставить подпись, и перейдите в Свойства.
  4. В настройках ячейки найдите пункт Картинка и выберите файл с факсимиле с вашего диска.
  5. Теперь в ячейке отобразится подпись, которую можно сохранить или отправить на печать.

Вариант 2: Программная вставка через СКД

Для автоматизации процесса в отчетах на СКД, мы рекомендуем использовать событийную модель. Это позволяет избежать «хардкода» в типовых объектах. Разберем работу с событием ПриКомпоновкеРезультата:

В модуле отчета мы можем получить доступ к итоговому объекту ТабличныйДокумент и программно добавить туда рисунок. Суть подхода заключается в поиске «якоря» — текста в таблице, рядом с которым должна быть подпись.


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

Вариант 3: Использование расширений конфигурации

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

Преимущества данного подхода:

Рекомендации по безопасности и юридическим аспектам

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

Лучшим решением будет использование справочника ПрисоединенныеФайлы, встроенного в БСП (Библиотеку стандартных подсистем). Это позволит:

  1. Разграничить права доступа к объекту с подписью на уровне ролей 1С.
  2. Привязывать конкретную подпись к конкретному пользователю или должности.
  3. Отслеживать историю использования факсимиле в логах системы.

Надеемся, эти советы помогут вам реализовать удобный и надежный механизм печати отчетов с подписями. Рекомендуем начать с создания небольшого расширения, которое будет внедрять картинку в ТабличныйДокумент после завершения его формирования.

← На главную