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