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

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

Элементы формы в 1С: для чего предназначены и как с ними работать

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

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

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

Работа с элементами ведётся в конфигураторе на закладке «Форма» объекта, а программно — через коллекцию Элементы модуля формы. Ниже разберём назначение основных типов элементов, способы их настройки и типичные ошибки, которые приводят к неработающим или неудобным формам.

Как устроена форма и из чего состоит дерево элементов

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

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

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

Поля ввода: для отображения и редактирования данных

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

Ключевые свойства поля: ПутьКДанным (к какому реквизиту привязано), Заголовок (подпись рядом с полем), Доступность и ТолькоПросмотр (можно ли редактировать), КнопкаВыпадающегоСписка, БыстрыйВыбор для ссылочных полей. Через свойство СвязиПараметровВыбора настраивают зависимые списки — например, отбор характеристик по выбранной номенклатуре.

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

Когда поле лучше заменить надписью

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

Кнопки и команды: для действий пользователя

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

Для пользовательской команды создаётся обработчик в модуле формы с директивой &НаКлиенте или &НаСервере. Если действие требует обращения к данным базы (запрос, изменение объекта), обработчик должен быть серверным или вызывать серверную процедуру — клиентский код не имеет прямого доступа к базе.

Кнопки размещают либо в командной панели формы, либо непосредственно в группах рядом с данными. Частые действия («Заполнить», «Подобрать») разумно выносить в командную панель табличной части, к которой они относятся, — так пользователю понятен контекст действия.

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

Таблицы и табличные части: для списков данных

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

Для таблиц на базе динамического списка доступны настройки отбора, сортировки, группировки и условного оформления прямо в конфигураторе без кода. Это основной инструмент построения форм списков. Свойство ОсновнаяТаблица динамического списка определяет, данные какого объекта показываются.

У таблицы есть события, критичные для табличных частей документов: ПриНачалеРедактирования, ПриОкончанииРедактирования, ПередУдалением, ПослеУдаления. Типовой сценарий — пересчёт итоговой суммы документа при изменении строки. Такие пересчёты корректно размещать в обработчиках окончания редактирования, а не на каждое изменение поля, чтобы не дергать сервер лишний раз.

Группы и страницы: для структуры интерфейса

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

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

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

Декорации и вспомогательные элементы

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

Особый вид декорации — «Форматированная надпись»: поддерживает жирный шрифт, цвет и встроенные гиперссылки внутри одного текста. Её удобно использовать для подсказок и предупреждений прямо на форме, например о незаполненных обязательных данных.

Ещё один вспомогательный элемент — «Растяжитель» (в палитре это поле вида «поле надписи» или декорация со свойством растягивания): он занимает свободное место и прижимает соседние элементы к краю. С его помощью выравнивают кнопки по правому краю командной панели.

Чем вывести текст на форму

Декорация-надпись

Статичный текст, подсказки, гиперссылки. Не привязана к данным, не участвует в обходе

Поле надписи

Отображает значение реквизита без возможности редактирования — для вычисляемых итогов и статусов

Форматированная надпись

Текст с форматированием и несколькими ссылками — для развёрнутых подсказок и предупреждений

Настройка свойств, видимости и условного оформления

Большинство поведенческих задач решается через свойства без программирования. Видимость скрывает элемент, Доступность блокирует редактирование, АвтоотметкаНезаполненного подчёркивает обязательные поля красным. Для обязательности заполнения лучше использовать свойство реквизита объекта «Проверка заполнения» — тогда платформа сама выдаст сообщение при записи.

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

Программное управление элементами нужно, когда логика сложнее декларативных возможностей: например, набор видимых полей зависит от вида документа. Такой код размещают в обработчике ПриОткрытии или в общей процедуре УстановитьВидимостьДоступность(), которую вызывают при изменении определяющих реквизитов.

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

Как проверить результат и где границы самостоятельной работы

После доработки формы проверьте её в режиме предприятия под учётной записью с реальными правами, а не только под полными. Элементы, видимые администратору, могут быть недоступны рядовому пользователю из-за прав на данные — и наоборот, поле может открывать доступ к тому, что должно быть скрыто.

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

Безопасная граница самостоятельной доработки — добавление элементов на форму расширением конфигурации или в копии типовой формы. Прямое изменение типовых форм затрудняет обновление: при обновлении конфигурации доработки могут быть потеряны или вызвать конфликты. Перед любыми изменениями в рабочей базе сделайте резервную копию.

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

Как проверить доработанную форму

Открытие формы
Норма

Форма открывается без ошибок, все элементы на месте

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

Ошибка «Поле не найдено» или пустые области вместо элементов

Запись объекта
Норма

Объект записывается, контроль заполнения срабатывает корректно

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

Запись блокируется без причины или обязательные поля не проверяются

Работа под ограниченными правами
Норма

Пользователь видит только положенные элементы

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

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

Изменение размера окна
Норма

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

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

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

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

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

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

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

В модуле формы выполните Элементы.ИмяЭлемента.Видимость = Ложь;. Для зависимости от данных лучше использовать условное оформление формы или единую процедуру установки видимости, вызываемую при открытии и при изменении определяющих реквизитов.

Почему кнопка на форме не выполняет действие?

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

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

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

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

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

Почему форма медленно открывается после добавления таблицы?

Частая причина — динамический список с произвольным запросом, соединениями или вычисляемыми полями. Проверьте запрос на реальных объёмах данных, уберите лишние соединения и убедитесь, что по полям отбора есть индексы.

Итог

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

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