Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
В конфигураторе 1С при разработке **обычной формы** (не управляемой), если на «Произвольную» форму, где ещё нет реквизитов, добавить элемент управления, который требует источника данных (например, поле ввода): что сделает редактор форм с реквизитом формы при добавлении и последующем удалении этого элемента?
Реквизит будет создан автоматически, но после удаления элемента управления реквизит останется в форме
Неправильно: В обычных формах редактор старается поддерживать согласованность: реквизит, созданный «под контрол», считается вспомогательным и при отсутствии использования обычно удаляется. Оставляют реквизит, как правило, только если он был создан вручную или используется другими элементами/кодом.
Это зависит от настроек редактора форм (можно включить/выключить автосоздание реквизитов)
Неправильно: Для обычных форм типичное поведение редактора - автоматически обеспечить наличие реквизита для привязки элемента к данным без дополнительных вопросов пользователю. В учебных и тестовых сценариях это рассматривается как стандартное поведение, а не как опциональная настройка.
Редактор сначала попросит вручную создать реквизит формы и только затем позволит разместить элемент управления
Неправильно: Обычно разработчик может сразу разместить контрол на форме, а реквизит создаётся редактором автоматически, чтобы ускорить разработку и избежать лишних шагов. Запрос на предварительное ручное создание реквизита характернее для ситуаций, когда разработчик сам хочет строго контролировать структуру данных, но это не базовый сценарий поведения редактора.
Редактор форм сам создаст реквизит, а при удалении элемента управления удалит и созданный под него реквизит формы
Правильно: В обычных формах наличие реквизита и необходимость его создания контролируется редактором: при добавлении «датасвязанного» элемента он создаёт реквизит формы автоматически. Если затем удалить элемент управления и реквизит нигде больше не используется, редактор удалит и реквизит, чтобы не оставлять «мусор» в структуре формы.
Пояснение
Логика обычных форм в 1С построена вокруг связки «элемент управления ↔ реквизит формы»: многим элементам (например, **Поле ввода**, **Флажок**, **Поле выбора**) нужен источник данных - реквизит формы, к которому они привязываются. Чтобы разработчик не создавал реквизиты вручную каждый раз, редактор обычных форм при добавлении такого элемента на произвольную форму без реквизитов обычно **сам создаёт реквизит** и сразу настраивает привязку.
Что происходит при удалении:
- Если удалённый элемент был единственным, кто использовал этот реквизит, и реквизит был создан автоматически «под контрол», редактор удаляет реквизит вместе с элементом - это предотвращает накопление неиспользуемых реквизитов.
- Важно понимать частый нюанс: если реквизит уже использовался где-то ещё (например, второй элемент управления ссылается на него, он упомянут в обработчиках формы, или это реквизит, созданный разработчиком заранее), то при удалении одного элемента реквизит **может не удалиться**, потому что он всё ещё нужен.
Практический пример:
1) Создайте обычную форму «Произвольная» и убедитесь, что список реквизитов пуст.
2) Перетащите на форму «Поле ввода». Редактор добавит реквизит (часто с типом по умолчанию) и привяжет к нему свойство данных элемента.
3) Удалите «Поле ввода». Если реквизит нигде больше не используется, он исчезнет из реквизитов формы.
Дополнение для запоминания: элементы, не требующие данных (например, **Надпись/Декорация**, **Кнопка**), могут не приводить к созданию реквизита, потому что им не к чему привязывать значение. Вопрос же относится к типичной ситуации добавления элемента, которому требуется реквизит как источник данных.