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