При переходе с управляемых форм на обычные или при поддержке типовых конфигураций на платформе 1С:Предприятие 8 часто возникает вопрос: можно ли автоматически сформировать командный интерфейс и панель разделов на основе подсистем, как это реализовано в управляемом интерфейсе Такси? Разберем особенности архитектуры обычного приложения, выясним причину ограничений и рассмотрим практические варианты создания удобного навигационного меню.
Проанализируем, почему платформа ведет себя по-разному в зависимости от режима запуска:
Включать в командный интерфейс предназначен исключительно для режима управляемого приложения и в обычном режиме игнорируется.В обычном приложении объект метаданных Подсистемы выполняет только служебные функции: структурирование дерева объектов в конфигураторе, удобная фильтрация состава конфигурации, настройка прав доступа в ролях и фильтрация объектов для планов обмена.
Рассмотрим основные способы реализации меню и навигации для пользователей в обычном приложении.
Разберем классический платформенный механизм создания меню в обычном приложении. Все панели инструментов и выпадающие меню верхнего уровня создаются вручную разработчиком.
Общий или специализированный интерфейс роли).Для программного управления интерфейсами используется встроенный метод:
ГлавныйИнтерфейс.ПереключитьИнтерфейс("Полный");
Если требуется получить визуальное меню прямо на основном экране программы, создадим специальную обработку, форма которой будет служить рабочим столом.
РабочийСтол) и добавим форму.ПриНачалеРаботыСистемы модуля обычного приложения пропишем открытие данной формы.Посмотрим на пример программного открытия рабочего стола при старте сеанса:
Процедура ПриНачалеРаботыСистемы()
ФормаРабочегоСтола = Обработки.РабочийСтол.ПолучитьФорму("Форма");
ФормаРабочегоСтола.Открыть();
КонецПроцедуры
Чтобы не рисовать кнопки вручную под каждый объект, обойдем подсистемы программно через коллекцию Метаданные.Подсистемы, заполним дерево значений на форме и назначим действие открытия через ОткрытьФорму().
Для Каждого Подсистема Из Метаданные.Подсистемы Цикл
// Добавляем раздел в дерево навигации формы
СтрокаРаздела = ДеревоНавигации.Строки.Добавить();
СтрокаРаздела.Наименование = Подсистема.Синоним;
Для Каждого Документ Из Подсистема.Состав Цикл
СтрокаОбъекта = СтрокаРаздела.Строки.Добавить();
СтрокаОбъекта.Наименование = Документ.Синоним;
СтрокаОбъекта.ПолноеИмя = Документ.ПолноеИмя();
КонецЦикла;
КонецЦикла;
Для создания современного интерфейса с плитками, иконками и красивой группировкой можно использовать элемент управления ПолеHTMLДокумента на форме рабочего стола.
ПолеHTMLДокумента.ПриНажатииПоляHTMLДокумента() перехватим клик пользователя и откроем нужную форму объекта 1С.Если вам необходим полноценный командный интерфейс подсистем, но в конфигурации создано множество обычных форм, рассмотрим возможность работы в гибридном режиме:
В этом случае платформа сформирует стандартную панель разделов и командный интерфейс подсистем, но сохранит возможность открывать и использовать существующие обычные формы объектов без необходимости их полной переработки.