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

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

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

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

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

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

Важно понимать: в управляемой форме нельзя просто «перетащить» файл картинки, как в редакторе документов. Изображение привязывается либо к реквизиту, либо к элементу формы с указанием источника. Поэтому большая часть работы — это правильная настройка реквизита и элемента, а не сама вставка.

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

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

Основных сценариев четыре. Первый — декоративная картинка, которая не меняется: логотип, подсказка, оформление. Второй — изображение, связанное с данными объекта: фото товара, скан документа. Третий — картинка из стандартной библиотеки платформы для оформления кнопок и статусов. Четвёртый — динамическая картинка, формируемая программно, например штрихкод или QR-код.

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

Реквизит типа «Картинка»

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

Строка с адресом временного хранилища

Стандартный способ для изображений из базы (двоичные данные, присоединенные файлы). Требуется программная загрузка при открытии формы.

Картинка из библиотеки или конфигурации

Для оформления: иконки, статусы, кнопки. Не требует реквизитов, задаётся прямо в свойствах элемента.

Декорация с картинкой

Простейший вариант для логотипа или подсказки на форме без привязки к данным.

Вставка статичной картинки через декорацию или реквизит

Если нужно просто показать на форме логотип или иллюстрацию, которая не зависит от данных, проще всего использовать элемент «Декорация» или реквизит типа «Картинка».

Порядок действий для статичной картинки
  1. 1
    Откройте форму в конфигураторе (режим редактирования формы).
  2. 2
    Добавьте реквизит формы, например «Логотип», с типом «Картинка».
  3. 3
    Перетащите реквизит в дерево элементов формы — платформа создаст поле картинки.
  4. 4
    В свойствах реквизита или в палитре свойств поля задайте значение картинки: из файла, из библиотеки или из общей картинки конфигурации.
  5. 5
    Настройте размер: свойства «РазмерКартинки» (Пропорционально, РеальныйРазмер, Растянуть) и положение на форме.
  6. 6
    Сохраните форму и проверьте отображение в режиме 1С:Предприятие.

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

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

Вывод картинки из базы данных (фото товара, скан документа)

Самый частый прикладной сценарий — показать изображение, которое хранится в информационной базе: в реквизите типа «ХранилищеЗначения», в присоединенных файлах (БСП) или в регистре сведений. В управляемой форме такое изображение выводится через строковый реквизит, содержащий адрес временного хранилища.

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ДвоичныеДанные = Объект.Фото.Получить(); // реквизит типа ХранилищеЗначения
	Если ДвоичныеДанные <> Неопределено Тогда
		АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
	КонецЕсли;
КонецПроцедуры

Для этого сценария создайте реквизит формы «АдресКартинки» типа «Строка» (длина не ограничена или достаточная) и добавьте на форму элемент «Поле картинки», связанный с этим реквизитом. В свойствах поля укажите путь к данным — имя реквизита.

Загрузка картинки с диска по кнопке пользователя

Чтобы пользователь мог сам выбрать и загрузить изображение, добавьте команду формы и кнопку, а в обработчике используйте диалог выбора файла или метод НачатьПомещениеФайла(). В тонком клиенте без модальных вызовов рекомендуется именно асинхронный вариант.

bsl
&НаКлиенте
Процедура ЗагрузитьФото(Команда)
	Оповещение = Новый ОписаниеОповещения("ЗагрузитьФотоЗавершение", ЭтотОбъект);
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьФотоЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДопПараметры) Экспорт
	Если Результат Тогда
		АдресКартинки = Адрес;
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

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

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

Картинки из библиотеки и общие картинки конфигурации

Для оформления форм — иконки команд, индикаторы статусов, пиктограммы — не нужно хранить файлы в базе. Платформа предоставляет стандартную библиотеку картинок, а конфигурация может содержать собственные общие картинки (ветка «Общие» → «Общие картинки» в дереве конфигурации).

Чтобы использовать такую картинку, выделите элемент формы (кнопку, декорацию, поле) и в палитре свойств откройте свойство «Картинка». В диалоге выбора доступны три источника: из конфигурации (общие картинки), из библиотеки картинок платформы и из файла. Для кнопок команд панелей обычно выбирают библиотечные картинки — они единообразны со стандартным интерфейсом.

Программно библиотечная картинка доступна через объект БиблиотекаКартинок, например: Элементы.КнопкаПечать.Картинка = БиблиотекаКартинок.Печать;. Это удобно, когда вид кнопки нужно менять в зависимости от состояния документа.

Вставка картинки в обычные формы

В старых конфигурациях на обычных формах (режим обычного приложения) механизм проще. Достаточно добавить на форму элемент управления «Поле картинки» через панель инструментов редактора форм и в его свойствах либо выбрать картинку напрямую, либо связать с реквизитом типа «Картинка» или «ХранилищеЗначения».

Для реквизита объекта типа «ХранилищеЗначения» поле картинки в обычной форме умеет работать напрямую: укажите в свойстве «Данные» путь к реквизиту, и платформа сама извлечёт изображение. Дополнительный код для временного хранилища в обычных формах не нужен — это особенность именно управляемых форм.

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

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

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

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

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

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

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

Поле пустое — адрес хранилища не установлен или потерян

Пропорции изображения
Норма

Картинка не растянута и не обрезана

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

Искажение — неверное значение свойства РазмерКартинки

Сохранение в базе
Норма

После записи и повторного открытия картинка на месте

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

После перезаписи картинка пропала — не реализован перенос из хранилища в реквизит объекта

Поведение при новом объекте
Норма

У нового объекта поле пустое, ошибок нет

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

Ошибка обращения к реквизиту при создании нового объекта

Типичные ошибки
01
Помещение данных во временное хранилище без УникальныйИдентификатор формы — адрес умирает после серверного вызова, поле остаётся пустым.
02
Реквизит типа «Картинка» вместо строки с адресом при выводе данных из базы — картинка не отображается или не обновляется.
03
Загрузка двоичных данных на клиенте вместо сервера — ошибка, так как реквизиты объекта доступны только на сервере.
04
Свойство РазмерКартинки = Растянуть — логотип искажается при любом изменении ширины формы.
05
Сохранение только адреса хранилища без переноса двоичных данных в объект — после закрытия формы изображение теряется.
06
Крупные изображения без сжатия — форма открывается медленно, база разрастается; перед сохранением фото стоит уменьшать.
Если в конфигурации есть подсистема присоединенных файлов (БСП), не изобретайте собственное хранение картинок: у карточек номенклатуры и документов уже есть механизм «Присоединенные файлы», и для вывода фото достаточно получить двоичные данные первого файла-изображения через методы общего модуля РаботаСФайлами.
ПЗ
Практическое замечание

Ограничения и рекомендации по производительности

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

Рекомендуется при загрузке уменьшать изображение средствами объекта «Картинка» или внешними средствами, хранить в базе оптимизированную версию, а оригинал — при необходимости — как отдельный присоединенный файл. Также не выводите картинки в списках с большим числом строк: это резко замедляет прокрутку.

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

Почему поле картинки пустое, хотя код выполняется без ошибок?

Чаще всего адрес временного хранилища получен без привязки к уникальному идентификатору формы и перестаёт действовать после завершения серверной процедуры. Проверьте, что в ПоместитьВоВременноеХранилище вторым параметром передан УникальныйИдентификатор формы, а реквизит поля — строка, содержащая именно этот адрес.

Можно ли вставить картинку в форму списка?

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

Как вывести картинку в печатную форму?

В макете табличного документа добавьте рисунок (область типа «Картинка») и при формировании присвойте ему значение: либо объект Картинка из двоичных данных, либо общую картинку конфигурации. Механизм отличается от формы — временное хранилище там не нужно.

Можно ли менять картинку программно по условию?

Да. Для реквизита типа «Картинка» просто присвойте новое значение, для строки с адресом — поместите новые двоичные данные в хранилище и обновите адрес. Библиотечные картинки меняются через свойство элемента: Элементы.ИмяЭлемента.Картинка = БиблиотекаКартинок.ИмяКартинки.

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

Платформа работает с распространёнными растровыми форматами: PNG, JPEG, GIF, BMP, а также с иконками ICO. Для фотографий обычно используют JPEG, для логотипов и пиктограмм с прозрачностью — PNG. Специфические форматы вроде WebP или TIFF могут не поддерживаться — проверяйте на конкретной версии платформы.

Как добавить картинку на форму, не меняя типовую конфигурацию?

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

Итог

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

Картинка в форме 1С всегда привязана к реквизиту или источнику: статичные изображения — через реквизит типа «Картинка» или декорацию, изображения из базы — через строковый реквизит с адресом временного хранилища, оформление — через библиотеку картинок. Ключевые точки отказа: потерянный адрес хранилища без УникальныйИдентификатор формы, неверное свойство РазмерКартинки и отсутствие сохранения двоичных данных в объект при записи. Для типовых конфигураций предпочтительны расширения и штатная подсистема присоединенных файлов.