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

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

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

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

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

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

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

Где хранятся макеты и как открыть нужный

Макет — это шаблон, по которому 1С строит печатную форму или отчёт. Табличные макеты (именно они используются для печати документов) могут находиться в нескольких местах конфигурации:

  • Общие макеты — ветка «Общие → Макеты» в дереве конфигурации. Здесь лежат макеты, общие для нескольких объектов.
  • Макеты объекта — у справочников, документов и отчётов есть своя ветка «Макеты». Макет печатной формы конкретного документа обычно находится там.
  • Внешние печатные формы — файлы .epf, подключаемые через «Дополнительные отчеты и обработки». Их макеты редактируются через «Файл — Открыть» в конфигураторе.

Чтобы открыть макет, запустите конфигуратор, найдите нужный объект в дереве конфигурации, разверните ветку «Макеты» и дважды щёлкните по имени макета. Откроется табличный документ — рабочая область, похожая на лист Excel.

Вставка статичного рисунка прямо в макет

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

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

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

Учтите: встроенный в макет рисунок увеличивает размер конфигурации. Логотип весом в несколько мегабайт, вставленный в десяток макетов, заметно раздует файл конфигурации. Перед вставкой сжимайте изображения до разумного размера — для печати обычно достаточно ширины 300–600 пикселей.

Вывод рисунка из базы данных программно

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

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

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

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

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

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

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

Иначе

Рисунок.Картинка = Новый Картинка; // пустая картинка

КонецЕсли;

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

Ключевой момент — обращение к рисунку по имени: ОбластьМакета.Рисунки.Логотип. Имя задаётся в свойствах рисунка в макете. Если имя не задано или не совпадает с именем в коде, платформа выдаст ошибку «Поле объекта не обнаружено».

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

Выбор способа: в макет или из базы

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

Сравнение вариантов

Рисунок внутри макета

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

Рисунок из базы программно

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

Внешняя печатная форма (.epf)

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

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

Настройка размера и положения рисунка

Рисунок в макете привязан к ячейке или объединённой области. Чтобы логотип не «разъезжался» при печати, задайте ему фиксированные размеры: выделите рисунок, откройте палитру свойств (правый клик — «Свойства») и укажите ширину и высоту в явном виде, сняв флажок автоподбора, если он установлен.

Для аккуратного выравнивания удобно объединить несколько ячеек под рисунок и задать им фиксированную высоту строки. Тогда картинка займёт предсказуемое место, а соседние области макета не сдвинутся. Проверяйте результат не только на экране, но и в предварительном просмотре печати — масштаб на экране и на бумаге различается.

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

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

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

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

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

Отображение рисунка в печатной форме
Норма

Картинка видна, не растянута, не перекрывает текст

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

Пустое место, искажённые пропорции, наложение на текст

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

Рисунок в пределах области печати, поля страницы не обрезают изображение

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

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

Формирование формы у других пользователей
Норма

Рисунок отображается у всех пользователей

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

У части пользователей пусто — вероятно, картинка берётся из локального файла

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

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

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

Табличный документ работает с распространёнными растровыми форматами: PNG, JPEG, BMP, GIF. Для логотипов с прозрачным фоном удобнее PNG. Векторные форматы (SVG, WMF) напрямую в табличный макет обычно не вставляются — их предварительно конвертируют в растр.

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

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

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

Храните логотип в реквизите справочника «Организации» типа «ХранилищеЗначения». В макете оставьте рисунок-заполнитель, а в коде печатной формы присваивайте ему картинку из реквизита той организации, по которой формируется документ.

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

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

Рисунок при печати обрезается по краю страницы. Что делать?

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

Как удалить рисунок из макета?

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

Итог

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

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