Разбор от сообщества: Включение темной темы в интерфейсе "версия 8.5" по умолчанию
С выходом очередного обновления платформы (условно называемого в сообществе «версия 8.5») темная тема интерфейса стала предлагаться по умолчанию. На первый взгляд — косметическое изменение. Но за ним скрываются риски, которые проявятся не сразу: от «слепых» кнопок до падения производительности на старых конфигурациях. Разбираем механику, ловушки и даём чек-лист для безопасного внедрения.
Контекст и ситуация
В актуальных версиях платформы 1С:Предприятие 8.3 (начиная с 8.3.2x) появилась возможность переключения между светлой и тёмной темами интерфейса. Однако до недавнего времени тема по умолчанию оставалась светлой. С релизом, который сообщество окрестило «8.5», ситуация изменилась: при создании новой информационной базы или обновлении существующей (если не заданы явные параметры) платформа автоматически включает тёмную тему.
Проблема в том, что это решение затрагивает не только визуал, но и логику работы форм, расширений и даже печатных макетов. Разработчики, которые привыкли полагаться на жёстко заданные цвета, рискуют получить интерфейс, где текст сливается с фоном, а элементы управления становятся нечитаемыми.
Ключевой тезис: Включение тёмной темы по умолчанию — не просто смена палитры, а изменение системных цветов, на которые завязаны все элементы формы. Если ваш код или расширение не используют системные цвета, они сломаются.
Технический разбор: как платформа выбирает тему
Механизм выбора темы по умолчанию
Платформа определяет тему в следующем порядке приоритета (от высшего к низшему):
- Параметр командной строки
/Theme Darkили/Theme Light. - Настройка в файле
1Cv8.ini(секция[General], ключTheme). - Настройка в свойствах информационной базы (в конфигураторе: Администрирование → Настройки информационной базы → Интерфейс).
- Значение по умолчанию, заданное в конфигурации (свойство
ИспользоватьТемнуюТемув корне конфигурации — доступно в режиме совместимости 8.3.20+). - Если ничего не задано — платформа использует тему, установленную в операционной системе (начиная с версии 8.3.25).
Именно последний пункт стал причиной «внезапного» появления тёмной темы: на Windows 11 с тёмной темой ОС платформа автоматически подхватывает её, если не переопределено явно.
Программное определение текущей темы
Прямого метода в глобальном контексте нет, но можно косвенно определить тему через системные цвета. Например, сравнить цвет фона формы с эталонным:
Функция ТекущаяТемаТемная() Экспорт
ЦветФона = ЦветФонаФормы();
// Светлая тема: фона обычно белый (RGB 255,255,255)
// Тёмная тема: фона тёмно-серый (RGB 43,43,43)
Возврат ЦветФона < 128; // упрощённо
КонецФункции
Однако такой подход ненадёжен: пользователь мог изменить тему вручную, а системные цвета могут быть переопределены. Для точного определения лучше использовать COM-объект COMОбъект с обращением к настройкам платформы (через GetTheme внешней компоненты), но это выходит за рамки стандартного API.
Ловушка: тёмная тема и пользовательские расширения
Самая частая проблема — расширения конфигурации, которые задают цвета элементов форм «жёстко»:
Элементы.Кнопка.ЦветФона = WebЦвета.Белый;
Элементы.Кнопка.ЦветТекста = WebЦвета.Черный;
При переключении на тёмную тему фон кнопки остаётся белым, а текст — чёрным. Визуально это ещё терпимо. Но если разработчик задал ЦветТекста = WebЦвета.Белый (для светлой темы), то на тёмном фоне текст станет невидимым.
Предупреждение: Никогда не используйте жёсткие цвета в формах, если не хотите получить «слепые» элементы при смене темы. Всегда полагайтесь на системные цвета (
ЦветФонаФормы(),ЦветТекстаФормы()) или наследуйте их от родительского элемента.
Пример корректного кода с учётом темы
// Правильно: используем системные цвета
Элементы.Кнопка.ЦветФона = ЦветФонаФормы();
Элементы.Кнопка.ЦветТекста = ЦветТекстаФормы();
// Или наследуем от родителя
Элементы.Кнопка.ЦветФона = Неопределено; // будет взят из родительского элемента
Сравнение подходов: системная тема vs принудительная настройка
Выбор между тем, чтобы оставить тему по умолчанию (автоматически подхватываемую из ОС) или принудительно задать светлую/тёмную, зависит от контекста. Ниже — ключевые критерии.
Когда стоит оставить тему по умолчанию
- Конфигурация разработана с нуля на платформе 8.3.25+ и использует только системные цвета.
- Нет расширений, переопределяющих цвета форм.
- Пользователи работают на современных ОС (Windows 10/11, macOS) с поддержкой тёмной темы.
Когда нужно принудительно отключить тёмную тему
- Есть legacy-формы с жёстко заданными цветами (например, в конфигурациях, перешедших с 7.7).
- Используются расширения, которые не тестировались на тёмной теме.
- Печатные формы (табличные документы) содержат цветные ячейки, которые становятся нечитаемыми на тёмном фоне.
- Пользователи жалуются на блики или усталость глаз (хотя это субъективно).
Принудительно задать тему можно через параметр запуска /Theme Light или через настройки информационной базы в конфигураторе. Для всех пользователей — через файл 1Cv8.ini в каталоге базы.
Практическое руководство: что делать прямо сейчас
Чек-лист для администратора и разработчика
- Проверьте, какая тема активна по умолчанию. Запустите базу с параметром
/C "ПоказатьТему"(если есть внешняя обработка) или просто откройте любую форму и посмотрите на цвет фона. - Протестируйте все ключевые формы при тёмной теме. Особое внимание — формам со списками, табличными полями и кнопками.
- Проверьте расширения. Если расширение задаёт цвета через
ЦветФонаилиЦветТекста— замените на системные цвета или наследование. - Настройте принудительную тему для баз, где тёмная тема вызывает проблемы. Используйте параметр
/Theme Lightв ярлыке запуска или в настройках базы. - Обновите документацию для пользователей: объясните, как переключить тему вручную (через меню «Настройки» → «Интерфейс»).
Типичные ошибки
- Использование
WebЦвета.Белыйв коде. Всегда заменяйте наЦветФонаФормы()илиНеопределено. - Игнорирование режима совместимости. Если конфигурация работает в режиме совместимости с версией 8.3.10, тёмная тема может не поддерживаться, и настройки темы будут игнорироваться. Проверьте свойство
РежимСовместимостиИнтерфейса. - Жёсткая привязка к цветам в макетах. В табличных документах используйте условное оформление, а не абсолютные цвета.
Меха
Расширение «НОПик» для 1С — встраиваемый коннектор к внешнему AI с интеллектуальным поиском по базе. Задавайте вопросы обычными словами - AI сам найдёт нужное. 45 дней бесплатно.
Попробовать НОПик →
Знаете ответ на такие вопросы не хуже автора статьи? Пройдите бесплатную анонимную проверку уровня на infolimp.ru - 3 практических задачи, 15 минут, публичный токен-профиль, который можно показать работодателю или заказчику. Без регистрации по почте.
Проверить свой уровень бесплатно →
Попробовать НОПик →
Проверить свой уровень бесплатно →