§ 4.1. Элемент формы: то, что пользователь видит и трогает

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

1. Элемент — это то, что видно

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

что видит пользователькак это называется в редакторе
строка ввода с подписьюполе
таблица со строкамитаблица
кнопка «Записать и закрыть»кнопка
рамка с заголовком вокруг полейгруппа
надпись-пояснениедекорация

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

Элемент формы — единица того, что видно. Данные отвечают на вопрос «о чём форма», элементы — на вопрос «что у неё на экране».

2. Живут элементы деревом

Эти пять видов не лежат россыпью: они выстроены в дерево, и корень у него один — элемент «Форма», сама форма как целое.

Форма                     ← корень
├── Наименование          ← поле
├── Артикул               ← поле
├── ПоказыватьПодробности ← поле-флажок
├── ОстаткиПоСкладам      ← таблица
└── ЕдиницаИзмерения      ← поле

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

Здесь будет снимок экранаструктура элементов формы элемента «Товаров» с раскрытым корневым элементом «Форма»

3. У каждого элемента своё имя

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

реквизит формыэлемент формы
что этоданныето, чем их показывают
где в редакторереквизитыэлементы
имя по умолчаниюзадаёт разработчикпо имени реквизита, если элемент создан перетаскиванием

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

Совпадение имён — привычка редактора, а не свойство платформы. Имя элемента можно сменить, и от этого не изменится ни одно значение в базе.

4. Элемент живёт только в форме

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

Справочник «Товары»
├── Реквизиты ──────── общие для всех
└── Формы
    ├── ФормаЭлемента ─ свои элементы
    └── ФормаСписка ─── свои элементы

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

5. Свойства: чем элементом управляют

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

о чём свойствочто задаётпример
данныеоткуда элемент берёт значениепуть к данным
внешний видкак он выглядитширина, заголовок
поведениечто с ним можно делатьдоступность, только просмотр

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

элементпуть к даннымчем занят
полеестьпоказывает одно значение
таблицаестьпоказывает строки
группанетсобирает другие элементы
кнопканетзапускает команду
декорациянетпоясняет: надпись или картинка

Документация о декорации говорит прямо: это элемент, предназначенный для оформления, в отличие от поля. Она на экране видна, а к разговору о товаре отношения не имеет.

Внешний вид и поведение развернём в конце главы; здесь довольно того, что по смыслу свойства делятся на эти три группы.

6. Что из этого следует для чтения

Разбирая чужую форму, элементы читают отдельно от данных — и вопросы к ним задают свои.

вопросо чём он
какого вида элементполе, таблица, кнопка, группа, декорация
как он называетсяимя в структуре
откуда берёт значениепуть к данным, если он есть
что с ним можно делатьсвойства поведения

Первые два вопроса закрываются взглядом на структуру элементов, вторые два — палитрой свойств. Порядок именно такой: сначала опознать элемент, потом спрашивать, чем он занят.

7. В Конфигураторе

Посмотрим на элементы формы, которую собрали сами, — глазами разбора. Путь к данным мы здесь только найдём глазами; читать его будем в следующем параграфе.

  1. Откройте форму элемента «Товаров» и перейдите к структуре элементов.

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

  3. Найдите корневой элемент «Форма» и убедитесь, что остальные вложены в него.

  4. Щёлкните по полю «Артикул» и посмотрите палитру свойств: имя, свойства внешнего вида, свойство с путём к данным.

Здесь будет снимок экранаполе «Артикул» выделено в структуре элементов, справа открыта палитра свойств
  1. Сравните два списка — реквизиты и элементы. Найдите строку, которая есть в обоих; строку, которая есть только в реквизитах; и элемент, которому в реквизитах пары нет вовсе, — кнопку или группу.

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

Главное в одном абзаце

Элемент формы — единица того, что видно: поле, таблица, кнопка, группа, декорация; из этих пяти видов собирается любое окно, а разнообразие даёт не их число, а настройки каждого. Элементы выстроены деревом с корнем «Форма», и порядок в дереве задаёт порядок показа. У каждого элемента своё имя, и то, что оно часто совпадает с именем реквизита, — привычка редактора, а не тождество: строка в реквизитах это данные, строка в элементах — способ их показать. Живёт элемент только в своей форме, поэтому одно значение в карточке и в списке показывают разные элементы, настроенные по-разному. Управляют элементом свойства, и по смыслу их удобно делить на три группы: данные, внешний вид, поведение. Путь к данным есть только у тех, кому есть что показывать, — у поля и у таблицы; группа собирает, кнопка действует, декорация поясняет.


Имена совпадают, списки разные, а на экране всё выглядит одним целым. Если элемент — не данные, то что именно изменится, если его убрать? И что останется от формы, если убрать реквизит?

Контрольные вопросы

  1. Что такое элемент формы и какие пять видов элементов бывают?
  2. Как устроена структура элементов и что означает порядок в ней?
  3. Почему имя элемента часто совпадает с именем реквизита и что это означает?
  4. Где живёт элемент и почему его нет в дереве объекта?
  5. Одно значение показано в карточке и в списке. Сколько тут элементов?
  6. На какие три группы делятся свойства элемента?
  7. У каких элементов нет пути к данным и почему?

Упражнения

По образцу. Выпишите структуру элементов формы элемента «Контрагентов» и проставьте против каждой строки вид элемента.

Своё: назовите вид. Для каждого из описаний назовите вид элемента: рамка «Контактные данные» вокруг двух полей; надпись «Заполняется автоматически»; строка с телефоном; кнопка «Провести»; список поступлений внизу карточки.

Ловушка: «переименовал поле — потерял данные». Разработчик переименовал в форме элемент «Артикул» в «ПолеАртикула» и боится, что в базе что-то испортится. Что на самом деле изменилось и что нет?

Обратный ход. В структуре элементов есть строка, для которой в реквизитах формы нет пары, а в дереве объекта — тоже нет. Что это может быть?

На чтение. В форме два элемента с именами «Наименование» и «НаименованиеПодпись». Что можно предположить о каждом, не открывая свойства?

Ответы — в конце части.