Добавление произвольной картинки (факсимиле, виза, подпись и т.д.) в шаблон документа (Microsoft Word doc., docx.) для конфигурации 1С: Документооборот 2.1 с минимальными изменениями в конфигурации

Программирование - Практика программирования

В данном примере представлен небольшой сниппет для добавления картинок (подписи, визы, факсимиле) к шаблону документа (Microsoft Word doc., docx.) в системе 1С: Документооборот 2, используя типовую функцию вставки штрихкода.

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

В данном примере приведенный фрагмент кода добавлен в процедуру 

 ПослеЗаписиНаСервере()

после блока, в котором выполняется типовая вставка штрихкода и автоматическое заполнение шаблонов. Картинка забирается из справочника "Файлы" по привязке к конкретному пользователю, который является отвественным лицом на текущую дату для организации, указанной в документе (в данном примере  - ВнутреннийДокумент).

Непосредственно код:

Если Приемник.ВладелецФайла.Шаблон.ВидДокумента = Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Распоряжение") ИЛИ
    Приемник.ВладелецФайла.Шаблон.ВидДокумента = Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Приказ по общей деятельности предприятия") Тогда
    ДанныеОШтрихкоде = ШтрихкодированиеСервер.ПолучитьДанныеДляВставкиШтрихкодаВОбъект(Приемник);
    МассивСвойств = Новый Массив;
    МассивСвойств.Добавить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Файл подписи"));
    ОтветственноеЛицо = РаботаСОрганизациями.ПолучитьОтветственноеЛицо("Руководитель", Объект.Организация, ТекущаяДата());
    Если ЗначениеЗаполнено(ОтветственноеЛицо) Тогда
        Результат = УправлениеСвойствами.ПолучитьЗначенияСвойств(ОтветственноеЛицо, Истина, Ложь,МассивСвойств);
        Если Результат.Количество() > 0 Тогда
            ДвоичныеДанныеКартинки = РаботаСФайламиВызовСервера.ПолучитьДвоичныеДанныеФайла(Результат[0].Значение.Ссылка);
            Попытка 
                ШтрихкодированиеКлиентСервер.ВставитьШтрихкодВместоТэга(Приемник.Ссылка,
                "ВставитьИзображениеПодписи", 
                Ложь, 
                ДвоичныеДанныеКартинки, 
                ДанныеОШтрихкоде.ДвоичныеДанныеФайла,
                ДанныеОШтрихкоде.Расширение,
                ДанныеОШтрихкоде.ФайлРедактируется,
                ДанныеОШтрихкоде.ИзменениеФайловMSWordТолькоНаСервере,
                10);
            Исключение
            КонецПопытки;		
        КонецЕсли;
    КонецЕсли;
КонецЕсли;

Фрагмент представлен как есть, без рефакторинга. Если кому-то захочется оформить через свою функцию в общем модуле, пожалуйста.

Логика:

  1. Сначала проверяем условие, для каких видов документов будет выполняться данный код
  2. Получаем пользователя, который является действующим ответственным лицом для указанной в документе организации
  3. Получаем значение дополнительного реквизита с  наименованием "Файл подпись" у найденного пользователя
  4. Вставляем полученную картинку, применяя типовую функцию ВставитьШтрихкодВместоТэга()

P.S.: Последний параметр функции ВставитьШтрихкодВместоТэга определяет высоту картинки.

См. также

В этой теме еще нет сообщений.
Оставьте свое сообщение