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

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

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

Как добавить картинку на форму в 1С: через элемент «Поле картинки», из общих картинок, программно в коде. Инструкции для конфигуратора и типовых ошибок.

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

Инструкции ниже подходят для управляемых форм, которые используются в современных конфигурациях на платформе 1С:Предприятие 8.3. Для обычных форм (устаревший режим) логика похожа, но редактор формы выглядит иначе. Все действия выполняются в конфигураторе, поэтому потребуются права на изменение конфигурации и, желательно, тестовая база для проверки.

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

Способы добавить картинку: что выбрать

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

  • Общая картинка конфигурации — подходит для логотипов, декоративных изображений, фиксированных иконок. Картинка хранится внутри конфигурации и одинакова для всех пользователей.
  • Библиотека картинок платформы — стандартные пиктограммы (информация, предупреждение и т.п.). Удобно для служебных обозначений, не требует загрузки файлов.
  • Реквизит формы или объекта — для изображений, которые хранятся в базе: фото номенклатуры, подписи, сканы. Картинка загружается пользователем или кодом.
  • Программное формирование — когда картинку нужно показать по условию или сгенерировать на лету.

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

Общая картинка конфигурации

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

Реквизит с двоичными данными

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

Библиотека картинок платформы

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

Программный вывод

Для условного отображения и динамических изображений. Ограничение: требует написания кода и понимания временного хранилища.

Добавляем статичную картинку из общих картинок конфигурации

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

Порядок действий
  1. 1
    В конфигураторе откройте ветку «Общие → Общие картинки» и через правую кнопку мыши добавьте новую картинку, загрузив файл (PNG, JPG и другие поддерживаемые форматы).
  2. 2
    Откройте нужную форму объекта или обработки в редакторе формы.
  3. 3
    В панели элементов добавьте новый элемент, выберите тип «Поле», а вид — «Поле картинки».
  4. 4
    В свойствах элемента укажите «Вид картинки» — «Из общих картинок» (либо задайте свойство «КартинкаЗначения», в зависимости от версии платформы) и выберите добавленную картинку.
  5. 5
    Разместите элемент в нужной группе формы, задайте размер и положение.
  6. 6
    Сохраните конфигурацию, обновите базу (F7) и откройте форму в режиме предприятия для проверки.

Обратите внимание на свойство «Размер картинки» у элемента: значения «АвтоРазмер», «Пропорционально», «Растянуть» определяют, как изображение впишется в отведённую область. Для логотипов обычно удобнее «Пропорционально», чтобы картинка не искажалась.

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

Картинка из библиотеки картинок платформы

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

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

В коде к стандартным картинкам обращаются через объект БиблиотекаКартинок, например: Элементы.КартинкаСтатус.Картинка = БиблиотекаКартинок.Информация;. Это удобно, когда иконка должна меняться в зависимости от состояния данных.

Динамическая картинка: фото, хранящееся в базе

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

Хранение в реквизите объекта

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ДанныеКартинки = Объект.ДанныеКартинки.Получить();

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

АдресКартинки = ПоместитьВоВременноеХранилище(ДанныеКартинки, УникальныйИдентификатор);

КонецЕсли;

КонецПроцедуры

Ключевой момент: вторым параметром в ПоместитьВоВременноеХранилище передаётся УникальныйИдентификатор формы — тогда хранилище живёт, пока открыта форма, и картинка не пропадёт при серверных вызовах.

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

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

&НаКлиенте

Процедура ЗагрузитьКартинку(Команда)

НачатьПомещениеФайла(

Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект),

, , Истина, УникальныйИдентификатор);

КонецПроцедуры

Программное добавление картинки на форму

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

Элементы.ДекорацияКартинка.Картинка = БиблиотекаКартинок.Предупреждение;

Создать элемент программно можно через Элементы.Добавить() с типом Тип("ПолеФормы") и установкой вида ВидПоляФормы.ПолеКартинки, предварительно добавив реквизит формы через ИзменитьРеквизиты(). Это оправдано, когда состав элементов зависит от настроек или прав пользователя, но для большинства задач достаточно заранее созданного элемента с управляемой видимостью.

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

Картинка в команде и на кнопке

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

Для кнопки дополнительно настраивается свойство «Отображение»: «Картинка», «Надпись», «Надпись картинка» или «Авто». Если картинка не видна, чаще всего причина именно в значении «Надпись» у этого свойства.

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

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

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

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

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

Изображение видно сразу, в нужном месте и пропорциях

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

Пустая область или рамка без изображения

Поведение после серверных вызовов
Норма

Картинка остаётся после нажатия кнопок и перезаписи

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

Картинка пропадает после любого обращения к серверу

Работа под обычным пользователем
Норма

Форма открывается без ошибок прав

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

Ошибка доступа или пустая форма

Размер и пропорции
Норма

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

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

Искажённые пропорции, обрезанные края

Типичные ошибки
01
Помещение картинки во временное хранилище без УникальныйИдентификатор формы — изображение пропадает после первого серверного вызова.
02
Привязка поля картинки к реквизиту типа «ХранилищеЗначения» напрямую — управляемая форма не умеет выводить хранилище значений, нужен строковый реквизит с адресом временного хранилища.
03
У кнопки свойство «Отображение» стоит «Надпись» — картинка команды не видна.
04
Добавление картинки в конфигурацию без обновления базы (F7) — в режиме предприятия изменений нет.
05
Слишком большой файл изображения в общих картинках — растёт размер конфигурации и время обновления.
Итог

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

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

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

Можно ли добавить картинку на форму без изменения конфигурации?

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

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

Платформа работает с распространёнными растровыми форматами: PNG, JPEG, GIF, BMP, а также с иконками ICO. Для интерфейсных картинок удобнее PNG из-за поддержки прозрачности.

Почему картинка отображается в конфигураторе, но пустая в режиме предприятия?

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

Как вывести картинку из присоединенных файлов типовой конфигурации?

В конфигурациях с Библиотекой стандартных подсистем используйте функции работы с присоединенными файлами: получите двоичные данные файла через механизмы подсистемы (например, РаботаСФайлами), поместите их во временное хранилище с идентификатором формы и присвойте адрес реквизиту, к которому привязано поле картинки.

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

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

Влияет ли размер картинки на производительность?

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