Разработка и Конфигурация · 11 мин
Декорация формы в 1С: что это и как с ней работать
Декорация формы в 1С — элемент оформления интерфейса: надписи, картинки, рамки. Разбираем виды, свойства, программное управление и типичные ошибки разработчиков.
Декорация формы в 1С — это элемент управляемой формы, который не связан с данными объекта и служит для визуального оформления интерфейса: вывода поясняющих надписей, картинок, разделительных линий и индикаторов состояния. В отличие от полей ввода, декорация ничего не сохраняет в базу данных — её задача сделать форму понятнее и удобнее для пользователя.
В конфигураторе декорации добавляются через командную панель формы (кнопка «Добавить» в дереве элементов) и представлены тремя видами: надпись, картинка и форматированная строка. Несмотря на кажущуюся простоту, декорации активно используются в типовых конфигурациях: подсказки на формах документов, индикаторы состояния обмена, гиперссылки навигации, цветовые маркеры — всё это декорации.
Разработчику важно понимать не только как добавить декорацию в конфигураторе, но и как управлять ею программно: менять видимость, заголовок, цвет, обрабатывать нажатие. Именно программное управление превращает статичный элемент оформления в интерактивный инструмент интерфейса.
Виды декораций и их назначение
В управляемой форме доступны три вида декорации. Надпись — самый распространённый вид: выводит текстовую информацию, может работать как гиперссылка. Картинка — отображает изображение из библиотеки картинок конфигурации, общей библиотеки платформы или файла. Форматированная строка — надпись с возможностью смешанного форматирования: разные шрифты, цвета, встроенные картинки и ссылки внутри одного текста.
Выбор вида зависит от задачи. Для короткой подсказки достаточно обычной надписи. Если нужно выделить часть текста цветом или встроить ссылку в середину предложения — используйте форматированную строку. Для индикаторов состояния (например, зелёный флажок «проведён» или красный значок ошибки) подходит картинка.
Как добавить декорацию в конфигураторе
Откройте форму объекта в конфигураторе, перейдите на вкладку «Форма» и в дереве элементов нажмите «Добавить». В списке типов выберите «Декорация», затем в свойстве «Вид» укажите нужный вариант: надпись, картинка или форматированная строка. После этого задайте имя элемента — оно понадобится для программного обращения через Элементы.ИмяЭлемента.
Размещение декорации в структуре формы определяет её положение. Чтобы надпись появилась над конкретным полем, перетащите её в нужную группу и установите порядок относительно соседних элементов. Для вертикального выравнивания используйте группы с видом «Обычная группа» и соответствующей группировкой.
- 1Откройте форму в конфигураторе и перейдите в дерево элементов
- 2Нажмите «Добавить» и выберите тип «Декорация»
- 3Установите вид: надпись, картинка или форматированная строка
- 4Задайте имя, заголовок и свойства оформления
- 5Разместите элемент в нужной группе формы
- 6Сохраните и проверьте отображение в режиме предприятия
Ключевые свойства декорации
У декорации-надписи основные свойства — «Заголовок» (отображаемый текст), «Гиперссылка» (признак интерактивности), «ЦветТекста», «Шрифт», «Видимость» и «Доступность». Свойство «РастягиватьПоГоризонтали» управляет поведением при изменении ширины формы, а «АвтоМаксимальнаяШирина» и «МаксимальнаяШирина» ограничивают размер элемента.
Для декорации-картинки ключевые свойства — «Картинка» (источник изображения), «РазмерКартинки» (режим масштабирования: реальный размер, пропорционально, растянуть) и «Гиперссылка». Для форматированной строки текст задаётся не простым заголовком, а через свойство «Заголовок» с использованием объекта ФорматированнаяСтрока, который формируется программно.
| Свойство | Назначение | Особенности |
|---|---|---|
| Заголовок | Текст надписи | Для форматированной строки — объект ФорматированнаяСтрока |
| Гиперссылка | Интерактивность | Требует обработчика «Нажатие» или «ОбработкаНавигационнойСсылки» |
| ЦветТекста | Оформление | Можно задать из стиля или абсолютным значением |
| РазмерКартинки | Масштабирование | Только у декорации-картинки |
| Видимость | Показ элемента | Часто управляется программно по условиям |
Программное управление декорацией
Обращение к декорации из кода модуля формы выполняется через коллекцию Элементы. Типовой сценарий — изменение видимости и текста подсказки в зависимости от состояния объекта. Например, показать предупреждение, если документ не проведён:
&НаКлиенте
Процедура ОбновитьИндикаторСостояния()
Если Объект.Проведен Тогда
Элементы.ДекорацияСостояние.Заголовок = "Документ проведён";
Элементы.ДекорацияСостояние.ЦветТекста = Новый Цвет(0, 128, 0);
Иначе
Элементы.ДекорацияСостояние.Заголовок = "Документ не проведён";
Элементы.ДекорацияСостояние.ЦветТекста = Новый Цвет(200, 0, 0);
КонецЕсли;
КонецПроцедуры
Для формирования форматированной строки используется конструктор Новый ФорматированнаяСтрока, где части текста комбинируются с разным оформлением и ссылками:
Части = Новый Массив;
Части.Добавить("Заполните ");
Части.Добавить(Новый ФорматированнаяСтрока("профиль", , , , "Профиль"));
Части.Добавить(" перед продолжением.");
Элементы.ДекорацияПодсказка.Заголовок = Новый ФорматированнаяСтрока(Части);
Элементы.ДекорацияПодсказка.Видимость = Не ЗначениеЗаполнено(Объект.Комментарий);Обработка нажатий и навигационных ссылок
Если у декорации включено свойство «Гиперссылка», для неё становится доступно событие «Нажатие». В обработчике можно открыть другую форму, выполнить команду или перейти по внешней ссылке. Это стандартный способ сделать на форме кликабельную подсказку вида «Подробнее о заполнении…».
Для форматированной строки со встроенными ссылками используется событие «ОбработкаНавигационнойСсылки». В параметрах события передаётся идентификатор ссылки, заданный при формировании строки, и по нему код определяет, какое действие выполнить. Не забудьте установить СтандартнаяОбработка = Ложь, иначе платформа попытается обработать ссылку самостоятельно.
Пример обработчика нажатия
&НаКлиенте
Процедура ДекорацияПомощьНажатие(Элемент)
ОткрытьФорму("ОбщаяФорма.СправкаПоДокументу");
КонецПроцедуры
Декорация или поле надписи: что выбрать
Частая дилемма — использовать декорацию-надпись или поле с видом «Поле надписи», привязанное к реквизиту формы. Разница принципиальна: поле надписи отображает значение реквизита данных формы, а декорация — статичный заголовок, который меняется только программно.
Сравнение вариантов
Подходит для статичных подсказок, гиперссылок и индикаторов. Не требует реквизита формы, но текст меняется только кодом.
Привязано к реквизиту формы, текст обновляется автоматически при изменении данных. Удобно для вывода вычисляемых значений.
Единственный вариант, когда нужно смешанное оформление: цветные фрагменты, ссылки и картинки внутри одного текста.
Практическое правило: если текст зависит от данных и должен обновляться автоматически — создавайте строковый реквизит формы и поле надписи. Если текст фиксированный или меняется по событиям логики формы — достаточно декорации. Лишние реквизиты формы усложняют её структуру и замедляют передачу данных между клиентом и сервером.
Типичные ошибки при работе с декорациями
Самая частая ошибка — обращение к элементу по имени, которое не совпадает с фактическим именем в дереве элементов. Платформа в этом случае выдаёт ошибку «Поле объекта не обнаружено». Всегда проверяйте имя в конфигураторе, а не по заголовку элемента.
Вторая группа ошибок связана с контекстом выполнения. Обращение к Элементы возможно только в модуле формы; из общего модуля или модуля объекта элементы формы недоступны. Также помните, что при программном добавлении декорации в ПриСозданииНаСервере элемент нужно сначала создать через Элементы.Добавить(), указав тип Тип("ДекорацияФормы").
Проверка результата и отладка
После настройки декорации проверьте форму в режиме предприятия при разных сценариях: создание нового объекта, открытие существующего, изменение данных, от которых зависит видимость элемента. Убедитесь, что надпись не обрезается при уменьшении окна и не «уезжает» при изменении размеров формы.
Как проверить результат
Надпись полностью видна, не обрезана при сжатии окна
Текст скрыт или заменён многоточием без необходимости
Клик вызывает обработчик и выполняет нужное действие
Клик игнорируется или возникает ошибка платформы
Элемент появляется и скрывается строго по условиям логики
Видимость не меняется или сбрасывается при обновлении формы
Для отладки программного управления декорацией используйте точки останова в обработчиках формы и проверяйте свойства элемента через табло. Если декорация создана программно, убедитесь, что код добавления выполняется до обращения к элементу — иначе получите ошибку обращения к несуществующему объекту.
Что важно запомнить
Декорация — элемент оформления формы без привязки к данным: надпись, картинка или форматированная строка. Управляется через свойства и код модуля формы, для интерактивности используются события Нажатие и ОбработкаНавигационнойСсылки. Типовые формы на поддержке изменяйте через расширения.
Частые вопросы
Чем декорация отличается от обычного поля формы?
Поле формы привязано к реквизиту данных и отображает его значение, а декорация не связана с данными и показывает фиксированный заголовок или картинку. Декорация не участвует в сохранении данных объекта и служит только для оформления и навигации.
Можно ли добавить декорацию программно, без конфигуратора?
Да. В обработчике ПриСозданииНаСервере вызовите Элементы.Добавить с типом ДекорацияФормы, укажите родителя, задайте вид и свойства. Этот способ безопасен для типовых конфигураций, так как не меняет форму на поддержке.
Как сделать часть текста надписи цветной или жирной?
Используйте декорацию вида «Форматированная строка». Заголовок формируется программно через объект ФорматированнаяСтрока, где каждому фрагменту можно задать шрифт, цвет и ссылку. Обычная надпись смешанное форматирование не поддерживает.
Почему гиперссылка на декорации не реагирует на нажатие?
Проверьте два условия: свойство «Гиперссылка» должно быть включено, и у элемента должен быть назначен обработчик события «Нажатие» (или «ОбработкаНавигационнойСсылки» для форматированной строки). Без обработчика клик визуально возможен, но никакого действия не вызывает.
Можно ли вывести в декорации-картинке изображение из базы данных?
Да, если программно присвоить свойству «Картинка» значение, полученное из хранилища значения или двоичных данных, например через ПоместитьВоВременноеХранилище и адрес картинки. Для статичных изображений проще использовать библиотеку картинок конфигурации.
Влияет ли большое количество декораций на производительность формы?
Умеренное количество декораций практически не влияет на скорость работы. Замедление возникает при избыточном числе элементов формы в целом и при частом серверном обновлении их свойств. Группируйте связанные элементы и меняйте свойства только при реальном изменении состояния.