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