При проектировании интерфейса в управляемом приложении (интерфейс «Такси») разработчики часто сталкиваются с задачей: сделать так, чтобы при клике на определенный раздел в панели разделов не открывалось меню функций, а сразу открывалась конкретная форма — например, список документов, рабочее место или отчет. Разберем, как реализовать такое поведение штатными средствами платформы 1С:Предприятие.
В платформе 1С:Предприятие не предусмотрено интерфейсных событий вроде нажатия на раздел или активизации раздела, в которые можно было бы встроить произвольный программный код. Однако интерфейс управляемого приложения поддерживает специальное штатное поведение: если раздел командного интерфейса содержит ровно одно действие, платформа автоматически выполняет его сразу при клике на раздел.
Проанализируем ключевые условия, которые необходимы для корректного срабатывания этого механизма:
ОбщаяКоманда). Если команд две и более, платформа откроет меню функций раздела.Разберем по шагам порядок действий в конфигураторе для реализации быстрого перехода в форму:
Подсистемы дерева метаданных или выберем существующую.Обработка или конкретная ОбщаяКоманда).Выясним причину ситуаций, когда форма не открывается по клику, а открывается стандартная панель функций:
Во-первых, частой причиной является скрытое наличие нескольких команд у одного объекта. Если в подсистему добавлен документ, платформа может автоматически предоставить команду создания. Необходимо открыть командный интерфейс подсистемы и вручную отключить лишние команды.
Во-вторых, если в будущем в эту же подсистему будет добавлен еще один отчет или журнал документов, автоматическое открытие формы перестанет срабатывать для всех пользователей, у которых есть доступ к обоим объектам.
Если специфика задачи не укладывается в ограничения подсистемы с одной командой, рассмотрим альтернативные варианты архитектуры интерфейса:
ОткрытьФорму() в модуле управляемого приложения внутри обработчика ПриНачалеРаботыСистемы():
&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма");
КонецПроцедуры
Таким образом, для открытия нужной формы по клику на раздел интерфейса наиболее простым и правильным решением остается обеспечение строго одной активной команды в свойствах подсистемы верхнего уровня.