Как изменить собственный цвет фона в панели функций выбранного раздела в 1С (БСП)

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

При брендировании и кастомизации прикладных решений на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с задачей изменения цветовой гаммы интерфейса. Если изменить цвет панели разделов (главного меню) обычно удается без проблем с помощью создания собственного стиля, то покраска панели функций выбранного раздела (особенно в типовых конфигурациях на базе Библиотеки Стандартных Подсистем (БСП), таких как УТ 11, ERP или КА) вызывает множество вопросов.

В этой статье мы подробно разберем, почему стандартная настройка свойства стиля ЦветДополнительнойНавигации не всегда дает ожидаемый результат, проанализируем архитектурные ограничения платформы и рассмотрим рабочие способы решения этой задачи.

В чем причина проблемы: панель функций против меню функций

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

  1. Панель функций текущего раздела — это закрепленная на экране панель (в виде строки или колонки), которая постоянно отображает команды активного раздела. Именно для этой панели предназначено свойство стиля Цвет дополнительной навигации.
  2. Панель навигации и действий (или выпадающее «Меню функций») — это всплывающее окно, которое появляется на экране только тогда, когда пользователь кликает по разделу в панели разделов. Оно перекрывает рабочую область и закрывается при выборе команды или клике в другую область экрана.

Давайте выясним причину, почему в «чистой» самописной конфигурации цвет меняется без проблем, а в базах на БСП цвет остается прежним:

Штатные свойства стилей в 1С 8.3

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

При выборе темных оттенков для этих цветов платформа автоматически инвертирует цвет текста на белый или светлый, чтобы интерфейс оставался читаемым.

В платформе версии 8.3.20 и новее (при использовании интерфейса «Версия 8.5») также реализована автоматическая инверсия цветов для выпадающих меню: в светлой теме приложения выпадающие контекстные меню и панели навигации могут отображаться в темных тонах для достижения контрастности. Тем не менее, задать туда произвольный цвет разработчик по-прежнему не может.

Решение проблемы: пошаговые варианты обхода ограничений

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

Вариант А. Включение постоянного отображения панели функций

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

Способ 1. Настройка в конфигураторе по умолчанию для всех пользователей:

  1. Откроем конфигурацию в режиме «Конфигуратор».
  2. Кликнем правой кнопкой мыши по корню конфигурации и выберем пункт Открыть интерфейс клиентского приложения.
  3. В появившемся окне редактора панелей найдем в списке доступных панелей Панель функций текущего раздела.
  4. Перетащим ее мышкой в рабочую область (например, в верхнюю часть экрана под панель разделов или в левую колонку).
  5. Сохраним конфигурацию и запустим приложение. Заданный в стиле цвет дополнительной навигации сразу применится к этой панели.

Способ 2. Индивидуальная настройка пользователем в режиме «1С:Предприятие»:

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

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

Вариант Б. Программное назначение стиля при запуске системы

Если в нашей конфигурации создано несколько корпоративных стилей (например, «Светлый», «Темный», «Фирменный синий»), мы можем динамически переключать их для конкретных пользователей или ролей программным путем.

Для этого мы воспользуемся свойством глобального контекста ГлавныйСтиль. Устанавливать это свойство необходимо на самом раннем этапе запуска сеанса — в модуле сеанса в обработчике события УстановкаПараметровСеанса.

Рассмотрим пример кода:


Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    
    // Определим стиль на основании роли текущего пользователя или его персональных настроек
    Если РольДоступна("ПолныеПрава") Тогда
        // Назначаем основной стиль из метаданных конфигурации
        ГлавныйСтиль = БиблиотекаСтилей.ФирменныйСтильАдминистратора;
    Иначе
        ГлавныйСтиль = БиблиотекаСтилей.СтандартныйСтильПользователя;
    КонецЕсли;
    
КонецПроцедуры

Использование этого кода позволяет гибко управлять визуальным оформлением системы «на лету» без необходимости изменения метаданных вручную под каждого клиента.

Резюме

Мы выяснили, что невозможность раскрасить панель навигации в конфигурациях на БСП — это не баг программного кода БСП, а архитектурное ограничение платформы «1С:Предприятие», которая не позволяет кастомизировать цвет всплывающих (выпадающих) меню. Чтобы обойти это ограничение, достаточно перевести интерфейс в режим использования закрепленной Панели функций текущего раздела, для которой настройки стилей отрабатывают корректно и в полном объеме.

← На главную