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