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