К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как изменить цвет кнопки в 1С

Как изменить цвет кнопки в 1С: настройка через конфигуратор, программное изменение ЦветФона и ЦветТекста, типичные ошибки и ограничения управляемых форм.

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

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

Ниже разобраны оба способа, ограничения платформы, проверка результата и типичные ошибки, из-за которых цвет «не применяется».

Какие кнопки в 1С можно перекрасить, а какие — нет

В управляемой форме существует несколько видов кнопок, и возможности их оформления различаются. Обычная кнопка формы (элемент «КнопкаФормы» с видом «ОбычнаяКнопка») поддерживает изменение цвета фона, текста и рамки. Кнопка по умолчанию (свойство «КнопкаПоУмолчанию») уже выделена платформой, и её оформление может частично переопределяться стилем.

Кнопки командной панели — самые проблемные. Если кнопка отображается как гиперссылка (что зависит от настроек командной панели и важности команды), цвет фона для неё не работает вовсе — платформа рисует её как текстовую ссылку. Чтобы кнопка выглядела как кнопка и принимала цвет, её нужно вынести из командной панели в обычную группу формы или изменить свойство «Отображение».

Кнопки в шапке формы, кнопки навигации и стандартные кнопки панелей («Записать», «Провести») перекрашивать не рекомендуется: это ломает единый стиль интерфейса и сбивает пользователей, привыкших к типовому расположению и виду команд.

Способ 1: изменить цвет кнопки через конфигуратор

Статический способ подходит, когда цвет кнопки постоянен и не зависит от данных: например, кнопка «Удалить строки» всегда должна быть красноватой, а «Отправить на согласование» — акцентной. Настройка выполняется один раз и не требует кода.

Откройте конфигуратор, найдите нужный объект (документ, справочник или обработку), откройте его форму. В дереве элементов формы выделите кнопку. В палитре свойств (открывается по правому клику — «Свойства» или по Alt+Enter) найдите группу оформления: ЦветФона, ЦветТекста, ЦветРамки.

Кликните по нужному свойству и задайте цвет одним из способов: выберите из палитры абсолютных цветов, укажите RGB-компоненты или используйте цвет стиля. Цвет стиля предпочтительнее, если вы хотите, чтобы оформление подстраивалось под тему интерфейса; абсолютный цвет даёт точный оттенок, но не меняется при смене стиля.

Порядок действий в конфигураторе
  1. 1
    Откройте форму объекта в конфигураторе и выделите нужную кнопку в дереве элементов
  2. 2
    Откройте палитру свойств (Alt+Enter или правый клик — Свойства)
  3. 3
    Найдите свойства ЦветФона, ЦветТекста, ЦветРамки и задайте нужные значения
  4. 4
    Если кнопка находится в командной панели и цвет не применяется, перенесите её в обычную группу формы
  5. 5
    Сохраните конфигурацию, обновите конфигурацию базы данных (F7) и проверьте результат в режиме 1С:Предприятие

Способ 2: программное изменение цвета кнопки

Программный способ нужен, когда оформление зависит от состояния данных: кнопка «Оплатить» подсвечивается, пока документ не оплачен, кнопка печати становится неактивной и серой после подписания и т.п. Изменение выполняется в модуле формы через коллекцию Элементы.

Базовый синтаксис выглядит так:

&НаКлиенте

Процедура УстановитьОформлениеКнопки()

Элементы.КнопкаОплатить.ЦветФона = Новый Цвет(255, 220, 220);

Элементы.КнопкаОплатить.ЦветТекста = Новый Цвет(120, 0, 0);

КонецПроцедуры

Конструктор Новый Цвет(Красный, Зеленый, Синий) принимает значения от 0 до 255. Вместо абсолютного цвета можно использовать цвета стиля через ЦветаСтиля, например ЦветаСтиля.ЦветАкцента — тогда оформление останется согласованным с типовым интерфейсом. Чтобы вернуть оформление по умолчанию, присвойте свойству значение Новый Цвет() (пустой цвет).

Типичное место для такого кода — обработчик ПриОткрытии или процедура, вызываемая после изменения данных. Если цвет зависит от реквизита объекта, логично вызывать установку оформления из обработчика изменения этого реквизита и из ПриОткрытии, чтобы кнопка была правильно окрашена сразу при открытии формы.

bsl
&НаКлиенте
Процедура ОбновитьЦветКнопки()
    Если Объект.Оплачен Тогда
        Элементы.КнопкаОплатить.ЦветФона = Новый Цвет(); // сброс
    Иначе
        Элементы.КнопкаОплатить.ЦветФона = Новый Цвет(255, 200, 200);
    КонецЕсли;
КонецПроцедуры

Использование условного оформления и альтернативные варианты

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

Первый вариант — свойство КнопкаПоУмолчанию: платформа сама визуально выделяет главное действие формы, и пользователю не нужно искать нужную кнопку. Второй вариант — картинка кнопки: свойство Картинка и Отображение позволяют добавить иконку, которая привлекает внимание заметнее, чем цвет фона. Третий вариант — свойство Важность для команд: оно управляет тем, попадёт ли кнопка в видимую часть командной панели или в подменю «Ещё».

Сравнение способов выделения кнопки

Цвет фона (ЦветФона)

Подходит для одиночных обычных кнопок формы. Ограничение: не работает для кнопок-гиперссылок в командной панели и может выглядеть чужеродно в типовом интерфейсе.

Кнопка по умолчанию

Подходит для главного действия формы. Платформа выделяет её сама, стиль не нарушается. Ограничение: только одна кнопка на форму или группу.

Картинка на кнопке

Подходит для привлечения внимания и быстрого распознавания действия. Ограничение: требует подготовленной картинки в библиотеке и аккуратного подбора отображения.

Важность команды

Подходит для управления видимостью кнопок в командной панели. Ограничение: не меняет цвет, влияет только на расположение.

Почему цвет не применяется: типичные причины

Самая частая жалоба — «задал ЦветФона, но кнопка не изменилась». Причины почти всегда одни и те же. Первая: кнопка находится в командной панели и отображается как гиперссылка — у гиперссылки нет фона, поэтому свойство игнорируется. Решение — перенести кнопку в обычную группу формы или изменить её отображение.

Вторая причина — код установки цвета выполняется в контексте, где элемент формы недоступен, либо обращение идёт к неправильному имени элемента. Проверьте имя кнопки в дереве элементов: программное обращение идёт именно по имени элемента формы, а не по заголовку. Третья причина — цвет переопределяется позже: другой обработчик или типовой код подсистемы сбрасывает оформление после вашего кода. В этом случае перенесите установку цвета в более позднюю точку, например в конец ПриОткрытии.

Четвёртая причина — различия клиентов. Отображение оформления в тонком клиенте и веб-клиенте может отличаться, а в некоторых версиях платформы отдельные свойства оформления для кнопок поддерживаются не полностью. Если оформление критично, проверяйте его во всех клиентах, которые используются в вашей организации.

Типичные ошибки
01
Установка ЦветФона для кнопки-гиперссылки в командной панели — свойство игнорируется, кнопку нужно перенести в обычную группу
02
Обращение к элементу по заголовку вместо имени — возникает ошибка или изменение применяется не к той кнопке
03
Использование ярких кислотных цветов — интерфейс становится нечитаемым, пользователи игнорируют такие кнопки
04
Установка цвета только в ПриСозданииНаСервере без учёта последующих изменений данных — оформление устаревает после действий пользователя
05
Перекраска стандартных кнопок Записать и Провести — ломается привычный интерфейс и возрастает число ошибок пользователей

Как проверить результат и не навредить интерфейсу

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

Отдельно оцените читаемость: текст на кнопке должен контрастировать с фоном. Светло-серый текст на белом фоне или тёмный текст на тёмном фоне делают кнопку непригодной. Если вы задаёте ЦветФона, почти всегда стоит заодно задать и ЦветТекста.

Контрольные точки

Как проверить результат

Внешний вид кнопки при открытии формы
Норма

Кнопка окрашена сразу, текст читается, цвет соответствует задуманному

Тревожный признак

Кнопка стандартного вида — значит, цвет не применился (проверьте тип кнопки и имя элемента)

Поведение при изменении данных
Норма

Цвет обновляется в соответствии с логикой (например, сбрасывается после оплаты)

Тревожный признак

Цвет остаётся старым — код обновления не вызывается из нужных обработчиков

Отображение в другом клиенте
Норма

Оформление выглядит сопоставимо в тонком и веб-клиенте

Тревожный признак

В одном из клиентов цвет игнорируется — нужна альтернатива (картинка, важность)

Граница безопасной самостоятельной работы: изменение цвета кнопки — безопасная операция, она не затрагивает данные. Но если кнопка принадлежит типовой конфигурации на поддержке, любое изменение формы потребует аккуратности при обновлениях: доработка может конфликтовать с обновлённой формой поставщика. Перед изменением типовой формы оцените, нельзя ли решить задачу расширением конфигурации — это стандартный механизм, который не снимает конфигурацию с поддержки и упрощает обновления.

Часто задаваемые вопросы

Можно ли изменить цвет кнопки без доступа к конфигуратору?

Нет. Оформление элементов формы задаётся в конфигураторе или кодом встроенного языка. Пользователь в режиме 1С:Предприятие может менять только общие настройки интерфейса (например, вариант масштаба), но не цвет отдельных кнопок.

Почему свойство ЦветФона задано, но кнопка осталась белой?

Чаще всего кнопка расположена в командной панели и отображается как гиперссылка — у таких кнопок фон не рисуется. Перенесите кнопку в обычную группу формы. Также проверьте, не сбрасывает ли оформление другой код, выполняющийся после вашего.

Как вернуть кнопке стандартный цвет?

Присвойте свойству пустой цвет: Элементы.Кнопка1.ЦветФона = Новый Цвет(); — платформа вернёт оформление по умолчанию в соответствии с текущим стилем. То же относится к ЦветТекста и ЦветРамки.

Можно ли задать цвет кнопки через цвет стиля, а не RGB?

Да. В конфигураторе в палитре свойств цвет выбирается из вкладки стилевых цветов, а в коде используется коллекция ЦветаСтиля, например ЦветаСтиля.ЦветАкцента. Такой подход сохраняет единообразие с типовым интерфейсом и корректно работает при смене темы.

Работает ли изменение цвета кнопок в обычных формах?

В обычных формах (устаревший режим) механизм другой: оформление кнопок там ограничено, и цвет фона кнопки, как правило, не настраивается. Основной инструмент в обычных формах — надписи и картинки. Все описанные в статье приёмы относятся к управляемым формам.

Как подсветить кнопку только при определённом условии?

Вынесите установку цвета в отдельную процедуру модуля формы, проверяющую условие (например, значение реквизита объекта). Вызывайте её из обработчиков ПриОткрытии и из обработчика изменения соответствующего реквизита. При выполнении условия задавайте цвет, при нарушении — сбрасывайте его пустым значением.

Итог

Что важно запомнить

Цвет кнопки в 1С задаётся свойствами ЦветФона, ЦветТекста и ЦветРамки — в конфигураторе или программно через Элементы.ИмяКнопки. Полноценно это работает для обычных кнопок формы; кнопки-гиперссылки командной панели цвет фона игнорируют. Для динамической подсветки выносите установку оформления в отдельную процедуру, а в типовых конфигурациях предпочитайте расширения прямой доработке.