Как реализовать меню подсистем в обычном неуправляемом приложении 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При переходе с управляемых форм на обычные или при поддержке типовых конфигураций на платформе 1С:Предприятие 8 часто возникает вопрос: можно ли автоматически сформировать командный интерфейс и панель разделов на основе подсистем, как это реализовано в управляемом интерфейсе Такси? Разберем особенности архитектуры обычного приложения, выясним причину ограничений и рассмотрим практические варианты создания удобного навигационного меню.

Архитектурные различия и назначение подсистем

Проанализируем, почему платформа ведет себя по-разному в зависимости от режима запуска:

  1. Управляемый режим интерфейса: командная панель, панель разделов и панель функций строятся платформой полностью автоматически на основании состава метаданных и включенного флага Включать в командный интерфейс в свойствах подсистем.
  2. Обычный режим (неуправляемое приложение): механизм автоматического формирования командного интерфейса из подсистем платформенно отсутствует. Флаг Включать в командный интерфейс предназначен исключительно для режима управляемого приложения и в обычном режиме игнорируется.

В обычном приложении объект метаданных Подсистемы выполняет только служебные функции: структурирование дерева объектов в конфигураторе, удобная фильтрация состава конфигурации, настройка прав доступа в ролях и фильтрация объектов для планов обмена.

Рассмотрим основные способы реализации меню и навигации для пользователей в обычном приложении.

Способ 1. Штатная настройка через ветку «Общие -> Интерфейсы»

Разберем классический платформенный механизм создания меню в обычном приложении. Все панели инструментов и выпадающие меню верхнего уровня создаются вручную разработчиком.

  1. В дереве метаданных конфигуратора откроем ветку Общие и найдем раздел Интерфейсы.
  2. Создадим новый интерфейс или откроем существующий (например, Общий или специализированный интерфейс роли).
  3. С помощью редактора интерфейсов настроим структуру меню: добавим необходимые подменю, команды открытия списков справочников, документов, отчетов и обработок.
  4. Назначим созданные интерфейсы соответствующим ролям пользователей или настроим программное переключение.

Для программного управления интерфейсами используется встроенный метод:

ГлавныйИнтерфейс.ПереключитьИнтерфейс("Полный");

Способ 2. Создание формы рабочего стола с кнопками и навигацией

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

  1. Создадим новую обработку (например, РабочийСтол) и добавим форму.
  2. В свойствах формы включим признак Режим рабочего стола.
  3. В модуле управляющего приложения или в процедуре ПриНачалеРаботыСистемы модуля обычного приложения пропишем открытие данной формы.

Посмотрим на пример программного открытия рабочего стола при старте сеанса:


Процедура ПриНачалеРаботыСистемы()
    ФормаРабочегоСтола = Обработки.РабочийСтол.ПолучитьФорму("Форма");
    ФормаРабочегоСтола.Открыть();
КонецПроцедуры

Чтобы не рисовать кнопки вручную под каждый объект, обойдем подсистемы программно через коллекцию Метаданные.Подсистемы, заполним дерево значений на форме и назначим действие открытия через ОткрытьФорму().


Для Каждого Подсистема Из Метаданные.Подсистемы Цикл
    // Добавляем раздел в дерево навигации формы
    СтрокаРаздела = ДеревоНавигации.Строки.Добавить();
    СтрокаРаздела.Наименование = Подсистема.Синоним;
    
    Для Каждого Документ Из Подсистема.Состав Цикл
        СтрокаОбъекта = СтрокаРаздела.Строки.Добавить();
        СтрокаОбъекта.Наименование = Документ.Синоним;
        СтрокаОбъекта.ПолноеИмя = Документ.ПолноеИмя();
    КонецЦикла;
КонецЦикла;

Способ 3. Использование поля HTML-документа на форме

Для создания современного интерфейса с плитками, иконками и красивой группировкой можно использовать элемент управления ПолеHTMLДокумента на форме рабочего стола.

  1. Разместим на форме элемент управления ПолеHTMLДокумента.
  2. Сформируем HTML-разметку со стилями CSS, имитирующими разделы и плитки командного интерфейса.
  3. В ссылках HTML укажем специальные схемы адресации или имена объектов.
  4. В обработчике события ПриНажатииПоляHTMLДокумента() перехватим клик пользователя и откроем нужную форму объекта 1С.

Способ 4. Перевод конфигурации в гибридный режим

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

  1. В свойствах конфигурации установим режим Использовать обычные формы в управляемом приложении.
  2. Запустим толстый клиент в режиме управляемого приложения.

В этом случае платформа сформирует стандартную панель разделов и командный интерфейс подсистем, но сохранит возможность открывать и использовать существующие обычные формы объектов без необходимости их полной переработки.

← На главную