Разделы, команды и роли: настраиваем интерфейс подсистем в конфигураторе
Содержание
Командный интерфейс подсистемы редактируют в конфигураторе: в дереве Общие → Подсистемы щёлкните правой кнопкой по нужной подсистеме и выберите Командный интерфейс. Откроется редактор, где видны все команды раздела, разложенные по группам панели навигации и панели действий. Там включают и выключают видимость команд, меняют порядок и переносят команды между группами — отдельно для всех пользователей и для каждой роли.
Порядок самих разделов задаётся уровнем выше — в командном интерфейсе корня конфигурации. Всё ниже относится к платформе 8.3 и управляемому приложению с интерфейсом «Такси», одинаково для любой конфигурации: своей разработки или типовой.
Как подсистемы формируют командный интерфейс
В управляемом приложении команды не рисуют вручную, как кнопки на форме. Платформа собирает интерфейс сама — из трёх источников:
- 📁 Подсистемы. Каждая подсистема верхнего уровня с флажком «Включать в командный интерфейс» становится разделом в панели разделов. Вложенные подсистемы — это группы внутри раздела.
- 🧩 Состав подсистемы. Объекты, включённые в подсистему, приносят свои стандартные команды: справочник — «открыть список» в панель навигации и «создать» в панель действий, отчёт — команду в группу «Отчеты».
- 🔐 Права и функциональные опции. Команда объекта, на который у роли нет прав, пользователю не показывается. Команда объекта, зависящего от выключенной функциональной опции, тоже скрывается.
Ручное редактирование в редакторе — это уже тонкая настройка поверх собранного платформой. Отсюда главное правило: если команды нет в составе подсистемы, редактор её не покажет, сколько ни ищи.
Где какие настройки лежат
| Что настраиваем | Где это в конфигураторе |
|---|---|
| Порядок и видимость разделов | Контекстное меню корня конфигурации → Открыть командный интерфейс конфигурации |
| Состав раздела (какие объекты в нём) | Свойство подсистемы «Состав» или вкладка «Подсистемы» в окне объекта |
| Видимость и порядок команд в разделе | Контекстное меню подсистемы → Командный интерфейс |
| Собственные группы команд | Ветка Общие → Группы команд |
| Картинка и пояснение раздела | Палитра свойств подсистемы: «Картинка», «Пояснение» |
Как включить объект в раздел и убрать из него команду
Добавить объект в подсистему
Есть два равноценных пути.
- Откройте свойства подсистемы, найдите свойство «Состав» и нажмите кнопку открытия. В дереве объектов отметьте флажками нужные справочники, документы, отчёты, обработки, общие команды.
- Либо откройте окно редактирования самого объекта (двойной щелчок по справочнику или документу) и перейдите на вкладку «Подсистемы». Отметьте разделы, где объект должен появиться.
Один объект может входить в несколько подсистем. Например, справочник «Контрагенты» нормально держать и в «Продажах», и в «Закупках».
Убрать команду, не трогая состав
Иногда объект в подсистеме нужен (например, ради прав или отбора в отчётах), а его команду в разделе показывать не хочется.
- Откройте
Командный интерфейсподсистемы. - Слева выберите группу — например, «Панель действий.Создать».
- Справа найдите команду и снимите флажок в колонке «Видимость».
Команда исчезнет из раздела для всех, но объект останется в составе подсистемы.
Отключить стандартные команды объекта целиком
У справочников, документов и других прикладных объектов в палитре свойств есть флажок «Использовать стандартные команды». Если его снять, стандартные команды объекта не попадут в командный интерфейс ни одной подсистемы. Так поступают с вспомогательными справочниками, которые открываются только из форм других объектов.
Команды с параметром (у общей команды задан «Тип параметра команды») в панель навигации раздела не попадают. Их место — командная панель и панель навигации формы объекта соответствующего типа.
Видимость команд для разных интерфейсов и пользователей
Редактор командного интерфейса подсистемы — это таблица. Строки — команды выбранной группы. Колонки — общая «Видимость» и по одной колонке на каждую роль конфигурации.
Общая видимость
Флажок в колонке «Видимость» задаёт поведение по умолчанию для всех пользователей. Снятый флажок прячет команду, но не запрещает её: пользователь с правами может вернуть её через свои настройки (об этом ниже).
Видимость по ролям
Колонки ролей уточняют общую настройку. Значение в ячейке роли бывает трёх видов:
- ✅ флажок установлен — команда видна пользователям с этой ролью;
- ⬜ флажок снят — скрыта для этой роли;
- ➖ неопределено (серый флажок) — действует общая «Видимость».
Если у пользователя несколько ролей и хотя бы одна из них явно включает команду, команда будет видна.
Видимость разделов
То же самое работает на уровне всей панели разделов. В командном интерфейсе конфигурации (контекстное меню корня → Открыть командный интерфейс конфигурации) есть список подсистем верхнего уровня с колонками «Видимость» и колонками ролей. Так кладовщику можно скрыть раздел «Зарплата и кадры», не трогая права.
Пользовательские настройки поверх конфигуратора
Пользователь в режиме «Предприятие» тоже меняет интерфейс:
- главное меню (кнопка с тремя полосками) →
Вид → Настройка панели разделов— состав и порядок разделов; - в открытом разделе значок шестерёнки →
Настройка навигациииНастройка действий— команды панели навигации и панели действий.
Эти настройки сохраняются у пользователя и перекрывают значения по умолчанию из конфигуратора. Поэтому изменения, сделанные в конфигураторе, пользователь, который уже что-то настраивал сам, может и не увидеть.
Роли: доступ и видимость — не одно и то же
Две похожие вещи часто путают.
| Права роли | Видимость в редакторе интерфейса | |
|---|---|---|
| Где задаётся | Окно роли, права «Просмотр», «Использование» и т. д. | Колонки ролей в командном интерфейсе |
| Что делает | Разрешает или запрещает работу с объектом | Показывает или прячет команду по умолчанию |
| Можно ли обойти | Нет: команда без прав не выводится нигде | Да: пользователь вернёт команду через настройку навигации |
| Для чего использовать | Безопасность | Удобство, разгрузка раздела |
Отсюда практическое правило. Скрывать от сотрудника данные через видимость команд нельзя: он найдёт объект через «Все функции», поиск или ссылку. Закрывать доступ нужно правами роли.
Видимость по ролям хороша для другого: убрать лишнее у тех, кому объект доступен, но не нужен каждый день. Например, бухгалтеру по зарплате оставить в разделе «Склад» только отчёты, а документы поступления спрятать.
Какие права нужны, чтобы команда появилась
- 📗 Справочник, документ, регистр: право «Просмотр» для команды открытия списка; «Добавление» — для команды создания.
- 📊 Отчёт и обработка: право «Использование» — и для команды, и для просмотра формы.
- ⚙️ Общая команда сама по себе прав не требует. Обычно её видимость регулируют через состав подсистемы, видимость по ролям или функциональную опцию.
Раздел, в котором у пользователя не осталось ни одной доступной команды, платформа не показывает в панели разделов вовсе.
Группы команд: своя структура внутри раздела
Стандартные группы — «Важное», «Обычное», «См. также» в панели навигации и «Создать», «Отчеты», «Сервис» в панели действий. Когда команд в разделе десятки, их стоит разложить по собственным группам.
Создание группы команд
- В ветке
Общие → Группы команддобавьте новый объект. - Заполните имя, синоним (его увидит пользователь) и, если нужно, картинку.
- В свойстве «Категория» выберите, где будет жить группа: «Панель навигации» или «Панель действий». Категории «Командная панель формы» и «Панель навигации формы» нужны для форм, в разделе они не появятся.
После этого новая группа появится слева в редакторе командного интерфейса каждой подсистемы. Перетащите в неё команды мышью из других групп.
Вложенные подсистемы как группы
Второй способ — подчинённые подсистемы. Создайте внутри раздела «Склад» подсистемы «Приход», «Расход», «Инвентаризация» и разнесите объекты по ним. В панели навигации раздела появятся одноимённые группы.
Чем вариант с подсистемами удобнее: у каждой вложенной подсистемы свой состав и свой командный интерфейс, а через подсистемы удобно отбирать объекты при сравнении конфигураций и выгрузке. Чем хуже: в дереве конфигурации прибавляется объектов, и сопровождать их дольше.
Порядок команд и разделов
- Внутри группы порядок меняется перетаскиванием или кнопками перемещения вверх-вниз на панели редактора.
- Порядок разделов задаётся в командном интерфейсе конфигурации, в списке панели разделов.
- Порядок вложенных подсистем внутри раздела определяется порядком в дереве конфигурации — двигайте их там же стрелками.
Картинку для раздела берите размером 32×32 точки, лучше из общих картинок конфигурации. Без картинки раздел отобразится со стандартным значком, и в панели с иконками его трудно отличить от соседних.
Управление интерфейсом из кода
Напрямую добавить или удалить раздел из встроенного языка нельзя: командный интерфейс — часть метаданных. Но повлиять на него программно можно несколькими штатными способами.
Функциональные опции
Это основной инструмент. Объект или общая команда привязывается к функциональной опции, а опция хранит значение в константе или реквизите. Когда значение ложь, все команды, завязанные на опцию, исчезают из интерфейса.
Пример: константа «ИспользоватьСкладскойУчет» типа Булево, функциональная опция с тем же именем хранится в ней, и в её составе — документы склада. Пользователь снимает флажок в настройках — складские команды пропадают.
Если опция параметризована (например, зависит от организации), параметры для интерфейса задают так:
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ПараметрыОпций = Новый Структура("Организация", Организация);
УстановитьПараметрыФункциональныхОпцийИнтерфейса(ПараметрыОпций);
КонецПроцедуры
Обновление интерфейса после изменений
Когда код поменял значение константы, от которой зависят опции, интерфейс сам не перестроится. Вызовите на клиенте:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ОбновитьИнтерфейс();
КонецПроцедуры
Метод перерисовывает командный интерфейс и открытые формы. Вызывать его в цикле или на каждое изменение реквизита не стоит: перерисовка заметна пользователю.
Общая команда с обработчиком
Если нужна в разделе команда, которая открывает не список, а, скажем, форму с отбором или навигационную ссылку, создайте общую команду, включите её в подсистему и пропишите обработчик в модуле команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("Документ.ПоступлениеТоваров.ФормаСписка",
Новый Структура("Отбор", Новый Структура("Проведен", Ложь)),
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
Группа, в которую попадёт такая команда, задаётся её свойством «Группа», а дальше её видно и настраивается в редакторе командного интерфейса подсистемы так же, как стандартные.
Типовые конфигурации и расширения
В БП, ЗУП, УТ правка подсистем в основной конфигурации снимает её с поддержки или требует включить возможность изменения. Безопаснее работать через расширение: заимствуйте нужную подсистему и включите в неё свои объекты расширения — команды появятся в разделе без изменения основной конфигурации. После подключения расширения перезапустите сеанс пользователя.
Почему изменения не видны и как это исправить
После правки интерфейса в конфигураторе выполните Конфигурация → Обновить конфигурацию базы данных (F7) и перезапустите режим «Предприятие». Открытый сеанс новый интерфейс не подхватит.
Если и после этого раздел или команда ведут себя не так, как задумано, ищите причину по симптому.
Очистка пользовательских настроек сбрасывает не только интерфейс, но и настройки отчётов и форм. Предупредите сотрудника заранее и делайте это вне рабочего времени.
Частые вопросы
Можно ли задать разный командный интерфейс для разных пользователей без новых ролей?
Где задаётся, какой раздел открывается при запуске программы?
Вид.