К статье
Практический материал

Документы и Печать · 10 мин

Как вывести картинку в печатную форму 1С

Как добавить изображение (логотип, подпись, штамп) в печатную форму 1С: область рисунка в макете, код вывода картинки из хранилища, типичные ошибки и проверка результата.

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

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

Важно понимать, что «картинка» в 1С может храниться в трёх местах: как общая картинка конфигурации, как файл в справочнике присоединённых файлов (например, логотип в карточке организации) или как двоичные данные в реквизите объекта. От места хранения зависит код получения изображения, но не принцип вывода в макет.

Где хранится изображение и как его получить

Прежде чем править макет, определите источник картинки. От этого зависит код. Самый простой вариант — общая картинка конфигурации: изображение загружается в ветку «Общие картинки» дерева конфигурации и доступно через БиблиотекаКартинок. Подходит для статичных элементов — например, стандартной печати организации.

Если изображение должно меняться пользователем без доработки конфигурации (логотип, подпись руководителя), его хранят в присоединённых файлах справочника «Организации» или в реквизите с типом «ХранилищеЗначения». В типовых конфигурациях (БП, УТ, ERP) для логотипа и подписей уже предусмотрены штатные механизмы — сначала проверьте настройки организации, возможно, доработка вообще не нужна.

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

Варианты хранения изображения

Общая картинка конфигурации

Подходит для постоянных изображений. Меняется только разработчиком, надёжно, но негибко.

Присоединённый файл или хранилище значения

Пользователь сам меняет логотип или подпись. Требует кода получения двоичных данных.

Файл на диске

Только для отладки и разовых задач. Зависит от путей и прав доступа на сервере.

Добавляем рисунок в макет печатной формы

Откройте конфигуратор, найдите нужный макет (обычно он лежит в ветке «Макеты» документа или общих макетов и имеет тип «Табличный документ»). Выделите ячейки, где должна располагаться картинка, затем через меню Таблица → Рисунки → Вставить рисунок добавьте объект рисунка.

В свойствах рисунка задайте имя — например, Логотип. Именно по этому имени вы будете обращаться к рисунку из кода. Обратите внимание на свойство «Размер»: для подгонки изображения под размер области выберите режим «Пропорционально», чтобы картинка не искажалась.

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

Порядок добавления рисунка в макет
  1. 1
    Откройте макет печатной формы в конфигураторе
  2. 2
    Выделите область и вставьте рисунок через Таблица → Рисунки
  3. 3
    Задайте имя рисунка, например Логотип
  4. 4
    Установите режим размера «Пропорционально»
  5. 5
    Сохраните макет и обновите конфигурацию базы данных

Пишем код вывода картинки

После того как табличный документ сформирован (или в момент вывода области), найдите рисунок в коллекции Рисунки табличного документа и присвойте его свойству Картинка объект типа «Картинка». Пример для общей картинки конфигурации:

ТабДокумент = Новый ТабличныйДокумент;

Макет = Документы.СчетНаОплату.ПолучитьМакет("Счет");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ТабДокумент.Вывести(ОбластьШапка);

Рисунок = ТабДокумент.Рисунки.Найти("Логотип");

Если Рисунок <> Неопределено Тогда

Рисунок.Картинка = БиблиотекаКартинок.ЛоготипКомпании;

КонецЕсли;

Если изображение хранится в присоединённом файле или реквизите типа «ХранилищеЗначения», сначала получите двоичные данные, затем создайте из них картинку:

ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(ПрисоединенныйФайл);

Если ДвоичныеДанные <> Неопределено Тогда

Рисунок.Картинка = Новый Картинка(ДвоичныеДанные);

КонецЕсли;

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

bsl
Рисунок = ТабДокумент.Рисунки.Найти("Логотип");
Если Рисунок <> Неопределено Тогда
    Рисунок.Картинка = Новый Картинка(ДвоичныеДанные);
КонецЕсли;

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

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

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

Внешняя печатная форма. Зарегистрируйте обработку с функцией СведенияОВнешнейОбработке() и процедурой Печать(), внутри которой формируется табличный документ с картинкой. Обработка подключается через «Администрирование → Печатные формы, отчеты и обработки» (в конфигурациях на БСП) и появляется в меню «Печать» документа. Это самый безопасный вариант: типовая конфигурация вообще не трогается.

Проверка результата

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

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

Контрольные точки

Как проверить результат

Отображение в предпросмотре
Норма

Картинка на своём месте, пропорции сохранены

Тревожный признак

Рисунок растянут, обрезан или перекрывает текст

Печать и PDF
Норма

Изображение выводится на бумаге и в файле

Тревожный признак

На экране есть, при печати пропадает — проверьте формат и цветопередачу

Отсутствие картинки в данных
Норма

Форма выводится без ошибок, область пустая

Тревожный признак

Ошибка «Значение не является значением объектного типа»

Разные организации
Норма

У каждой организации свой логотип

Тревожный признак

Везде выводится одна и та же картинка

Типичные ошибки и их устранение

Самая частая проблема — рисунок не находится по имени. Имя рисунка в макете и в коде должно совпадать с точностью до регистра символов, а сам рисунок должен попасть в выведенную область табличного документа. Если рисунок добавлен в макет, но область с ним не выводится, Рисунки.Найти() вернёт Неопределено.

Вторая распространённая ошибка — неподдерживаемый формат. Табличный документ 1С корректно работает с PNG, JPEG и BMP; файлы SVG, WEBP или некорректно сохранённые изображения могут не отобразиться. Пересохраните картинку в PNG.

Третья группа ошибок — слишком большие файлы. Фотография весом в несколько мегабайт замедлит формирование каждой печатной формы. Перед загрузкой в базу уменьшайте изображения до разумного размера — для логотипа обычно достаточно нескольких сотен пикселей по ширине.

Типичные ошибки
01
Имя рисунка в коде не совпадает с именем в макете — Рисунки.Найти() возвращает Неопределено
02
Область с рисунком не выведена в табличный документ — картинка не появляется
03
Формат SVG или WEBP — изображение не отображается, нужен PNG или JPEG
04
Огромный исходный файл — медленное формирование печатной формы и раздутая база
05
Правка типового макета без расширения — изменения теряются при обновлении

Частые вопросы

Можно ли вывести картинку в печатную форму без конфигуратора?

Да, если конфигурация построена на Библиотеке стандартных подсистем: создайте внешнюю печатную форму в виде файла-обработки и подключите её через «Дополнительные отчеты и обработки». Сама обработка разрабатывается в конфигураторе, но типовую конфигурацию менять не нужно. Также в ряде типовых решений логотип и подпись настраиваются штатно в карточке организации.

Почему картинка видна на экране, но не печатается?

Чаще всего дело в настройках самого табличного документа или драйвера принтера. Проверьте, что рисунок не попал в непечатаемую область, сохраните форму в PDF — если в PDF картинка есть, проблема на стороне принтера, а не 1С.

Как вывести фото товара в каждой строке табличной части?

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

Какие форматы изображений поддерживает табличный документ 1С?

Надёжно работают PNG, JPEG и BMP. Форматы SVG и WEBP табличным документом не поддерживаются — конвертируйте их заранее. Для логотипов и подписей удобнее PNG, так как он поддерживает прозрачный фон.

Картинка выводится растянутой. Что делать?

Откройте свойства рисунка в макете и установите режим размера «Пропорционально» — изображение впишется в область без искажения. Альтернатива — заранее подготовить файл точно под размер области в пикселях.

Как вывести разные логотипы для разных организаций?

Храните логотип как присоединённый файл или реквизит справочника «Организации», а в коде печатной формы получайте изображение по организации из шапки документа. Жёстко зашитая общая картинка для этого не подходит — она одна на всю конфигурацию.

Итог

Что важно запомнить

Картинка выводится через рисунок в макете и присваивание свойства Картинка в коде. Источник изображения — общая картинка, присоединённый файл или хранилище значения. Типовую конфигурацию дорабатывайте через расширение или внешнюю печатную форму, используйте PNG/JPEG и проверяйте результат в предпросмотре, PDF и на печати.