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

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

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

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

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

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

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

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

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

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

Какие элементы управления бывают и что выбрать

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

Сравнение вариантов

Поле ввода

Для редактируемых реквизитов любого типа; требует привязки к данным формы

Надпись

Для подсказок и отображения данных только на чтение; не даёт пользователю менять значение

Кнопка

Для запуска команды формы или стандартной команды; без команды кнопка ничего не делает

Группа

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

Таблица формы

Для табличных частей и списков; требует реквизит типа ТаблицаЗначений или табличную часть объекта

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

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

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный объект в дереве конфигурации
  2. 2
    Откройте форму объекта двойным щелчком
  3. 3
    При необходимости добавьте реквизит формы в панели «Реквизиты»
  4. 4
    Перетащите реквизит в дерево элементов или добавьте элемент через контекстное меню
  5. 5
    В палитре свойств задайте ПутьКДанным, Заголовок и другие свойства
  6. 6
    Для кнопки создайте команду формы и назначьте её кнопке
  7. 7
    Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7)
  8. 8
    Проверьте результат в режиме предприятия

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

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

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

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

Обратите внимание на свойство АвтоОтметкаНезаполненного и ПроверкаЗаполнения у реквизита: они управляют контролем обязательности поля. Если поле обязательное, но пользователь может его не видеть из-за скрытой группы, форма выдаст ошибку при записи без видимой причины — это частый источник путаницы.

Программное добавление элемента из модуля формы

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

Пример создания строкового реквизита и связанного поля ввода:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ДобавляемыеРеквизиты = Новый Массив;

НовыйРеквизит = Новый РеквизитФормы("КомментарийДоп",

Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));

ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

ИзменитьРеквизиты(ДобавляемыеРеквизиты);

НовыйЭлемент = Элементы.Добавить("КомментарийДоп", Тип("ПолеФормы"), Элементы.ГруппаДополнительно);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

НовыйЭлемент.ПутьКДанным = "КомментарийДоп";

НовыйЭлемент.Заголовок = "Комментарий";

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

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

Работа с типовыми конфигурациями через расширения

Если конфигурация типовая и находится на поддержке, прямое изменение формы затруднит обновления. Правильный путь — расширение конфигурации. В конфигураторе откройте «Конфигурация → Расширения конфигурации», создайте новое расширение, затем в дереве конфигурации вызовите на нужной форме «Добавить в расширение».

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

Альтернатива для простых случаев — механизм дополнительных реквизитов и сведений, встроенный во многие типовые конфигурации (БСП). Он позволяет добавить поле на форму вообще без конфигуратора, прямо в режиме предприятия через администрирование. Если задача — просто хранить и показывать дополнительное значение, сначала проверьте, не закрывает ли её этот штатный механизм.

Маршрут решения

Как выбрать действие

Конфигурация собственная или снята с поддержкиДобавляйте элемент напрямую в редакторе формы основной конфигурации
Конфигурация типовая на поддержкеИспользуйте расширение конфигурации — это сохранит возможность обновлений
Нужно простое дополнительное поле без логикиПроверьте механизм дополнительных реквизитов в режиме предприятия
Состав полей зависит от настроек или условийСоздавайте элементы программно в ПриСозданииНаСервере

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

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

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

Если форма не открывается после правок и выдаёт ошибку, проверьте журнал регистрации и текст сообщения: чаще всего причина в обращении к несуществующему элементу или реквизиту в модуле формы. Отладчик конфигуратора позволяет поставить точку останова в ПриСозданииНаСервере и пройти код по шагам.

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

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

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

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

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

Элемент отсутствует, на другой вкладке или без заголовка

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

Значение сохраняется и показывается при повторном открытии

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

Поле очищается после записи или не заполняется из объекта

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

Нажатие выполняет команду без ошибок

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

Ничего не происходит или появляется сообщение об ошибке

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

Форма открывается у всех пользователей без сообщений об ошибках

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

Ошибка «Поле объекта не обнаружено» или падение при открытии

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

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

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

Почему добавленное поле не сохраняет введённые данные?

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

Как добавить элемент в табличную часть документа?

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

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

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

Как скрыть элемент по условию, не удаляя его?

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

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

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

Итог

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

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