§ 2.3. Редактор формы: три области и предпросмотр

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

1. Шесть редакторов в одном окне

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

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

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

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

2. Три вопроса, на которые отвечает форма

Из шести редакторов три несут главную нагрузку, и держать в голове надо именно их. Проще всего запомнить как три вопроса об одном разговоре.

реквизиты   о чём говорим  ← данные
элементы    что видно      ← окно
команды     что можно      ← действия

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

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

Остальные три редактора в этой главе только назовём. Командный интерфейс формы — тема главы о командах; параметры — разговор об открытии формы; модуль мы не пишем вовсе.

3. Реквизиты: чем форма располагает

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

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

4. Элементы: из чего сложено окно

Структура окна — иерархическая, и корень у неё один: элемент «Форма». Всё остальное вложено в него.

Форма
├── Наименование          ← поле
├── Артикул               ← поле
├── Группа «Учёт»         ← группа
│   └── ЕдиницаИзмерения  ← поле
└── Записать              ← кнопка

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

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

Поле не «показывает реквизит» по случайности: его либо перетащили из реквизитов, либо добавили и указали, откуда брать данные.

5. Команды: что форма умеет

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

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

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

6. Палитра свойств: где живут настройки

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

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

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

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

  1. Пройдите по закладкам и назовите вслух, чем занят каждый редактор. Шесть названий — хватит одного круга, чтобы они улеглись.
Здесь будет снимок экранаредактор формы элемента справочника «Товары», закладка элементов, снизу предпросмотр
  1. В редакторе элементов раскройте структуру и найдите корневой элемент «Форма». Выделите его и посмотрите палитру свойств: это свойства всей формы.

  2. Выделите поле наименования и сравните его свойства со свойствами формы — набор другой, потому что и предмет другой.

  3. Посмотрите на предпросмотр внизу и сравните с карточкой товара в Предприятии. Отличия есть, и они ожидаемы: предпросмотр показывает раскладку, а не работу.

Ничего не меняйте: цель обхода — научиться смотреть, а не править.

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

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


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

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

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

Упражнения

По образцу. Пройдите по шести закладкам формы товара и для каждой скажите одной фразой, на какой вопрос она отвечает.

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

Ловушка: «нарисую окно и заполню». Разработчик собирается сначала разложить поля, а потом придумать, откуда они берут значения. Почему из этого выйдет лишняя работа?

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

На чтение. В структуре элементов чужой формы вы видите группу, в ней три поля и таблицу, а рядом — декорацию. Что из этого показывает данные, а что нет?

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