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

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

Как вставить картинку в макет в 1С 8.3

Как вставить картинку в макет в 1С 8.3: табличный документ, логотип в печатной форме, картинка из двоичных данных. Пошаговая инструкция с примерами кода.

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

Чаще всего картинку добавляют в макет типа «Табличный документ» — именно так устроены большинство печатных форм в типовых конфигурациях. Реже используют макеты типа «Двоичные данные» или «ActiveDocument», где изображение хранится целиком как ресурс конфигурации.

Ниже разобраны все рабочие способы: вставка через конфигуратор без программирования, вывод картинки из кода, подстановка изображения из справочника (например, логотипа организации), а также типичные ошибки, из-за которых картинка не появляется на печати.

Какие типы макетов поддерживают картинки

В 1С 8.3 изображения можно разместить в нескольких видах макетов, и механика вставки у них разная. Макет типа «Табличный документ» позволяет вставить картинку прямо в ячейку или как отдельный объект-рисунок поверх таблицы — это основной вариант для печатных форм.

Макет типа «Двоичные данные» хранит сам файл картинки (PNG, JPEG) как ресурс конфигурации. Такой макет не показывается пользователю напрямую — его читают из кода методом ПолучитьМакет() и передают в табличный документ или на форму. Этот способ удобен, когда одна и та же картинка (например, стандартный логотип) должна выводиться в разных печатных формах.

Макеты типа «ActiveDocument» (HTML-документ, документ Word) также поддерживают изображения, но там картинки вставляются средствами самого формата — через HTML-разметку или шаблон Word. В этой статье основной акцент сделан на табличный документ как наиболее востребованный сценарий.

Способы хранения картинки

Рисунок в макете табличного документа

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

Макет «Двоичные данные»

Одна картинка как ресурс, выводится кодом в любые печатные формы. Для замены также нужна доработка конфигурации.

Картинка в базе (справочник, хранилище значения)

Пользователь меняет изображение сам, без конфигуратора. Оптимально для логотипов организаций и факсимиле.

Вставка картинки в макет табличного документа через конфигуратор

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

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

Второй вариант — картинка внутри ячейки. Выделите ячейку, откройте её свойства (правый клик — «Свойства») и в свойстве «Картинка» выберите файл. Также полезно настроить свойство «РазмерКартинки»: значение «Пропорционально» сохранит пропорции изображения при изменении размера ячейки.

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

Вывод картинки из кода

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

Типовой фрагмент кода выглядит так:

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

Рисунок = ОбластьМакета.Рисунки.Логотип;

Рисунок.Картинка = Новый Картинка(ПолучитьМакет("ЛоготипКомпании"));

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

Здесь ПолучитьМакет("ЛоготипКомпании") возвращает двоичные данные макета, а конструктор Новый Картинка() преобразует их в объект картинки. Обратите внимание: обращение к рисунку идёт через коллекцию Рисунки области, а не через ячейки. Если рисунок называется иначе — уточните его имя в свойствах рисунка в макете.

1c
Рисунок = ОбластьМакета.Рисунки.Логотип;
Рисунок.Картинка = Новый Картинка(ДвоичныеДанные);
ТабличныйДокумент.Вывести(ОбластьМакета);

Вывод логотипа или факсимиле из базы данных

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

Чтобы вывести такую картинку, получите двоичные данные из хранилища и передайте их в рисунок макета:

ДвоичныеДанные = Организация.Логотип.Получить();

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

ОбластьМакета.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанные);

КонецЕсли;

Обязательно делайте проверку на Неопределено: если логотип у организации не заполнен, попытка создать картинку из пустого значения вызовет ошибку и печатная форма не сформируется. Альтернатива — выводить область без рисунка вообще, если картинки нет.

Картинка в управляемой форме и внешних печатных формах

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

На управляемой форме картинку выводят иначе: через реквизит формы типа «Строка» с адресом во временном хранилище и элемент формы «Поле картинки». Двоичные данные помещают во временное хранилище методом ПоместитьВоВременноеХранилище(), а адрес присваивают реквизиту. Это отдельный сценарий, не связанный с макетами печати, но его часто путают с основной задачей.

Частые ошибки и как их исправить

Самая распространённая проблема — рисунок не отображается на печати, хотя в макете виден. Причины: рисунок выходит за границы области, которая выводится в документ; область с рисунком не выводится кодом; либо рисунок перекрыт другим объектом. Проверьте, что рисунок целиком находится внутри именованной области, которая реально выводится.

Вторая типичная ошибка — искажение пропорций. Если размер рисунка задан вручную и не совпадает с пропорциями исходника, логотип «расплывётся» или сплющится. Используйте режим размера «Пропорционально» или подгоняйте размер с сохранением соотношения сторон.

Третья проблема — ошибка «Недопустимое значение» при выводе из кода. Она возникает, когда двоичные данные пустые или содержат не изображение (например, в хранилище записан PDF). Перед созданием картинки проверяйте, что данные получены и это действительно графический файл.

Типичные ошибки
01
Рисунок вставлен вне именованной области — в печатную форму он не попадает, потому что код выводит только область
02
Отсутствует проверка на пустое хранилище — при отсутствии логотипа печать падает с ошибкой
03
Вставка растровой картинки низкого разрешения — на принтере логотип выглядит мыльным
04
Изменение макета в режиме предприятия через «Ещё — Изменить макет» — изменения теряются при обновлении конфигурации, правьте макет в конфигураторе или расширении

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

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

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

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

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

Отображение на экране
Норма

Картинка видна в сформированной печатной форме, пропорции сохранены

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

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

Вывод в PDF / на принтер
Норма

Картинка чёткая, не перекрывает текст

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

Изображение мыльное или смещается относительно макета

Формирование без ошибок
Норма

Печатная форма формируется у всех организаций, включая те, где логотип не задан

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

У части документов возникает ошибка при выводе

FAQ

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

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

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

Платформа устойчиво работает с распространёнными растровыми форматами: PNG, JPEG, BMP, GIF. Для логотипов удобнее PNG — он поддерживает прозрачный фон, и картинка аккуратно ложится на макет без белой подложки.

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

Чаще всего рисунок находится за пределами именованной области, которую код выводит в табличный документ. Растяните границы области так, чтобы рисунок полностью входил в неё, либо переместите рисунок внутрь выводимой области.

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

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

Можно ли вставить штрихкод или QR-код в макет как картинку?

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

Итог

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

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