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

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

Элементы формы в 1С: что это и как с ними работать

Что такое элементы формы в 1С: виды управляемых форм, программное обращение к элементам, типичные ошибки и практические приёмы разработчика.

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

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

Что такое форма и из чего она состоит

Форма в 1С — это описание экрана, который видит пользователь при работе с объектом: документом, элементом справочника, отчётом или обработкой. Каждая форма состоит из трёх взаимосвязанных частей: реквизитов (данных формы), элементов (визуального представления) и команд (действий пользователя). Элемент формы без привязки к данным — это либо оформление, либо управляющий компонент вроде кнопки.

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

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

Основные виды элементов формы

Платформа 1С предоставляет фиксированный набор видов элементов. Выбор вида определяет, как элемент выглядит и какие свойства ему доступны. Ниже — основные категории, которые встречаются в каждой типовой форме.

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

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

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

ПолеПривязано к реквизиту формы

В свойстве ПутьКДанным указано имя реквизита

ГруппаСодержит вложенные элементы

В дереве элементов имеет дочерние узлы

КнопкаВыполняет действие

Заполнено свойство ИмяКоманды

ДекорацияНе привязана к данным

Свойство ПутьКДанным пустое, задан Заголовок или Картинка

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

Откройте форму объекта в конфигураторе (например, форму документа) и перейдите на закладку «Форма». Новый элемент добавляется через контекстное меню дерева элементов: «Добавить» → нужный вид элемента. После добавления элемент появится в дереве, и его свойства откроются в палитре свойств.

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

Порядок добавления поля ввода
  1. 1
    Откройте форму в конфигураторе и перейдите на закладку «Форма»
  2. 2
    Добавьте реквизит формы нужного типа на закладке «Реквизиты»
  3. 3
    Перетащите реквизит из панели реквизитов в дерево элементов — платформа сама создаст поле подходящего вида
  4. 4
    Настройте заголовок, подсказку и группировку в палитре свойств
  5. 5
    Запустите отладку (F5) и проверьте отображение элемента в пользовательском режиме

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

Программная работа с элементами формы

В модуле формы все элементы доступны через коллекцию Элементы. Обращение идёт по имени элемента: Элементы.Комментарий.Видимость = Ложь;. Чаще всего программно меняют свойства Видимость, Доступность, ТолькоПросмотр, Заголовок, ЦветТекста и ОтметкаНезаполненного.

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

bsl
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	Элементы.Договор.Видимость = ЗначениеЗаполнено(Объект.Контрагент);
КонецПроцедуры

Элементы можно создавать и удалять программно через методы Элементы.Добавить() и Элементы.Удалить(), но только в обработчике ПриСозданииНаСервере и только на сервере. Это применяется в универсальных обработках, где состав полей заранее неизвестен. Для типовых форм документов такой подход обычно избыточен.

Свойства элементов: что настраивать в первую очередь

Из десятков свойств элемента в повседневной работе реально используются около десятка. Видимость и Доступность управляют тем, видит ли пользователь элемент и может ли с ним работать. Разница принципиальна: недоступный элемент виден, но заблокирован (серый), невидимый — полностью скрыт.

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

Для групп критичны свойства Группировка (горизонтальная/вертикальная), Отображение (рамка, отступ) и Поведение (сворачиваемая, всплывающая). Неправильная группировка — причина большинства проблем с «разъезжающейся» формой при изменении размера окна.

Типичные ошибки при работе с элементами формы

Начинающие разработчики часто путают реквизит и элемент: пытаются прочитать значение через Элементы.Поле.Значение вместо обращения к реквизиту формы или объекту. Элемент отвечает только за отображение; данные хранятся в реквизитах и объекте формы.

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

Типичные ошибки
01
Обращение к Элементы в модуле объекта вместо модуля формы — коллекция элементов существует только в форме
02
Изменение видимости только в ПриОткрытии — после записи или изменения данных состояние сбрасывается, логику нужно вызывать повторно
03
Попытка создать элемент методом Элементы.Добавить на клиенте — добавление элементов возможно только на сервере
04
Игнорирование группировки — элементы наезжают друг на друга при сужении окна
05
Дублирование имени элемента и реквизита с разным смыслом — затрудняет чтение кода и отладку

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

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

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

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

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

Отображение нового поля
Норма

Поле видно, заголовок читается, значение сохраняется при записи

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

Поле отсутствует на форме или данные не сохраняются — проверьте ПутьКДанным

Динамическая видимость
Норма

Элемент появляется и скрывается при изменении управляющего поля

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

Состояние сбрасывается после записи — логика не вызывается повторно

Поведение при сужении окна
Норма

Элементы переносятся и сжимаются без наложения

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

Поля наезжают друг на друга — пересмотрите группировку

Давайте элементам осмысленные имена сразу при создании: «ГруппаОсновныеРеквизиты» читается лучше, чем «Группа1». Через полгода сопровождения формы с десятками элементов понятные имена экономят заметное время при поиске нужного свойства в коде.
ПЗ
Практическое замечание

Частые вопросы об элементах формы в 1С

Чем элемент формы отличается от реквизита формы?

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

Как скрыть элемент формы программно?

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

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

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

Почему свойство элемента недоступно на сервере?

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

Как сделать поле обязательным для заполнения?

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

Что делать, если элементы «разъезжаются» при изменении размера окна?

Проверьте группировку: элементы, которые должны стоять в одну строку, поместите в группу с горизонтальной группировкой. Настройте свойства растягивания (РастягиватьПоГоризонтали) и ширины у полей. Готовую форму проверяйте при разных размерах окна.

Итог

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

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