Элементы формы 1С — это всё, что пользователь видит на экране: поля ввода, флажки, таблицы, кнопки, группы и надписи. Каждый элемент либо показывает данные (реквизит формы), либо выполняет действие (команду), либо просто оформляет форму. Добавить элемент можно в конфигураторе, перетащив реквизит в дерево элементов, в расширении — без снятия типовой конфигурации с поддержки, или программно — методом Элементы.Добавить в обработчике ПриСозданииНаСервере.
Ниже — из чего состоит управляемая форма, как добавить элемент каждым из трёх способов и на чём чаще всего спотыкаются.
Из чего состоит управляемая форма
В редакторе формы в конфигураторе четыре главных панели:
- Элементы (слева вверху) — дерево того, что видно на экране.
- Реквизиты (справа вверху) — данные формы. Для формы элемента справочника главный реквизит называется
Объект, внутри него — все реквизиты справочника. - Команды — действия, которые можно повесить на кнопки.
- Модуль — код формы.
Важно понимать разницу: реквизит — это данные, элемент — их отображение. Поле Наименование на форме — это элемент, который через свойство ПутьКДанным показывает реквизит Объект.Наименование. Можно удалить элемент, и данные останутся; можно вывести один реквизит в два разных поля.

Какие бывают элементы формы
- Поле формы — показывает реквизит. У поля есть вид: поле ввода, флажок, переключатель, надпись, поле картинки, поле HTML-документа и другие.
- Группа формы — контейнер для других элементов: обычная группа (выстраивает поля по горизонтали или вертикали), страницы и страница (закладки), командная панель, контекстное меню.
- Таблица формы — показывает табличную часть, динамический список или таблицу значений.
- Кнопка формы — запускает команду.
- Декорация — надпись или картинка без связи с данными.
Как добавить элемент в конфигураторе
Разберу на примере формы элемента справочника.
Если формы ещё нет
- В дереве конфигурации раскройте справочник, например «Склады».
- Откройте ветку «Формы» и нажмите «Добавить».
- В конструкторе выберите «Форма элемента справочника» и отметьте «Назначить форму основной».
- Отметьте реквизиты, которые нужны на форме, и нажмите «Готово».
Если форма есть
- Откройте форму двойным щелчком.
- На панели «Реквизиты» раскройте
Объекти найдите нужный реквизит. - Перетащите его мышью в дерево «Элементы» — в нужную группу и на нужное место.
- В свойствах нового элемента проверьте «Вид», «Заголовок» и при необходимости «Видимость».
Кнопка добавляется так же: создайте команду на закладке «Команды», задайте ей обработчик (поле «Действие») и перетащите команду в командную панель формы.
В типовых конфигурациях на поддержке так делать не стоит: изменение формы прямо в конфигурации превращает каждое обновление в ручное объединение. Для них есть расширения.
Как добавить элемент через расширение
- Создайте расширение конфигурации, как описано в статье как создать расширение в 1С.
- В дереве основной конфигурации найдите форму, щёлкните правой кнопкой и выберите «Добавить в расширение».
- Откройте заимствованную форму в расширении. Дальше всё как в обычном редакторе: перетаскивайте реквизиты, добавляйте группы и кнопки.
- Если нужен новый реквизит справочника, сначала заимствуйте сам справочник и добавьте реквизит в расширение.
Элементы, добавленные в расширении, накладываются на типовую форму. После обновления конфигурации они сохраняются, если разработчики не удалили группу, в которую вы их поместили. Установка готового расширения в базу — в статье как установить расширение в 1С.
Как добавить элемент на форму программно
Программное добавление нужно, когда состав формы зависит от условий: разные поля для разных видов номенклатуры, колонки по числу складов и т. п. Его же иногда используют в расширениях, чтобы меньше зависеть от разметки типовой формы.
Поле для существующего реквизита
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Поле = Элементы.Добавить("Комментарий", Тип("ПолеФормы"), Элементы.ГруппаОсновное);
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "Объект.Комментарий";
КонецПроцедурыТретий параметр — родитель: группа, в которую попадёт поле. ГруппаОсновное здесь для примера — настоящее имя группы посмотрите в дереве элементов своей формы. Если родителя не указать, поле окажется в конце формы. Чтобы поставить поле в конкретное место, используйте Элементы.Вставить: он принимает ещё и элемент, перед которым нужно вставить новый.
Новый реквизит формы и поле для него
Если реквизита нет, сначала создаём его, потом поле:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТипСтрока = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100));
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Подсказка", ТипСтрока, , "Подсказка"));
ИзменитьРеквизиты(НовыеРеквизиты);
Поле = Элементы.Добавить("Подсказка", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеНадписи;
Поле.ПутьКДанным = "Подсказка";
ЭтотОбъект.Подсказка = "Заполните код поставщика перед записью";
КонецПроцедурыИзменитьРеквизиты — дорогой метод: он перестраивает форму. Вызывайте его один раз с массивом всех новых реквизитов, а не в цикле по одному.
Кнопка и команда
Команда = Команды.Добавить("ПроверитьКод");
Команда.Действие = "ПроверитьКод";
Команда.Заголовок = "Проверить код";
Кнопка = Элементы.Добавить("КнопкаПроверитьКод", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель);
Кнопка.ИмяКоманды = "ПроверитьКод";В модуле формы должна быть клиентская процедура ПроверитьКод(Команда) — её имя указано в Действие.
В расширении
В расширении тот же код пишут в обработчике, который выполняется после типового:
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// добавление элементов
КонецПроцедурыИмена своих элементов и реквизитов лучше начинать с префикса расширения, например Расш_, — так они не столкнутся с типовыми после обновления.
Как программно скрыть или изменить элемент
Добавлять элементы приходится реже, чем управлять уже существующими. Основные свойства, которые меняют из кода:
Видимость— показывать элемент или нет;Доступность— можно ли с ним взаимодействовать (недоступное поле выглядит серым);ТолькоПросмотр— значение видно, но изменить нельзя;Заголовок— подпись поля или кнопки;АвтоОтметкаНезаполненного— красное подчёркивание пустого поля.
&НаСервере
Процедура УправлениеЭлементами()
ЭтоУслуга = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга);
Элементы.ЕдиницаИзмерения.Видимость = Не ЭтоУслуга;
Элементы.Артикул.АвтоОтметкаНезаполненного = Не ЭтоУслуга;
КонецПроцедурыИмена реквизитов и перечислений здесь условные — в каждой конфигурации свои. Такую процедуру вызывают из ПриСозданииНаСервере и из обработчика ПриИзменении того поля, от которого зависит вид формы, — иначе форма не перестроится, когда пользователь поменяет значение.
Для таблиц и списков, где видимость или цвет должны зависеть от значения в каждой строке, вместо кода используют условное оформление формы: оно работает без обращения к серверу и не тормозит при прокрутке.
Типовые ошибки
- «Элемент с таким именем уже существует». Имя элемента должно быть уникальным на форме. Проверяйте
Элементы.Найти(Имя) = Неопределеноперед добавлением или используйте префикс. - Поле добавилось, но пустое и недоступно. Не задан
ПутьКДаннымили в нём опечатка. - Значение программно добавленного поля не сохраняется. Реквизит формы не хранится в базе. Нужен реквизит объекта — в конфигурации, в расширении или дополнительный реквизит.
- «Поле объекта не обнаружено (Подсказка)» на клиенте. Обращение к реквизиту до того, как он создан, или реквизит создан не на сервере.
- Форма стала открываться медленно.
ИзменитьРеквизитывызывается в цикле, или на форму добавлены сотни элементов. Соберите реквизиты в массив и создайте за один вызов. - После обновления элемент расширения пропал или встал не туда. В типовой форме переименовали группу-родителя. Добавляйте элементы в устойчивые места или ищите родителя кодом.
Если нужно добавить на типовую форму поля, кнопки или проверки так, чтобы это пережило обновления, — помогу удалённо: доработка 1С под задачи, доработки через расширения 1С. Если задача только скрыть или переставить поля — это можно сделать без программиста, смотрите настройку формы в 1С.
Итог
- Элемент формы — то, что видно на экране; реквизит — данные, которые он показывает через
ПутьКДанным. - Основные виды элементов: поля, группы, таблицы, кнопки и декорации.
- В конфигураторе элемент добавляют перетаскиванием реквизита в дерево элементов.
- В типовых конфигурациях форму меняют через расширение, а не напрямую.
- Программно элемент добавляют через
Элементы.ДобавитьилиЭлементы.Вставить, новый реквизит — черезИзменитьРеквизитыодним вызовом. - Реквизит формы, созданный кодом, в базе не хранится — для хранения нужен реквизит объекта.




