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

Разработка и Конфигурация · 11 мин

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

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

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

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

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

Какие способы вставки картинки существуют в 1С

Табличный документ в 1С — это не электронная таблица вроде Excel, а отдельный формат с собственной логикой. Изображение не «кладётся» внутрь ячейки как значение: оно добавляется как объект-рисунок, привязанный к области ячеек. Именно поэтому прямой аналог команды «вставить картинку в ячейку» из Excel работает иначе.

Доступны три подхода:

  • Ручная вставка — подходит для разового оформления документа, который не формируется автоматически;
  • Картинка в макете — используется для статичных изображений в печатных формах: логотипы, печати, подписи;
  • Программная вставка — нужна, когда картинка динамическая: фото товара из справочника, QR-код, изображение из хранилища значений.

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

Ручная вставка

Быстро для разового документа, но не подходит для автоматически формируемых печатных форм

Картинка в макете

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

Программная вставка

Единственный вариант для динамических изображений из базы, требует навыков работы со встроенным языком

Вставка картинки вручную в табличный документ

Если табличный документ открыт в режиме «1С:Предприятие» (например, сформированный отчёт или печатная форма, открытая на редактирование), картинку можно добавить через интерфейс. Порядок действий:

  1. Откройте табличный документ и выделите ячейку, в которую нужно поместить изображение.
  2. В главном меню выберите «Таблица» → «Рисунки» → «Вставить рисунок» (в некоторых версиях платформы пункт называется «Картинка»).
  3. В диалоге укажите файл изображения на диске — поддерживаются распространённые растровые форматы (PNG, JPEG, BMP) и некоторые векторные.
  4. После вставки перетащите рисунок мышью в нужную ячейку и подгоните размер за углы рамки.

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

Учтите: вставленная вручную картинка сохраняется только вместе с конкретным документом. Если печатная форма формируется заново при каждом открытии, ручная правка пропадёт — в этом случае нужен макет или программный вывод.

Добавление картинки в макет печатной формы

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

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

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

Важный нюанс: если область с рисунком выводится в цикле (например, строки товаров), картинка будет дублироваться в каждой строке. Для логотипа размещайте рисунок в области шапки, которая выводится один раз.

Программная вставка картинки в ячейку

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

ТабДок = Новый ТабличныйДокумент;

// Получаем картинку из хранилища значений справочника

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

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

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

Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);

Рисунок.Картинка = Картинка;

Рисунок.Верх = 10; // отступ сверху в мм

Рисунок.Лево = 5; // отступ слева в мм

Рисунок.Высота = 20; // высота в мм

Рисунок.Ширина = 30; // ширина в мм

КонецЕсли;

Ключевые моменты этого подхода:

  • Координаты Верх и Лево задаются в миллиметрах от левого верхнего угла документа, а не от ячейки — их нужно рассчитывать с учётом уже выведенных областей;
  • Чтобы привязать рисунок к конкретной ячейке, удобно вывести область, затем по высоте области вычислить позицию рисунка;
  • Если картинка хранится в базе как двоичные данные в хранилище значений, её сначала извлекают методом Получить(), затем создают объект Картинка.
bsl
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Новый Картинка(ДвоичныеДанные);
Рисунок.Верх = ТабДок.ВысотаТаблицы * 5; // примерный расчёт позиции
Рисунок.Лево = 2;
Рисунок.Высота = 15;
Рисунок.Ширина = 15;

Альтернатива — область макета с именованным рисунком: в макете добавляется пустой рисунок-заполнитель, а в коде ему присваивается нужная картинка через обращение к коллекции рисунков области. Это удобнее, чем расчёт координат, потому что позиция уже задана макетом.

Как подобрать размер и не исказить изображение

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

Практические рекомендации:

  • Рассчитывайте второй размер пропорционально: если известна ширина, высоту вычисляйте как Высота = Ширина * ВысотаИсходника / ШиринаИсходника. Размеры исходника доступны через свойства Картинка.Ширина() и Картинка.Высота() (в пикселях).
  • Для печати используйте изображения с запасом по разрешению: логотип шириной 30 мм желательно брать не меньше 300–400 пикселей по ширине.
  • Проверяйте результат именно в предварительном просмотре печати, а не только на экране — масштаб отображения в табличном документе может скрывать искажения.

Типичные ошибки и их решение

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

Типичные ошибки
01
Рисунок добавлен до вывода областей — координаты рассчитаны от пустого документа, и картинка оказывается вверху страницы. Решение: добавляйте рисунок после вывода всех областей
02
Хранилище значений пустое — метод Получить() возвращает Неопределено, конструктор Картинка падает с ошибкой. Решение: всегда проверять результат на Неопределено
03
Картинка в макете ссылается на внешний файл, который потом удалили — рисунок пропадает. Решение: сохранять картинку в составе конфигурации
04
Искажённые пропорции из-за ручного задания ширины и высоты. Решение: вычислять второй размер пропорционально исходнику
05
Рисунок перекрывает текст соседних ячеек. Решение: зарезервировать под картинку отдельную строку достаточной высоты и задать её высоту явно

Ещё одна тонкость: при выводе табличного документа в PDF или отправке на печать векторные и полупрозрачные изображения могут обрабатываться иначе, чем на экране. Если картинка содержит прозрачность и выглядит странно на печати, конвертируйте её в PNG с белым фоном заранее.

Проверка результата

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

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

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

Отображение на экране
Норма

Картинка видна в нужной ячейке, пропорции сохранены

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

Рисунок смещён, растянут или отсутствует

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

Изображение чёткое, не обрезано границами страницы

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

Картинка размыта, обрезана или уехала на другую страницу

Повторное формирование формы
Норма

Картинка появляется при каждом формировании

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

Изображение пропадает — значит, оно было вставлено вручную или ссылается на внешний файл

Пустые данные
Норма

При отсутствии картинки в базе форма выводится без ошибок

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

Возникает исключение при обращении к пустому хранилищу

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

Итог

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

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

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

Можно ли вставить картинку прямо в ячейку, как в Excel?

Нет, в табличном документе 1С изображение всегда является отдельным объектом-рисунком, привязанным к координатам или области. Максимально близкий аналог — разместить рисунок поверх ячейки и задать ему размеры, равные размерам этой ячейки.

Как вывести фото товара из справочника в прайс-лист?

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

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

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

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

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

Как вставить QR-код в печатную форму?

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

Замедляет ли большое количество картинок формирование документа?

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