Разработка и Конфигурация · 9 мин
Как вставить картинку в таблицу 1С
Как вставить картинку в табличный документ 1С: через макет, программно и в печатную форму. Пошаговые инструкции, код, типичные ошибки и ответы на вопросы.
Вставка картинки в таблицу 1С — частая задача: логотип в шапке счёта, фото товара в прайсе, подпись директора в печатной форме. Способ зависит от того, где именно нужна картинка: в макете печатной формы, в табличном документе, сформированном программно, или в форме списка. Ниже разобраны все рабочие сценарии для управляемых и обычных форм.
Ключевой момент: в 1С «таблица» чаще всего означает табличный документ (объект ТабличныйДокумент) или макет типа «Табличный документ». Картинки в них вставляются через область-рисунок, а не как в Excel перетаскиванием. Это принципиально меняет подход: сначала готовится область, потом в неё подставляется изображение.
Где в 1С встречаются «таблицы» и что выбрать
Под словом «таблица» пользователи обычно понимают три разных объекта. Первый — макет табличного документа, который используется для печатных форм. Второй — табличный документ, отображаемый на форме или возвращаемый отчётом. Третий — табличное поле (таблица значений) на форме, куда иногда хотят вывести фото товара или сотрудника.
Для макета и табличного документа механизм один — рисунки. Для табличного поля на форме картинка выводится через колонку с видом «Поле картинки» и элемент управления, связанный с данными. Путать эти сценарии нельзя: код и настройки различаются.
Как выбрать подход
Вставка картинки в макет печатной формы
Это самый частый сценарий — например, поставить логотип в шапку счёта. Откройте конфигуратор, найдите нужный макет (в объекте документа или в общих макетах) и убедитесь, что его тип — «Табличный документ». Дальше работа идёт прямо в редакторе макета.
Выделите ячейки, где должен располагаться рисунок, затем через меню «Таблица — Рисунки — Вставить рисунок» (в разных версиях платформы пункт может называться «Вставить») добавьте область. В свойствах рисунка задайте имя, например «Логотип», и выберите картинку из файла или из общих картинок конфигурации.
- 1Откройте макет типа «Табличный документ» в конфигураторе
- 2Выделите диапазон ячеек под картинку и объедините их при необходимости
- 3Вставьте рисунок через меню Таблица — Рисунки
- 4В свойствах рисунка задайте понятное имя и выберите файл изображения
- 5Настройте размер: «Пропорционально» или по размеру области
- 6Обновите конфигурацию базы данных и сформируйте печатную форму для проверки
Проверьте результат, сформировав печатную форму в режиме предприятия. Если картинка обрезана или растянута, вернитесь в свойства рисунка и измените параметр размера. Для логотипов обычно лучше подходит режим сохранения пропорций.
Программная вставка картинки в табличный документ
Когда изображение нужно подставлять динамически — например, фото товара в каждую строку прайса, — рисунок добавляется кодом. Сначала в макете создаётся именованная область-заполнитель, затем в модуле менеджера печати картинка присваивается этой области.
Если рисунок уже есть в макете, достаточно присвоить свойство Картинка. Если область нужно создать с нуля, используется коллекция Рисунки табличного документа.
// Вариант 1: рисунок уже есть в макете
ОбластьЛоготип = Макет.ПолучитьОбласть("Шапка");
ОбластьЛоготип.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанные);
ТабДок.Вывести(ОбластьЛоготип);
// Вариант 2: добавление рисунка программно
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Новый Картинка(ДвоичныеДанные);
Рисунок.Разместить(ТабДок.Область("R2C2:R5C4"));
Двоичные данные обычно берут из хранилища значений в базе (реквизит справочника типа «ХранилищеЗначения») или читают из файла: Новый ДвоичныеДанные("C:\Images\logo.png"). В клиент-серверном режиме помните: код, выполняющийся на сервере, не видит локальные файлы пользователя — передавайте данные через временное хранилище.
Хранение картинок: общие картинки, макет или база данных
Есть три основных места хранения изображений, и выбор влияет на удобство сопровождения. Общие картинки конфигурации подходят для статичных элементов интерфейса и печати, но меняются только через конфигуратор. Картинка, встроенная прямо в макет, проста, но не переиспользуется. Хранение в базе (справочник с реквизитом «ХранилищеЗначения» или присоединённые файлы) позволяет пользователям менять логотип и фото без доработки конфигурации.
| Способ хранения | Когда подходит | Ограничение |
|---|---|---|
| Общие картинки | Единый логотип, иконки | Изменение только в конфигураторе |
| Встроена в макет | Разовая печатная форма | Не используется в других макетах |
| Справочник / присоединённые файлы | Фото товаров, подписи, логотипы организаций | Рост объёма базы, нужен код извлечения |
| Внешний файл | Временные выгрузки | Зависимость от пути и прав доступа |
Для типовых конфигураций с механизмом присоединённых файлов (БСП) предпочтителен третий вариант: изображение получают через РаботаСФайлами.ДвоичныеДанныеФайла() и подставляют в рисунок макета.
Картинка в табличном поле на форме
Если нужно показать фото товара прямо в списке на форме, добавьте в таблицу формы колонку, в свойствах которой установлен вид «Поле картинки». Данные колонки — либо адрес во временном хранилище, либо картинка из коллекции, либо значение из данных объекта.
В динамическом списке вывод произвольной картинки ограничен: чаще используют декорацию формы с обновлением при активизации строки. Для таблицы значений на форме заполните колонку адресами картинок при создании на сервере — тогда каждая строка покажет своё изображение.
Для прайсов и каталогов с фото стабильнее работает схема: фото хранятся как присоединённые файлы номенклатуры, а при формировании табличного документа для каждой строки программно добавляется рисунок с двоичными данными файла. Так форма не зависит от путей на диске и работает у всех пользователей.
Типичные ошибки и проверка результата
Чаще всего проблемы возникают из-за пустых двоичных данных, неверного формата файла и обращения к рисунку по неправильному имени. Платформа не всегда выдаёт понятную ошибку — иногда область просто остаётся пустой.
Как проверить результат
Картинка видна, пропорции сохранены, не перекрывает текст
Пустая область, растянутое или обрезанное изображение
Размер данных больше нуля, формат PNG или JPEG
Неопределено или нулевой размер — рисунок не появится
Картинка видна у всех, у кого есть права на данные
Видна только у автора — проблема с правами или локальным файлом
FAQ
Можно ли вставить картинку в таблицу 1С без конфигуратора?
В типовых конфигурациях пользователь может менять логотип организации через настройки печатных форм или карточку организации, если такой механизм предусмотрен разработчиком. Изменить сам макет или добавить новый рисунок без конфигуратора нельзя.
Какие форматы изображений поддерживает табличный документ?
Надёжно работают растровые форматы PNG и JPEG, а также BMP. Для логотипов удобнее PNG с прозрачным фоном. Экзотические форматы лучше заранее конвертировать, иначе рисунок может не отобразиться.
Почему картинка видна в макете, но не выводится при печати?
Обычно причина в том, что область с рисунком не выводится в результирующий документ либо программно перезаписывается пустым значением. Проверьте, что код вызывает Вывести() именно для этой области и не присваивает рисунку пустую картинку.
Как вставить разные картинки в строки табличного документа?
Создайте в макете строку-шаблон с именованным рисунком, затем в цикле получайте эту область, присваивайте рисунку картинку из данных текущей строки и выводите область в документ. Для каждой итерации подставляется своё изображение.
Можно ли вставить картинку из интернета по ссылке?
Да, но сначала её нужно скачать: выполнить HTTP-запрос, получить двоичные данные и создать из них объект Картинка. Прямой подстановки URL в табличный документ платформа не поддерживает.
Влияет ли картинка в макете на размер конфигурации?
Да, изображение, встроенное в макет или общие картинки, хранится внутри конфигурации и увеличивает её объём. Один небольшой логотип некритичен, но десятки фотографий лучше хранить в данных базы, а не в метаданных.
Что важно запомнить
Картинка в таблицу 1С вставляется через область-рисунок табличного документа: статично в макете или программно через свойство Картинка и коллекцию Рисунки. Храните изображения там, где их удобно обновлять, следите за размером файлов и проверяйте результат в реальной печатной форме.