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