§ 8.1. Командный интерфейс: оглавление, которое ведёт к формам

Откройте «Канцтовары» и доберитесь до списка товаров. Пока вы это делаете, форма ещё не открыта: вы идёте к ней — через перечень того, что программа умеет показать. Этот перечень и есть командный интерфейс: не часть формы, а то, что окружает их все. В начале книги мы смотрели на него глазами пользователя, как на оглавление программы. Теперь посмотрим со стороны Конфигуратора — где он задаётся и почему выглядит именно так.

1. Два разных «командных»

Слово «команда» мы весь прошлый разговор употребляли в одном смысле — действие формы. Здесь оно значит другое, и спутать эти два смысла легко.

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

Разница не в природе команд — открывать формы умеют и те и другие, — а в контексте. Панель формы говорит о записи, которая уже открыта; командный интерфейс — о программе целиком и служит входом в неё.

Командная панель — глаголы одной формы. Командный интерфейс — оглавление, из которого открывают формы.

2. Где оглавление задано

В Предприятии командный интерфейс виден как панель разделов и функции текущего раздела. В Конфигураторе у него три адреса.

что задаётгде
какие разделы естьподсистемы в ветке «Общие»
какие разделы кому виднысвойство конфигурации «Командный интерфейс»
что лежит в разделе «Главное»свойство «Командный интерфейс основного раздела»

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

Документация описывает эти свойства коротко и точно: первое — «для редактирования видимости подсистем как в целом, так и по каждой роли», второе — для состава команд основного раздела, и правят его тогда, когда не устраивает «автоматически сформированный порядок команд».

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

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

3. Откуда берутся строки оглавления

Здесь работает то же правило, что со стандартными командами формы: платформа знает глаголы объекта и предлагает их сама.

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

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

4. Путь от щелчка до формы

Теперь всю цепочку видно целиком — и она замыкает всё, что мы разбирали раньше.

раздел          подсистема
   ↓
команда         стандартная команда объекта
   ↓
форма           основная форма списка
   ↓
элементы        то, что мы читали всю книгу

Третье звено стоит проговорить. Команда оглавления открывает не «какую-нибудь» форму, а основную форму того вида, который ей нужен: для команды списка — основную форму списка. Назначение основных форм мы разбирали в разговоре об автоформах; вот где оно срабатывает на практике.

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

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

5. Кто что решает

У оглавления два хозяина, и их полномочия разные.

решениечьё
какие разделы есть и что в нихразработчика
какие разделы видны конкретной ролиразработчика
какие панели показывать и гдепользователя
что вынести в избранноепользователя

Так и разбирают жалобу «у меня нет такой команды» — по четырём адресам, в таком порядке: права пользователя, состав подсистемы, видимость в командном интерфейсе, личные настройки панелей. Порядок — не по частоте: застревать на первом адресе не стоит, любой из четырёх объясняет пропажу целиком.

6. Зачем это книге о формах

Командный интерфейс — не отдельная тема, а ответ на вопрос, откуда берутся формы на экране.

что видит пользовательчто за этим
форма открылась из разделакоманда объекта, включённого в подсистему
форма открылась из другой формыкоманда формы или ссылка в поле
форму «нигде не найти»её не открывает ни одна команда интерфейса

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

7. В Предприятии

Посмотрим, как выглядит программа без разделов.

  1. Откройте «Канцтовары» в Предприятии. Панели разделов нет: разделы берутся из подсистем, а подсистем мы не заводили.
Здесь будет снимок экранаглавное окно «Канцтоваров» до создания подсистем
  1. Найдите списки товаров и контрагентов через общий перечень команд программы — тот, что платформа показывает, когда разделов нет.

  2. Откройте список товаров и посмотрите на окно целиком: слева пусто, сверху нет разделов. Всё, что есть, — сама форма.

  3. Запишите, какие разделы вы бы завели для «Канцтоваров» и какие объекты положили бы в каждый. Со следующего разговора мы это и сделаем.

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

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


Разделов в «Канцтоварах» пока нет, и оглавление пустует. Появятся они из объектов конфигурации, которых мы ещё не заводили, — из подсистем. Что это такое и почему одна подсистема даёт один раздел?

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

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

Упражнения

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

Своё: набросайте оглавление. Разбейте объекты «Канцтоваров» на два-три раздела и объясните, по какому признаку вы их делили.

Ловушка: «команды нет — значит, объекта нет». Пользователь не нашёл в своём разделе список складов и решил, что справочника в программе нет. Что вы проверите и в каком порядке?

Обратный ход. Из раздела «Закупки» открывается список поступлений, но не тот, что ожидал разработчик: колонки другие. Где искать причину?

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

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