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