Как правильно вписать картинку в поле на форме 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

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

  1. Растянуть (Stretch): Этот режим принудительно масштабирует изображение по ширине и высоте до границ поля. Важно помнить, что при использовании данного режима пропорции исходного изображения будут нарушены, если соотношение сторон файла не совпадает с соотношением сторон поля. Картинка может выглядеть «сплюснутой» или «вытянутой».
  2. Пропорционально (Proportional): Это наиболее часто используемый вариант, если важно сохранить исходное соотношение сторон. В этом случае картинка масштабируется таким образом, чтобы она полностью поместилась в поле, не выходя за его границы. Минусом здесь может быть появление фоновых областей (пустых полос) по бокам или сверху/снизу.
  3. Авто (AutoSize): В этом режиме само поле картинки будет изменять свои размеры, чтобы подстроиться под габариты изображения. Этот вариант редко подходит для жестко заданных интерфейсов, так как может привести к «разъезжанию» элементов формы.
  4. Реальный размер (RealSize): Изображение отображается в своем исходном разрешении. Если файл больше размера поля, будут видны только его фрагменты.

Таким образом, для задачи «вписать» картинку в поле наиболее подходящим является вариант Пропорционально. Он гарантирует, что объект будет виден целиком, хотя и не заполнит все пространство при несовпадении пропорций.

Реализация аналога CSS-свойства cover через HTML-поле

Иногда перед разработчиком ставится задача, которую встроенные средства 1С выполнить не могут. Например, нужно, чтобы картинка полностью заполняла область без искажений и без пустых полос (эффект «обрезки» лишних частей), что в веб-разработке называется background-size: cover.

Поскольку встроенное свойство РазмерКартинки в 1С не поддерживает такой режим, мы можем воспользоваться альтернативным подходом — применением Поля HTML-документа. Этот метод позволяет нам использовать мощь современных веб-технологий непосредственно внутри формы 1С.

Рассмотрим, как это выглядит на практике:

Мы создаем на форме элемент Поле HTML-документа и формируем для него код, который подтягивает изображение и применяет к нему CSS-стили. Посмотрим на пример формирования такого содержимого:


// Пример формирования HTML-кода для отображения картинки
ТекстHTML = "
|<html>
|<head>
|<style>
|    .container {
|        width: 100%;
|        height: 100%;
|        background-image: url('АдресВашейКартинки');
|        background-size: cover;
|        background-position: center;
|    }
|</style>
|</head>
|<body>
|    <div class='container'></div>
|</body>
|</html>";
Элементы.ПолеHTML.УстановитьТекст(ТекстHTML);

Разберем, что происходит в этом коде:

Когда и какой метод выбрать?

Подведем итоги нашего анализа. Выбор метода зависит от ваших конкретных бизнес-задач:

  1. Если допустимо появление пустых полей по краям при несовпадении пропорций — используйте стандартный элемент Поле картинки со свойством РазмерКартинки.Пропорционально. Это самое простое и надежное решение, не требующее написания кода.
  2. Если для дизайна интерфейса критично полное заполнение области без «пустот» — используйте Поле HTML-документа. Этот способ потребует от вас базовых знаний CSS, но обеспечит именно тот эффект, который вы видите на современных сайтах.

Помните, что использование Поле HTML-документа увеличивает нагрузку на клиентскую часть, так как требуется рендеринг веб-контента, поэтому применять его стоит только в том случае, если эстетическая составляющая интерфейса является приоритетной.

Надеемся, что данное руководство поможет вам уверенно работать с графическими элементами в формах 1С и выбирать наиболее подходящий способ решения задачи масштабирования!

← На главную