Как вернуть цвет элемента формы (кнопки) по умолчанию в 1С?

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

При разработке интерфейсов на платформе 1С:Предприятие часто возникает задача динамического изменения оформления. Мы красим кнопки в яркие цвета, чтобы привлечь внимание пользователя к важным действиям, или меняем фон полей ввода в зависимости от корректности данных. Однако рано или поздно наступает момент, когда элементу нужно вернуть его первоначальный, «системный» вид. Попытка просто присвоить свойству ЦветФона значение Неопределено приводит к ошибке несоответствия типов. В этой статье мы подробно разберем, как правильно сбрасывать цветовые настройки и какие механизмы платформы для этого предусмотрены.

Метод 1: Использование пустого конструктора «Новый Цвет»

Самый простой и эффективный способ вернуть элементу цвет «по умолчанию» — это присвоить ему объект типа Цвет, инициализированный без параметров. В терминах платформы 1С это эквивалентно установке значения «Авто» в палитре цветов в конфигураторе.

Давайте проанализируем, как это работает в коде. Когда мы вызываем конструктор Новый Цвет() без аргументов, создается специальный объект, который сообщает платформе: «используй стандартные настройки оформления для этого типа элемента». Рассмотрим пример для управляемой формы:


// Устанавливаем специфический цвет (например, красный)
Элементы.КнопкаВыполнить.ЦветФона = Новый Цвет(255, 0, 0);

// Возвращаем цвет к исходному состоянию (Авто)
Элементы.КнопкаВыполнить.ЦветФона = Новый Цвет();

Этот способ универсален и работает для большинства элементов управления. Важно помнить, что именно отсутствие параметров в скобках делает цвет «автоматическим».

Метод 2: Использование системных цветов стиля

Иногда задача стоит иначе: нам нужно не просто сбросить цвет в «Авто», а явно установить цвет, который соответствует текущему стилю конфигурации. Для этого в платформе существует глобальный контекст ЦветаСтиля. Этот объект содержит предопределенные цвета, которые зависят от выбранной темы оформления системы.

Рассмотрим ситуацию, когда в конфигурации задан определенный корпоративный стиль. Если мы просто сбросим цвет через Новый Цвет(), элемент может принять стандартный серый цвет Windows, в то время как по стилю он должен быть синим. Чтобы избежать визуального диссонанса, используем следующий подход:


// Для обычных форм
ЭлементыФормы.КнопкаЗаказать.ЦветФонаКнопки = ЦветаСтиля.ЦветФонаКнопки;

// Для управляемых форм
Элементы.КнопкаЗаказать.ЦветФона = ЦветаСтиля.ЦветФонаКнопки;

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

Метод 3: Использование системных цветов Windows

Если ваше приложение должно максимально соответствовать настройкам операционной системы пользователя, можно воспользоваться объектом ЦветаWindows. Это позволяет динамически подстраиваться под цветовую схему ОС.

Проанализируем пример возврата цвета кнопки к стандарту Windows:


// Установка цвета кнопки как в настройках панели управления Windows
Элементы.ИмяКнопки.ЦветФона = ЦветаWindows.Кнопка;

Этот метод реже используется в современных управляемых приложениях, так как интерфейс «Такси» имеет свои стандарты отрисовки, но он незаменим при работе с обычными формами в режиме совместимости.

Метод 4: Условное оформление (лучшая практика для управляемых форм)

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

Выясним, как сделать это более элегантно. Вместо того чтобы писать код «если условие — покрась, иначе — сбрось», мы один раз настраиваем правило условного оформления:

  1. Перейдите на закладку «Условное оформление» в редакторе формы.
  2. Добавьте новый элемент оформления.
  3. В «Оформляемых полях» укажите вашу кнопку.
  4. В «Оформлении» выберите нужный Цвет фона.
  5. В «Условии» укажите реквизит формы, от которого зависит окраска.

Теперь, чтобы вернуть кнопке цвет по умолчанию, вам достаточно просто изменить значение реквизита в коде. Платформа сама «сбросит» оформление, как только условие перестанет выполняться. Это избавляет от необходимости вручную вызывать Новый Цвет().

Нюансы и тонкости

Рассмотрим несколько важных моментов, которые часто вызывают вопросы у разработчиков:

Подводя итог, можно сказать, что самым быстрым решением является Новый Цвет(), но для создания качественного и легко поддерживаемого интерфейса в управляемом приложении всегда стоит в первую очередь рассматривать Условное оформление.

← На главную