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

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

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

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

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

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

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

Какие способы вставки картинки существуют и когда какой выбирать

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

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

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

Сравнение способов вставки

Внедрение в макет

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

Из справочника программно

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

Из файла на диске

Быстро для разовых задач, но ломается при переносе базы или смене путей. Не рекомендуется для постоянной эксплуатации.

Как вставить картинку непосредственно в макет табличного документа

Откройте конфигуратор, найдите нужный макет (обычно он лежит в ветке документа: Документы → СчетНаОплату → Макеты) и откройте его двойным щелчком. Макет типа «Табличный документ» отображается как сетка ячеек, похожая на Excel.

Выделите ячейку, куда должна попасть картинка. Затем используйте меню: Таблица → Рисунки → Вставить рисунок (в новых версиях платформы — Главное меню → Таблица → Рисунки). В диалоге выберите вариант «Из файла» и укажите PNG или JPG с диска. Альтернатива — просто перетащить файл изображения мышью из проводника Windows прямо на ячейку макета.

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

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

Как объединить ячейки и настроить размер изображения

Логотип или печать редко помещаются в одну стандартную ячейку. Перед вставкой выделите прямоугольный диапазон ячеек и выполните «Объединить» (кнопка на панели инструментов или контекстное меню). Картинка, вставленная в объединённую ячейку, займёт всю её площадь.

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

Учитывайте разрешение. Картинка с низким разрешением (например, маленький логотип с сайта) на экране выглядит приемлемо, но при печати на принтере расплывётся. Для качественного оттиска используйте исходник с запасом по пикселям: для печати и подписи желательно изображение шириной от 600–1000 пикселей с прозрачным фоном в формате PNG.

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

Когда изображение хранится в базе (типовой пример — реквизит «ФайлЛоготипа» в справочнике организаций), макет готовят особым образом. В нужной ячейке макета в свойстве «Заполнение» укажите «Параметр», задайте имя параметра, а в свойстве «Тип значения» разрешите тип «Картинка». При выводе области код присвоит этому параметру объект картинки.

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

bsl
Процедура ВывестиЛоготип(ТабличныйДокумент, Макет, Организация)
    ОбластьЛого = Макет.ПолучитьОбласть("Шапка");
    ДвоичныеДанные = Организация.ФайлЛоготипа.Получить();
    Если ДвоичныеДанные <> Неопределено Тогда
        ОбластьЛого.Параметры.Логотип = Новый Картинка(ДвоичныеДанные);
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьЛого);
КонецПроцедуры

Альтернативный приём — обращение к рисунку, уже вставленному в макет, по его имени: Область.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанные);. Так удобно подменять «заглушку» в макете реальной печатью конкретной организации, не создавая параметров.

Если картинка берётся из файла на диске, конструктор тот же: Новый Картинка("C:\Images\logo.png"). Но помните про ограничение: на сервере 1С путь должен быть доступен именно серверному процессу, а не пользователю, поэтому в клиент-серверном режиме локальные пути рабочих станций не сработают.

Проверка результата и частые проблемы при печати

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

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

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

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

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

Картинка в предпросмотре
Норма

Изображение видно, пропорции сохранены, фон прозрачный там, где нужно

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

Картинки нет, она растянута или перекрывает важный текст

Печать на принтере
Норма

Оттиск чёткий, цвета соответствуют ожиданиям

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

Изображение размыто, бледное или обрезано по краям

Другие пользователи
Норма

У всех пользователей картинка выводится одинаково

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

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

Типичные ошибки и ограничения

Самая массовая ошибка — вставка печати и подписи как обычного скана на белом фоне с размещением поверх текста. Белый прямоугольник закрывает строки документа, и печатная форма выглядит испорченной. Решение — PNG с прозрачностью.

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

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

Типичные ошибки
01
Скан печати на белом фоне поверх текста — текст под печатью становится нечитаемым; нужен PNG с прозрачностью
02
Правка макета типовой конфигурации напрямую — изменения теряются при обновлении; используйте расширение или штатные реквизиты организации
03
Вставка картинки по локальному пути с диска C: — у других пользователей и на сервере изображение пропадает
04
Растягивание картинки без сохранения пропорций — искажённый логотип и нечитаемая подпись
05
Вставка огромных изображений без сжатия — медленное формирование печатных форм и раздувание базы

Особенности для типовых конфигураций и внешних печатных форм

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

Если печатная форма реализована как внешняя обработка (.epf), макет редактируется внутри этой обработки: откройте её в конфигураторе через Файл → Открыть, найдите макет и вставьте картинку описанным выше способом. Внешняя форма не затрагивает конфигурацию, поэтому обновлениям она не мешает — это хорошая альтернатива прямой доработке.

FAQ

Картинка видна в конфигураторе, но не выводится в печатной форме. Что проверить?

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

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

Оптимален PNG: он поддерживает прозрачность и не даёт артефактов сжатия на однотонных областях, в отличие от JPG. Фон скана нужно предварительно удалить в графическом редакторе, иначе белый прямоугольник закроет текст документа.

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

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

Почему печать на бумаге получается размытой, хотя на экране всё чётко?

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

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

Храните файл логотипа в реквизите каждой организации, а в макете используйте параметр типа «Картинка» или именованный рисунок. В коде при формировании формы получайте двоичные данные из реквизита текущей организации и присваивайте их параметру области перед выводом.

Можно ли программно заменить картинку, уже вставленную в макет?

Да. Дайте рисунку в макете имя, затем в коде обратитесь к нему через коллекцию рисунков области: Область.Рисунки.ИмяРисунка.Картинка = Новый Картинка(ДвоичныеДанные). Так удобно подменять заглушку реальной печатью или подписью.

Итог

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

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