При брендировании и кастомизации прикладных решений на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с задачей изменения цветовой гаммы интерфейса. Если изменить цвет панели разделов (главного меню) обычно удается без проблем с помощью создания собственного стиля, то покраска панели функций выбранного раздела (особенно в типовых конфигурациях на базе Библиотеки Стандартных Подсистем (БСП), таких как УТ 11, ERP или КА) вызывает множество вопросов.
В этой статье мы подробно разберем, почему стандартная настройка свойства стиля ЦветДополнительнойНавигации не всегда дает ожидаемый результат, проанализируем архитектурные ограничения платформы и рассмотрим рабочие способы решения этой задачи.
Для начала давайте разберем важную терминологическую и архитектурную разницу между элементами интерфейса 1С. Очень часто разработчики путают две разные панели, из-за чего и возникает недопонимание:
Цвет дополнительной навигации.Давайте выясним причину, почему в «чистой» самописной конфигурации цвет меняется без проблем, а в базах на БСП цвет остается прежним:
Цвет дополнительной навигации.Начиная с современных версий платформы 1С:Предприятие 8.3, разработчикам доступен механизм создания корпоративных стилей. Напомним основные свойства стиля, которые влияют на элементы навигации управляемого приложения:
При выборе темных оттенков для этих цветов платформа автоматически инвертирует цвет текста на белый или светлый, чтобы интерфейс оставался читаемым.
В платформе версии 8.3.20 и новее (при использовании интерфейса «Версия 8.5») также реализована автоматическая инверсия цветов для выпадающих меню: в светлой теме приложения выпадающие контекстные меню и панели навигации могут отображаться в темных тонах для достижения контрастности. Тем не менее, задать туда произвольный цвет разработчик по-прежнему не может.
Если перед нами стоит задача сделать интерфейс клиента уникальным и раскрасить область подменю в фирменные цвета, мы можем использовать два рабочих обходных пути.
Чтобы платформа применила свойство стиля Цвет дополнительной навигации, мы должны заставить интерфейс отображать закрепленную панель функций текущего раздела вместо всплывающего меню.
Способ 1. Настройка в конфигураторе по умолчанию для всех пользователей:
Способ 2. Индивидуальная настройка пользователем в режиме «1С:Предприятие»:
При использовании этого подхода все команды активного раздела всегда будут находиться перед глазами пользователя, а сама панель окрасится в нужный цвет.
Если в нашей конфигурации создано несколько корпоративных стилей (например, «Светлый», «Темный», «Фирменный синий»), мы можем динамически переключать их для конкретных пользователей или ролей программным путем.
Для этого мы воспользуемся свойством глобального контекста ГлавныйСтиль. Устанавливать это свойство необходимо на самом раннем этапе запуска сеанса — в модуле сеанса в обработчике события УстановкаПараметровСеанса.
Рассмотрим пример кода:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
// Определим стиль на основании роли текущего пользователя или его персональных настроек
Если РольДоступна("ПолныеПрава") Тогда
// Назначаем основной стиль из метаданных конфигурации
ГлавныйСтиль = БиблиотекаСтилей.ФирменныйСтильАдминистратора;
Иначе
ГлавныйСтиль = БиблиотекаСтилей.СтандартныйСтильПользователя;
КонецЕсли;
КонецПроцедуры
Использование этого кода позволяет гибко управлять визуальным оформлением системы «на лету» без необходимости изменения метаданных вручную под каждого клиента.
Мы выяснили, что невозможность раскрасить панель навигации в конфигурациях на БСП — это не баг программного кода БСП, а архитектурное ограничение платформы «1С:Предприятие», которая не позволяет кастомизировать цвет всплывающих (выпадающих) меню. Чтобы обойти это ограничение, достаточно перевести интерфейс в режим использования закрепленной Панели функций текущего раздела, для которой настройки стилей отрабатывают корректно и в полном объеме.