§ 4.1. Элемент формы: то, что пользователь видит и трогает
Решение записано у самого поля — в свойстве, где сказано, откуда оно берёт значение. Читать эту запись мы будем в следующем параграфе, а сначала договоримся, что считать полем и чем оно отличается от всего остального, что стоит в окне. Слово для этого в 1С есть: элемент формы.
1. Элемент — это то, что видно
Всё, что пользователь видит в окне и на что может нажать, — элементы формы. Поле ввода, флажок, таблица, кнопка, подпись над группой полей: каждый из них — отдельный элемент со своим именем и своими свойствами.
| что видит пользователь | как это называется в редакторе |
|---|---|
| строка ввода с подписью | поле |
| таблица со строками | таблица |
| кнопка «Записать и закрыть» | кнопка |
| рамка с заголовком вокруг полей | группа |
| надпись-пояснение | декорация |
Список короткий, и это не случайность: из этих пяти видов элементов собирается любая форма, какой бы сложной она ни выглядела. Разнообразие даёт не их число, а настройки каждого — у поля, у группы и у декорации есть ещё и собственное свойство «Вид» со своим списком значений: им задают, каким именно полем или какой группой элемент будет. Слово одно, уровня два: вид элемента и вид поля. Виды поля разберём дальше в этой главе, а виды группы и декорации — в главе о композиции.
Элемент формы — единица того, что видно. Данные отвечают на вопрос «о чём форма», элементы — на вопрос «что у неё на экране».
2. Живут элементы деревом
Эти пять видов не лежат россыпью: они выстроены в дерево, и корень у него один — элемент «Форма», сама форма как целое.
Форма ← корень
├── Наименование ← поле
├── Артикул ← поле
├── ПоказыватьПодробности ← поле-флажок
├── ОстаткиПоСкладам ← таблица
└── ЕдиницаИзмерения ← поле
Вложенность в этом дереве — не украшение, а порядок показа: что вложено в группу, то внутри её рамки и окажется, а порядок строк задаёт порядок показа. Развернётся он сверху вниз или слева направо — решают настройки группы; об этом разговор в главе о композиции, здесь достаточно увидеть, что структура есть и что читают её сверху вниз.
3. У каждого элемента своё имя
Чтобы к узлу дерева можно было обратиться и настроить его, у каждого элемента есть имя. Имя — не подпись на экране: подпись задаётся другим свойством, и о нём речь в разговоре о свойствах. Имя же — то, как элемент зовут внутри формы; стоит оно первой строкой в свойствах и в структуре элементов.
| реквизит формы | элемент формы | |
|---|---|---|
| что это | данные | то, чем их показывают |
| где в редакторе | реквизиты | элементы |
| имя по умолчанию | задаёт разработчик | по имени реквизита, если элемент создан перетаскиванием |
Последняя строка объясняет добрую половину путаницы. Перетащили реквизит «Артикул» в элементы — редактор создал поле и назвал его тоже «Артикул». Одинаковые имена в двух списках выглядят как одна вещь, а вещей две: строка в реквизитах — данные, строка в элементах — способ их показать.
Совпадение имён — привычка редактора, а не свойство платформы. Имя элемента можно сменить, и от этого не изменится ни одно значение в базе.
4. Элемент живёт только в форме
Реквизит объекта задан в дереве, и любая форма этого объекта видит его через свой основной реквизит — так же, как мы разбирали в прошлой главе. С элементом не так: он существует внутри одной формы и больше нигде.
Справочник «Товары»
├── Реквизиты ──────── общие для всех
└── Формы
├── ФормаЭлемента ─ свои элементы
└── ФормаСписка ─── свои элементы
Отсюда следствие, которое пригодится при разборе. Одно и то же значение в двух формах показывают два разных элемента, и настроены они могут быть по-разному: в карточке артикул — поле ввода, в списке — колонка. Спорить, «как выглядит артикул», бессмысленно, не назвав форму.
5. Свойства: чем элементом управляют
У элемента есть палитра свойств, и почти всё, что он умеет, задано там. Свойств много, и в палитре они разложены по своим группам; нам для чтения удобно держать в голове три: про данные, про внешний вид, про поведение. Деление это наше, а не платформенное: иное свойство попадает сразу в две группы — заголовок, например, и про вид, и про данные, если оставить его пустым.
| о чём свойство | что задаёт | пример |
|---|---|---|
| данные | откуда элемент берёт значение | путь к данным |
| внешний вид | как он выглядит | ширина, заголовок |
| поведение | что с ним можно делать | доступность, только просмотр |
Первая строка — ось всей главы, и есть она не у всех. Путь к данным задают там, где есть что показывать: у поля и у таблицы. Остальным трём показывать нечего.
| элемент | путь к данным | чем занят |
|---|---|---|
| поле | есть | показывает одно значение |
| таблица | есть | показывает строки |
| группа | нет | собирает другие элементы |
| кнопка | нет | запускает команду |
| декорация | нет | поясняет: надпись или картинка |
Документация о декорации говорит прямо: это элемент, предназначенный для оформления, в отличие от поля. Она на экране видна, а к разговору о товаре отношения не имеет.
Внешний вид и поведение развернём в конце главы; здесь довольно того, что по смыслу свойства делятся на эти три группы.
6. Что из этого следует для чтения
Разбирая чужую форму, элементы читают отдельно от данных — и вопросы к ним задают свои.
| вопрос | о чём он |
|---|---|
| какого вида элемент | поле, таблица, кнопка, группа, декорация |
| как он называется | имя в структуре |
| откуда берёт значение | путь к данным, если он есть |
| что с ним можно делать | свойства поведения |
Первые два вопроса закрываются взглядом на структуру элементов, вторые два — палитрой свойств. Порядок именно такой: сначала опознать элемент, потом спрашивать, чем он занят.
7. В Конфигураторе
Посмотрим на элементы формы, которую собрали сами, — глазами разбора. Путь к данным мы здесь только найдём глазами; читать его будем в следующем параграфе.
-
Откройте форму элемента «Товаров» и перейдите к структуре элементов.
-
Выпишите все элементы сверху вниз и против каждого — его вид: поле, таблица, группа, кнопка, декорация.
-
Найдите корневой элемент «Форма» и убедитесь, что остальные вложены в него.
-
Щёлкните по полю «Артикул» и посмотрите палитру свойств: имя, свойства внешнего вида, свойство с путём к данным.
-
Сравните два списка — реквизиты и элементы. Найдите строку, которая есть в обоих; строку, которая есть только в реквизитах; и элемент, которому в реквизитах пары нет вовсе, — кнопку или группу.
Пятый шаг — главный. Реквизит без элемента и элемент без реквизита — доказательство с двух сторон: данные и элементы разные списки, и один другому не равен.
Главное в одном абзаце
Элемент формы — единица того, что видно: поле, таблица, кнопка, группа, декорация; из этих пяти видов собирается любое окно, а разнообразие даёт не их число, а настройки каждого. Элементы выстроены деревом с корнем «Форма», и порядок в дереве задаёт порядок показа. У каждого элемента своё имя, и то, что оно часто совпадает с именем реквизита, — привычка редактора, а не тождество: строка в реквизитах это данные, строка в элементах — способ их показать. Живёт элемент только в своей форме, поэтому одно значение в карточке и в списке показывают разные элементы, настроенные по-разному. Управляют элементом свойства, и по смыслу их удобно делить на три группы: данные, внешний вид, поведение. Путь к данным есть только у тех, кому есть что показывать, — у поля и у таблицы; группа собирает, кнопка действует, декорация поясняет.
Имена совпадают, списки разные, а на экране всё выглядит одним целым. Если элемент — не данные, то что именно изменится, если его убрать? И что останется от формы, если убрать реквизит?
Контрольные вопросы
- Что такое элемент формы и какие пять видов элементов бывают?
- Как устроена структура элементов и что означает порядок в ней?
- Почему имя элемента часто совпадает с именем реквизита и что это означает?
- Где живёт элемент и почему его нет в дереве объекта?
- Одно значение показано в карточке и в списке. Сколько тут элементов?
- На какие три группы делятся свойства элемента?
- У каких элементов нет пути к данным и почему?
Упражнения
По образцу. Выпишите структуру элементов формы элемента «Контрагентов» и проставьте против каждой строки вид элемента.
Своё: назовите вид. Для каждого из описаний назовите вид элемента: рамка «Контактные данные» вокруг двух полей; надпись «Заполняется автоматически»; строка с телефоном; кнопка «Провести»; список поступлений внизу карточки.
Ловушка: «переименовал поле — потерял данные». Разработчик переименовал в форме элемент «Артикул» в «ПолеАртикула» и боится, что в базе что-то испортится. Что на самом деле изменилось и что нет?
Обратный ход. В структуре элементов есть строка, для которой в реквизитах формы нет пары, а в дереве объекта — тоже нет. Что это может быть?
На чтение. В форме два элемента с именами «Наименование» и «НаименованиеПодпись». Что можно предположить о каждом, не открывая свойства?
Ответы — в конце части.