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

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

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

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

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

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

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

Где в 1С хранятся картинки и какой способ вывода выбрать

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

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

Маршрут решения

Как выбрать способ

Изображение одно и то же для всех документов (логотип, рамка)Вставьте картинку прямо в макет табличного документа — это самый простой вариант
Картинка зависит от документа или строки (фото товара, штрихкод)Используйте параметр макета типа «Картинка» и программную подстановку
Картинка общая для нескольких макетов и может меняться при обновленииХраните её в ветке «Общие — Картинки» и подставляйте через БиблиотекаКартинок

Как вставить статичную картинку прямо в макет

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

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

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

Учтите ограничение: рисунок, вставленный в область макета, выводится вместе с этой областью. Если картинка находится в области «Шапка», а шапка выводится один раз, логотип появится только в начале документа. Для повторения на каждой странице используйте колонтитулы табличного документа или выводите область с картинкой на каждой странице программно.

Как вывести картинку из базы программно через параметр макета

Для динамических изображений в макете создаётся параметр с типом «Картинка». Выделите ячейку, откройте её свойства и в поле «Тип значения» выберите «Картинка», а в поле «Имя параметра» задайте имя, например «ФотоТовара». Теперь при выводе области в эту ячейку можно подставить любой объект картинки.

В модуле менеджера объекта или в общем модуле печати код выглядит так: получаете область макета, присваиваете параметру значение картинки и выводите область в результирующий табличный документ. Картинку строят из двоичных данных реквизита-хранилища или из файла.

ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовара");

ДанныеКартинки = Выборка.ФотоТовара.Получить(); // ХранилищеЗначения

Если ДанныеКартинки <> Неопределено Тогда

ОбластьСтрока.Параметры.ФотоТовара = Новый Картинка(ДанныеКартинки);

Иначе

ОбластьСтрока.Параметры.ФотоТовара = Новый Картинка; // пустая

КонецЕсли;

ТабДок.Вывести(ОбластьСтрока);

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

Как вывести картинку из файла или библиотеки конфигурации

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

ДвоичныеДанные = Новый ДвоичныеДанные("C:\Images\logo.png");

КартинкаЛоготип = Новый Картинка(ДвоичныеДанные);

ОбластьШапка.Параметры.Логотип = КартинкаЛоготип;

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

Помните про контекст исполнения: путь «C:\Images\...» на сервере 1С указывает на диск сервера, а не компьютера пользователя. Если печатная форма формируется на сервере, файл должен быть доступен именно там, либо картинку нужно заранее поместить в базу или во временное хранилище.

Как вывести подпись и печать поверх текста

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

При программном выводе логика та же: рисунок в макете имеет имя (задаётся в свойствах), и к нему можно обратиться из кода через коллекцию рисунков области, заменив картинку на нужную. Это позволяет подставлять подписи разных ответственных лиц в зависимости от документа.

Как проверить результат и что делать, если картинка не выводится

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

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

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

Видимость картинки в печатной форме
Норма

Изображение отображается в нужной области

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

Пустая ячейка — параметр не заполнен или область выведена без параметра

Пропорции изображения
Норма

Картинка не растянута и не сплющена

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

Искажение — заданы жёсткие размеры рисунка без сохранения пропорций

Повторяемость в цикле
Норма

У каждой строки своё фото, у пустых строк фото нет

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

Картинка предыдущей строки дублируется — параметр не очищается

Предварительный просмотр печати
Норма

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

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

Изображение обрезано или уехало на другую страницу

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

Типичные ошибки
01
Параметру присваивают путь к файлу строкой вместо объекта Картинка — картинка не выводится, ошибки иногда нет
02
Не очищают параметр в цикле — фото предыдущего товара появляется у строк без фото
03
Вставляют JPEG с белым фоном поверх текста — рисунок закрывает часть печатной формы
04
Используют локальный путь к файлу при серверном выполнении — файл не найден на сервере
05
Делают макет с картинкой слишком широким — при печати форма не помещается на страницу

Ограничения и альтернативные подходы

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

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

Итог

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

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

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

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

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

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

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

Можно ли вывести картинку в макете СКД (схемы компоновки данных)?

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

Как изменить размер картинки, не искажая пропорции?

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

Почему при выводе нескольких строк у всех одно и то же фото?

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

Можно ли вывести картинку из интернета по ссылке?

Да, но сначала её нужно получить через HTTP-соединение как двоичные данные и создать объект Картинка. Учитывайте, что формирование печатной формы станет зависеть от доступности внешнего ресурса — надёжнее хранить нужные изображения в самой базе.