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

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

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

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

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

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

Понимание состава элементов формы нужно не только разработчику. Администратору это помогает объяснить пользователю, где искать нужное поле; внедренцу — оценить трудоёмкость доработки интерфейса; аналитику — корректно описать требования к экранной форме. Ниже разобраны виды элементов, их свойства, правила группировки и типичные ошибки при настройке.

Что такое элементы формы и где они находятся в конфигураторе

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

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

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

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

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

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

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

Отдельно стоит упомянуть декорацию (картинка или надпись для оформления), страницы и страницу (вкладки формы), а также поле HTML-документа и поле календаря для специальных сценариев. Командная панель — тоже элемент: в неё помещаются кнопки, и у таблицы обычно есть своя встроенная командная панель.

ЭлементНазначениеТипичная привязка к данным
Поле вводаРедактирование строк, чисел, дат, ссылокРеквизит объекта или формы
ФлажокВключение/выключение признакаРеквизит типа Булево
ТаблицаОтображение списка строкТабличная часть, динамический список
КнопкаЗапуск командыКоманда формы (не реквизит)
НадписьВывод текста без редактированияРеквизит или фиксированный заголовок
ГруппаОбъединение элементов, управление расположениемНе привязывается

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

У каждого элемента есть палитра свойств, открываемая по правой кнопке мыши или по Alt+Enter. На практике чаще всего используются несколько ключевых свойств.

ПутьКДанным — главное свойство поля: оно указывает, какой реквизит формы элемент отображает. Если свойство пустое, поле не связано с данными и не будет работать как ожидается. Заголовок — текст, который видит пользователь рядом с полем; если заголовок не задан, платформа берёт синоним реквизита. Видимость и Доступность управляют, показывается ли элемент и можно ли его редактировать. ТолькоПросмотр оставляет элемент видимым, но запрещает изменение значения.

Для повышения удобства полезны свойства Подсказка и ОтображениеПодсказки — они заменяют длинные пояснения в инструкциях. Свойство АвтоотметкаНезаполненного подсвечивает обязательные поля, а КнопкаОчистки, КнопкаВыбора и КнопкаВыпадающегоСписка управляют кнопками внутри поля ввода.

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

В управляемой форме нельзя поставить элемент «в координату X, Y» — расположением управляют группы. Это основа адаптивности: форма корректно выглядит и на широком мониторе, и на узком окне.

Группа вида Обычная группа имеет свойство «Группировка»: горизонтальная раскладывает вложенные элементы в ряд, вертикальная — в столбец. Группа вида Страницы создаёт вкладки, а вложенные в неё группы вида Страница — отдельные вкладки. Командная панель группирует кнопки в панель инструментов.

Практическое правило: сначала спроектируйте структуру групп, затем добавляйте поля. Типовой каркас формы документа выглядит так: верхняя горизонтальная группа с полями шапки (номер, дата, организация), затем страницы с табличными частями, внизу — группа итоговых полей. Если поле «уехало» не туда, почти всегда причина в том, что оно попало не в ту группу или у группы неверный тип группировки.

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

События элементов и программное обращение

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

Из кода модуля формы к элементам обращаются через коллекцию Элементы (или ЭтаФорма.Элементы):

&НаКлиенте

Процедура КонтрагентПриИзменении(Элемент)

Если ЗначениеЗаполнено(Объект.Контрагент) Тогда

Элементы.Договор.Доступность = Истина;

Иначе

Элементы.Договор.Доступность = Ложь;

КонецЕсли;

КонецПроцедуры

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

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

Динамические списки и особые элементы

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

Условное оформление формы — отдельный механизм, который часто недооценивают. Оно позволяет менять цвет, шрифт и видимость элементов в зависимости от значений данных без единой строки кода. Настраивается в редакторе формы через «Условное оформление» и работает как для колонок таблиц, так и для обычных полей.

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

Прежде чем программировать подсветку строк таблицы в коде, проверьте условное оформление формы: в 8 из 10 случаев задачи «покрасить строку по условию» оно решает быстрее, надёжнее и без нагрузки на сервер.
ПЗ
Практическое замечание

Как проверить, что форма настроена правильно

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

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

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

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

Привязка поля к данным
Норма

Поле отображает значение из базы и сохраняет введённое

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

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

Расположение элементов
Норма

При изменении ширины окна поля перестраиваются и остаются доступными

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

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

Работа кнопок
Норма

Нажатие выполняет команду, результат виден пользователю

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

Кнопка не реагирует — команда не привязана или обработчик не создан

Часто задаваемые вопросы

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

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

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

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

Почему поле есть в дереве элементов, но не видно на форме?

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

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

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

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

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

Что делать, если форма с большим числом элементов открывается медленно?

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

Итог

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

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