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