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

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

Как добавить элемент формы в 1С

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

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

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

Где находятся элементы формы и как открыть редактор

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

Окно редактора формы состоит из нескольких областей: дерево элементов слева вверху, список реквизитов справа, палитра свойств и предпросмотр внешнего вида. Именно в дереве элементов отражается иерархия: группы содержат поля, командные панели — кнопки, а корнем всегда является сама форма.

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

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

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

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

Настройка свойств нового элемента

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

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

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

Программное добавление нужно, когда состав элементов зависит от условий: роли пользователя, вида документа, настроек. В управляемой форме элементы создают в обработчике «ПриСозданииНаСервере» — это единственный безопасный момент, когда структура формы ещё формируется. Сначала добавляют реквизит через метод «ИзменитьРеквизиты», затем элемент через «Элементы.Добавить».

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДобавляемыеРеквизиты = Новый Массив;
    НовыйРеквизит = Новый РеквизитФормы("КомментарийДоп", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));
    ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    НовоеПоле = Элементы.Добавить("КомментарийДоп", Тип("ПолеФормы"), Элементы.ГруппаДополнительно);
    НовоеПоле.Вид = ВидПоляФормы.ПолеВвода;
    НовоеПоле.ПутьКДанным = "КомментарийДоп";
    НовоеПоле.Заголовок = "Доп. комментарий";
КонецПроцедуры

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

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

Добавление кнопки и команды формы

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

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

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

Доработка типовой формы без снятия с поддержки

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

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

Способы добавления элемента

Визуально в конфигураторе

Подходит для статичных форм собственных объектов; быстро и наглядно, но требует правки конфигурации

Программно в модуле формы

Подходит, когда состав элементов зависит от условий; гибче, но сложнее в отладке

Расширение конфигурации

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

Проверка результата и типичные проблемы

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

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

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

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

Отображение элемента
Норма

Элемент виден в нужной группе, заголовок читаемый

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

Элемент отсутствует, перекрыт другими или находится не в том разделе

Связь с данными
Норма

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

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

Поле пустое всегда или ввод не сохраняется

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

Нажатие выполняет обработчик без ошибок

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

Ошибка «Процедура не обнаружена» или отсутствие реакции

Частые вопросы

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

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

Почему метод Элементы.Добавить выдаёт ошибку?

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

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

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

Как добавить флажок на форму?

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

Элемент добавлен, но не виден пользователю. Что проверить?

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

Как удалить или скрыть штатный элемент типовой формы?

В расширении удалить элемент нельзя, но можно скрыть: в заимствованной форме установите элементу свойство «Видимость» = Ложь или сделайте это программно в обработчике с аннотацией «&После("ПриСозданииНаСервере")».

Итог

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

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