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

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

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

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

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

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

Материал ориентирован на управляемые формы, поскольку именно они используются в современных конфигурациях (УТ, ERP, БП, ЗУП). Для обычных форм подход похож, но свойства элементов настраиваются в другом диалоге.

Какие источники картинок поддерживает 1С

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

Платформа умеет показывать картинки из четырёх основных источников:

  • Библиотека картинок конфигурации — изображения, встроенные в конфигурацию (ветка «Общие» → «Общие картинки» в дереве конфигуратора). Подходит для логотипов, иконок, декоративных элементов.
  • Стандартная библиотека картинок платформы — встроенные пиктограммы (дискета, лупа, стрелки и т.д.), доступные через БиблиотекаКартинок.
  • Файл на диске или двоичные данные — картинка загружается во временное хранилище, а на форме выводится по адресу хранилища.
  • Присоединенные файлы объекта — стандартный механизм БСП (Библиотеки стандартных подсистем), когда фото хранится как файл, привязанный к элементу справочника.

Сравнение источников картинок

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

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

Файл на диске

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

Двоичные данные в реквизите

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

Присоединенные файлы (БСП)

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

Добавление статичной картинки через конфигуратор

Самый простой сценарий — разместить на форме логотип или декоративное изображение, которое не меняется. Для этого сначала добавьте картинку в конфигурацию: в дереве конфигуратора откройте ветку «Общие» → «Общие картинки», создайте новый элемент, задайте имя (например, ЛоготипКомпании) и загрузите файл изображения через кнопку выбора. Поддерживаются распространённые форматы: PNG, JPEG, GIF, BMP.

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

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

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

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

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

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

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

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

Вывод фото из присоединенных файлов (типовой механизм)

В конфигурациях на базе БСП (УТ 11, ERP, БП 3.0, ЗУП 3.1) фото товаров и сотрудников хранятся как присоединенные файлы. Для вывода такого изображения на форму не нужно изобретать хранение — достаточно получить навигационную ссылку на файл и передать её в поле картинки.

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

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

Преимущество навигационной ссылки перед временным хранилищем — стабильность: картинка доступна, пока существует файл, и не пропадает при простое формы. Именно поэтому в долгоживущих формах (карточки товаров, сотрудников) предпочтителен именно этот способ.

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

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

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

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

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

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

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

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

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

Картинка видна сразу, без пустой рамки

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

Пустая область или значок «картинка не найдена» — неверный источник или адрес хранилища

Масштабирование окна
Норма

Картинка сохраняет пропорции, соседние элементы не сдвигаются

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

Изображение искажается или перекрывает другие поля — проверьте «РазмерКартинки» и растяжение

Работа в клиент-серверном режиме
Норма

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

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

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

Форма без картинки у объекта
Норма

Поле пустое или показывает заглушку, ошибок нет

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

Ошибка обращения к данным — нет проверки на Неопределено

Типичные ошибки
01
Указание локального пути к файлу (C:\Images\logo.png) — в клиент-серверном режиме сервер не видит диск клиента, картинка пропадает
02
Отсутствие проверки на Неопределено при извлечении из хранилища значений — форма падает с ошибкой у объектов без фото
03
Хранение больших фото в исходном разрешении — база раздувается, формы открываются медленно; сжимайте изображения перед сохранением
04
Использование временного хранилища без привязки к УникальныйИдентификатор формы — данные удаляются раньше времени
05
Добавление картинки в форму без обновления конфигурации БД — изменения не видны пользователям

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

Производительность и ограничения

Каждая картинка, выводимая на форму, передаётся между сервером и клиентом. На формах списков с десятками строк вывод изображений в таблице может ощутимо замедлить прокрутку. Если нужны миниатюры в списке, храните отдельно уменьшенную версию изображения, а не пересылайте полноразмерный файл.

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

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

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

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

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

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

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

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

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

Почему картинка видна у разработчика, но не у пользователей?

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

Как вывести картинку в табличной части или списке?

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

Можно ли сделать картинку кликабельной?

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

Как изменить картинку программно по условию?

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