При разработке интерфейса в 1С:Предприятие 8.3 на управляемых формах часто возникает задача: необходимо, чтобы при входе пользователя в систему автоматически открывался определенный раздел (подсистема), запускалась конкретная обработка или формировался отчет вместо стандартного открытия раздела «Главное» или начальной страницы. Разберем по шагам, как реализовать такое поведение программно и какие альтернативные настройки интерфейса можно применить.
Основной механизм программного переключения интерфейса в управляемом приложении — использование глобального метода ПерейтиПоНавигационнойСсылке(). Платформа 1С поддерживает специальные навигационные ссылки интерфейса (navigation point), позволяющие обращаться напрямую к узлам командного интерфейса.
Для активации нужной подсистемы навигационная ссылка формируется по следующему шаблону:
e1cib/navigationpoint/Подсистема.ИмяПодсистемы
Если требуется обратиться к вложенной (подчиненной) подсистеме, путь указывается через точку от корневой подсистемы:
e1cib/navigationpoint/Подсистема.РодительскаяПодсистема.Подсистема.ДочерняяПодсистема
Рассмотрим пример кода, который вызывается в модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы():
Процедура ПриНачалеРаботыСистемы()
// Переход к разделу интерфейса
ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Подсистема.Продажи");
КонецПроцедуры
Проанализируем расширенный вариант, когда необходимо не просто выделить подсистему в панели разделов, но и сразу вызвать целевую команду, форму списка или сформировать отчет. Навигационная ссылка позволяет указать путь вглубь командной структуры:
Процедура ПриНачалеРаботыСистемы()
// Переход к подсистеме и вызов команды формирования отчета
НавигационнаяСсылкаКоманды = "e1cib/navigationpoint/Подсистема.Продажи/Обработка.МойОтчет.Команда.Сформировать";
ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаКоманды);
КонецПроцедуры
При вызове метода ПерейтиПоНавигационнойСсылке() непосредственно внутри процедуры ПриНачалеРаботыСистемы() можно столкнуться с ситуацией, когда инициализация интерфейса клиента еще не завершилась. В этом случае фокус может сброситься обратно на раздел по умолчанию. Чтобы гарантировать корректное переключение, рекомендуется вызывать переход с небольшой задержкой через подключение однократного обработчика ожидания.
Разберем реализацию этого подхода в модуле управляемого приложения:
Процедура ПриНачалеРаботыСистемы()
// Подключаем однократный вызов процедуры с задержкой 0.1 секунды
ПодключитьОбработчикОжидания("АктивизироватьНужныйРаздел", 0.1, Истина);
КонецПроцедуры
Процедура АктивизироватьНужныйРаздел() Экспорт
ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Подсистема.Склад");
КонецПроцедуры
Если задача состоит в том, чтобы убрать раздел «Главное» или сделать его более информативным для пользователей, можно использовать типовые механизмы конфигурации платформы 1С:
Представление основного раздела и Картинка основного раздела. С их помощью можно изменить надпись «Главное» на любое другое название (например, «Рабочее место») и назначить собственную пиктограмму.В зависимости от архитектуры решения можно рассмотреть дополнительные варианты: