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