Разработка и Конфигурация · 11 мин
Как вставить картинку в макет 1С
Как вставить картинку в макет 1С: добавление изображения в табличный документ, печатную форму и макет через конфигуратор. Способы, код, ошибки и проверка результата.
Макет в 1С — это шаблон печатной формы, отчёта или табличного документа, и картинки в нём встречаются постоянно: логотип компании в шапке счёта, подпись директора, печать организации, штрихкод в этикетке. Платформа поддерживает несколько способов вставки изображения, и выбор зависит от того, статична картинка или подставляется программно из базы данных.
Основные сценарии: рисунок, добавленный в макет через конфигуратор как элемент табличного документа; картинка, выводимая программно методом области макета; изображение, загружаемое из файла или из реквизита справочника (например, фото товара из карточки номенклатуры). Каждый способ имеет свои ограничения по форматам, размерам и поведению при печати.
Ниже разобраны все рабочие варианты: от простого перетаскивания изображения в макет до вывода картинки кодом на встроенном языке, с типичными ошибками и способами проверки результата.
Какие макеты поддерживают картинки и какие форматы подходят
Изображения можно вставлять в макеты типа «Табличный документ» — именно они используются для печатных форм документов и отчётов. В макетах типа «Двоичные данные» картинка хранится как файл целиком, а в макетах «HTML-документ» — как ссылка или встроенный ресурс, но это отдельные сценарии.
Табличный документ 1С корректно работает с распространёнными растровыми форматами: PNG, JPEG, BMP, GIF. Для логотипов и печатей предпочтителен PNG — он поддерживает прозрачный фон, поэтому изображение аккуратно ложится на белый лист без цветных прямоугольников вокруг. JPEG подходит для фотографий, но не для подписей и печатей, где важна прозрачность.
Обращайте внимание на размер исходного файла. Картинка в несколько мегапикселей, вставленная в макет, увеличит размер конфигурации и замедлит формирование печатной формы. Перед вставкой изображение стоит уменьшить до реальных габаритов, в которых оно будет выводиться, — обычно достаточно нескольких сотен пикселей по ширине.
Как вставить статичную картинку в макет через конфигуратор
Это самый простой вариант: изображение жёстко встраивается в макет и одинаково выводится во всех печатных формах. Подходит для фирменного бланка, статичного логотипа, образца подписи, который не меняется от документа к документу.
- 1Откройте конфигуратор и найдите нужный макет: «Общие → Макеты» либо ветка «Макеты» конкретного документа или справочника.
- 2Откройте макет двойным щелчком — появится редактор табличного документа.
- 3Выделите ячейку, в которую нужно поместить изображение.
- 4Выполните команду меню «Таблица → Рисунки → Вставить рисунок» и укажите файл картинки на диске.
- 5Перетащите рамку рисунка в нужное место и задайте размер, растянув за маркеры или через свойства рисунка.
- 6Сохраните макет и обновите конфигурацию базы данных (F7).
После вставки рисунок становится элементом табличного документа, привязанным к ячейкам. У него есть свойства, доступные через палитру свойств: размер, положение, режим обработки прозрачности, параметр «Защита». Если картинка должна масштабироваться вместе с областью, проверьте настройки привязки к ячейкам — иначе при изменении ширины колонок рисунок останется на месте или «уедет».
Проверьте результат сразу: сформируйте печатную форму документа, который использует этот макет. Картинка должна отображаться в предпросмотре и попадать в область печати — иногда рисунок визуально виден в редакторе, но выходит за границы печатной страницы и обрезается на бумаге.
Как вывести картинку программно из базы данных
Когда изображение хранится в базе — например, логотип в реквизите организации или фото в карточке номенклатуры — статичная вставка не подходит. В этом случае в макет добавляют пустой рисунок-заглушку, а реальную картинку подставляют кодом при формировании печатной формы.
Сначала вставьте в макет любой рисунок (можно маленький прозрачный PNG) и задайте ему понятное имя в свойствах, например «Логотип». Затем в модуле, где формируется печатная форма, получите область макета и установите картинку программно:
Макет = ПолучитьМакет("ПечатьСчета");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
Рисунок = ОбластьШапка.Рисунки.Логотип;
Рисунок.Картинка = Новый Картинка(ДанныеКартинки); // ДвоичныеДанные из реквизита
ТабДок.Вывести(ОбластьШапка);
Двоичные данные картинки обычно берут из хранилища значения: например, из реквизита справочника типа «ХранилищеЗначения», где лежит файл изображения, или из регистра сведений с присоединёнными файлами. Если данные хранятся как файл на диске, используйте конструктор Новый Картинка("ПутьКФайлу").
Как вставить картинку в макет управляемой формы и другие случаи
Картинка в макете для поля формы
Иногда под «макетом» понимают не печатную форму, а форму объекта, где нужно показать изображение. Там картинка выводится в элемент формы «Поле картинки», а источником служит либо адрес временного хранилища с двоичными данными, либо картинка из библиотеки картинок конфигурации. Макет табличного документа здесь не используется — механизм другой.
Картинка из макета типа «Двоичные данные»
Изображение можно заранее положить в конфигурацию как макет типа «Двоичные данные» и получать его кодом: Новый Картинка(ПолучитьМакет("ЛоготипКомпании")). Такой подход удобен, когда картинка едина для всей конфигурации, но не должна редактироваться пользователем. Минус — для замены логотипа придётся обновлять конфигурацию.
Штрихкоды и QR-коды
Штрихкоды в макет обычно не вставляют как готовые картинки — их генерируют компонентой печати штрихкодов и выводят в рисунок макета программно, по тому же принципу, что и логотип из базы. Если компонента не установлена, на месте штрихкода останется пустой рисунок, поэтому этот момент проверяют отдельно.
Сравнение вариантов
Подходит для постоянных элементов бланка. Просто и не требует кода, но замена картинки — только через конфигуратор.
Подходит для логотипов, фото товаров, подписей, которые меняются пользователями. Требует кода и рисунка-заглушки в макете.
Подходит для единой картинки на всю конфигурацию. Обновление только через конфигуратор, зато не зависит от данных в базе.
Типичные ошибки и как их избежать
Отдельная группа проблем — права доступа. Если печатная форма формируется под пользователем с ограниченными правами, а картинка читается из справочника, к которому у него нет доступа, изображение не выведется либо вызовет ошибку. В серверных процедурах печати это иногда обходят установкой привилегированного режима для чтения картинки.
Как проверить, что картинка вставлена правильно
Минимальная проверка — сформировать печатную форму реального документа и оценить результат в предпросмотре. Но этого недостаточно: нужно убедиться, что изображение корректно выводится при печати на принтер и при сохранении в PDF или Excel, потому что поведение в разных форматах может отличаться.
Как проверить результат
Картинка на месте, чёткая, без искажений пропорций
Рисунок растянут, обрезан или отсутствует
Изображение попадает в область печати целиком
Картинка обрезана по краю листа или переносится на другую страницу
Картинка сохраняется в файле
В файле пустое место или искажённое изображение
У разных объектов выводятся их собственные картинки
У всех документов одна заглушка или пустой рисунок
Если картинка выводится программно, дополнительно проверьте граничные случаи: документ, у которого реквизит с изображением не заполнен, и документ с очень большим файлом. В первом случае желательно предусмотреть заглушку или пропуск рисунка, во втором — убедиться, что формирование печатной формы не замедляется заметно.
Что важно запомнить
Статичную картинку вставляют в макет табличного документа через «Таблица → Рисунки → Вставить рисунок», а изменяемую — подставляют кодом в рисунок-заглушку через свойство «Картинка» полученной области. Используйте PNG для логотипов и подписей, уменьшайте файлы перед вставкой, настраивайте привязку к ячейкам и проверяйте результат в предпросмотре, при печати и при сохранении в файл.
Частые вопросы
Можно ли вставить картинку в макет без конфигуратора, прямо в режиме «Предприятие»?
Напрямую в макет — нет, макеты редактируются только в конфигураторе. Но если разработчик предусмотрел программную подстановку (например, логотип берётся из реквизита организации), пользователь меняет изображение через карточку объекта, не трогая макет. В некоторых конфигурациях есть механизм «пользовательских макетов» печатных форм, где картинку можно добавить в режиме предприятия через редактор табличного документа.
Почему картинка видна в редакторе макета, но не выводится в печатной форме?
Чаще всего область, в которой находится рисунок, не выводится кодом, либо рисунок находится вне границ именованной области, которую получает программа. Проверьте, что рисунок полностью лежит внутри строк области, и что именно эта область выводится в табличный документ.
Какой формат и размер картинки лучше использовать для логотипа?
Оптимален PNG с прозрачным фоном, уменьшенный до реального размера вывода — обычно достаточно ширины в несколько сотен пикселей. Большие файлы раздувают конфигурацию и замедляют формирование печатных форм, а JPEG даёт непрозрачный фон вокруг изображения.
Как вывести фото товара в печатную форму накладной?
Добавьте в область строки табличной части рисунок-заглушку, а в коде при обходе товаров получайте двоичные данные из реквизита карточки номенклатуры (обычно это хранилище значения с файлом изображения) и присваивайте их свойству «Картинка» рисунка перед выводом каждой строки. Учтите, что с десятками фото печатная форма станет тяжёлой — фото стоит заранее уменьшать.
Картинка обрезается при печати, хотя в предпросмотре всё нормально. Что делать?
Проверьте параметры страницы табличного документа: поля, масштаб и размещение рисунка относительно границ печатной области. Рисунок, выходящий за правый край листа, в предпросмотре может отображаться, а на бумаге обрезаться. Помогает включение автоподгонки по ширине страницы или сдвиг рисунка внутрь области печати.
Можно ли хранить несколько картинок в одном макете и выбирать нужную?
Да. Вставьте несколько рисунков в разные области макета и выводите только нужную область по условию, либо используйте один рисунок и подставляйте разные картинки программно. Второй вариант гибче: картинки можно хранить в макетах типа «Двоичные данные» или в справочниках и выбирать в коде по параметру.