Разработка и Конфигурация · 10 мин
Как задать цвет в 1С: все рабочие способы с примерами
Способы задать цвет в 1С: конструктор Цвет, WebЦвета, RGB, цвета стиля и условное оформление списков. Примеры кода, типичные ошибки и проверка результата.
Цвет в 1С встречается везде: от подсветки строк документа до оформления кнопок и диаграмм. При этом у платформы нет единственного «правильного» способа — выбор зависит от того, где именно нужно изменить окраску: в программном коде, в настройках формы или в условном оформлении динамического списка.
Основной объект для работы с цветом — тип Цвет (Color). Его можно создать тремя путями: из предопределённых значений коллекций WebЦвета и WindowsЦвета, по составляющим RGB или через конструктор Новый Цвет(Красный, Зеленый, Синий). Дополнительно существуют цвета стиля, которые привязаны к оформлению конфигурации и автоматически меняются при смене стиля.
Ниже разобраны все рабочие варианты с примерами кода, ограничениями каждого подхода и способами проверить результат. Материал применим к управляемым формам актуальных версий платформы 1С:Предприятие 8.3; отдельные оговорки для обычных форм даны в конце.
Способы задания цвета: какой выбрать
Прежде чем писать код, определите, где должен появиться цвет. Если это разовая подсветка элемента формы — достаточно свойства ЦветФона или ЦветТекста. Если нужно раскрасить строки списка по условию (например, просроченные заказы) — правильный инструмент условное оформление. Если цвет должен соответствовать общему оформлению конфигурации — берите цвета стиля.
Сравнение вариантов
Полный контроль над оттенком. Подходит для точного фирменного цвета. Минус: значения «зашиты» в код и не меняются при смене стиля.
Готовая палитра именованных цветов (Красный, СветлоСерый и др.). Быстро и читаемо, но набор фиксирован.
Цвет подстраивается под стиль конфигурации. Рекомендуется для типовых решений, но нужно знать имена элементов стиля.
Настраивается без кода, работает в динамических списках. Не подходит для произвольной логики вне списков.
Задание цвета в коде: RGB, WebЦвета и WindowsЦвета
Самый универсальный способ — конструктор с тремя числами от 0 до 255: красная, зелёная и синяя составляющие. Например, мягкий жёлтый фон для поля ввода:
Элементы.Комментарий.ЦветФона = Новый Цвет(255, 250, 205);
Если нужен стандартный оттенок, проще воспользоваться коллекцией WebЦвета — она содержит именованные цвета вроде WebЦвета.Красный, WebЦвета.ЗеленыйЛес, WebЦвета.СветлоСерый. Коллекция WindowsЦвета даёт системные цвета, но в управляемом интерфейсе применяется редко.
Элементы.СтатусОплаты.ЦветТекста = WebЦвета.ТемноКрасный;
Элементы.Шапка.ЦветФона = WebЦвета.СветлоЗолотистый;
Обратите внимание: значения RGB пишутся без кавычек и без символа «#» — это не веб-строка вида #FF0000. Если вы скопировали шестнадцатеричный код из графического редактора, его нужно разбить на три пары и перевести каждую в десятичное число.
Цвета стиля: когда оформление должно быть единым
В типовых конфигурациях оформление централизовано: цвета хранятся в стиле, а код ссылается на них по имени через коллекцию ЦветаСтиля. Такой подход гарантирует, что при смене темы оформления все элементы перекрасятся согласованно.
Элементы.Предупреждение.ЦветТекста = ЦветаСтиля.ЦветОсобогоТекста;
Имена доступных элементов стиля зависят от конфигурации. Посмотреть их можно в конфигураторе: откройте ветку «Общие → Стили», выберите используемый стиль и изучите список элементов. В типовых решениях встречаются, например, «ЦветТекстаПоля», «ЦветОсобогоТекста», «ЦветФонаПредупреждения» — точный состав отличается.
Если имя элемента стиля указано неверно, платформа выдаст ошибку «Поле объекта не обнаружено». Поэтому перед использованием проверьте имя в конфигураторе, а не копируйте его из примеров для другой конфигурации.
Цвет элементов формы: фон, текст, рамка
У элементов управляемой формы есть три основных цветовых свойства: ЦветФона, ЦветТекста и ЦветРамки. Устанавливать их можно как в конфигураторе (в палитре свойств элемента), так и программно в обработчиках формы.
Типичный сценарий — динамическая подсветка поля при ошибке заполнения. Логика выглядит так: при проверке значения меняем цвет фона, при исправлении — возвращаем исходный. Чтобы вернуть «цвет по умолчанию», присвойте свойству значение Новый Цвет без параметров либо сохраните исходный цвет в переменную при открытии формы.
- 1Откройте модуль формы и найдите обработчик, где меняется состояние (например, ПриИзменении поля).
- 2Присвойте свойству ЦветФона нужное значение: Новый Цвет(255, 230, 230) для мягкого красного.
- 3Добавьте обратную ветку: при корректном значении верните исходный цвет.
- 4Запустите режим предприятия и проверьте оба состояния — ошибочное и нормальное.
- 5Убедитесь, что цвет не мешает читать текст: тёмный текст на тёмном фоне — частая промашка.
Учтите ограничение: не все элементы поддерживают все цветовые свойства. Например, у поля-надписи нет рамки, а у некоторых кнопок цвет фона игнорируется в зависимости от вида. Если присвоение «не срабатывает» без ошибки — вероятно, элемент просто не отображает это свойство.
Условное оформление списков без программирования
Самая частая практическая задача — раскрасить строки списка документов или справочника по условию: неоплаченные счета красным, выполненные зелёным. Для этого не нужен код: достаточно настроить условное оформление динамического списка.
В конфигураторе откройте форму списка, найдите реквизит списка, перейдите в его свойство «УсловноеОформление» и добавьте элемент настройки. Укажите отбор (например, «Оплачен = Ложь»), оформление (Цвет фона или Цвет текста) и при необходимости список оформляемых полей. Если список оформляемых полей пуст — цвет применится ко всей строке.
В пользовательском режиме аналогичная настройка доступна через «Ещё → Настроить список» на вкладке «Условное оформление» — это удобно, когда изменения в конфигурацию вносить нельзя.
// Программное условное оформление списка
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Просрочен");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;Цвет в табличном документе и диаграммах
При формировании печатных форм и отчётов через табличный документ цвет задаётся для областей: Область.ЦветФона, Область.ЦветТекста, Область.ЦветРамки. Синтаксис тот же — любой из способов создания объекта Цвет.
ОбластьИтог = ТабДок.Область("R" + НомерСтроки + "C1");
ОбластьИтог.ЦветФона = WebЦвета.СветлоСерый;
В диаграммах цвета серий и точек платформа обычно назначает автоматически из палитры. Переопределить их можно через свойства серии, но делать это стоит только при явной необходимости — авто-палитра гарантирует, что соседние серии различимы.
Проверка результата и ограничения
После внесения изменений проверьте три вещи: цвет появился в нужном месте, текст остался читаемым, цвет корректно сбрасывается при смене состояния. Особенно внимательно тестируйте сценарии, где условие оформления перестаёт выполняться, — «залипший» цвет после исправления данных сбивает пользователей сильнее, чем его отсутствие.
Учитывайте, что часть пользователей различает цвета хуже (далтонизм). Не кодируйте смысл только цветом: дублируйте его текстом, значком или пометкой. Красная строка «Просрочен» информативнее, чем просто красная строка.
Как проверить результат
Элемент окрашен в заданный оттенок в режиме предприятия
Цвет не меняется — проверьте, поддерживает ли элемент это свойство
При исправлении данных цвет возвращается к исходному
Цвет «залипает» — нет ветки сброса
Текст контрастен на новом фоне
Текст сливается с фоном
Красятся только строки, подпадающие под отбор
Красятся все строки — проверьте настройку отбора
Частые вопросы о цвете в 1С
Как задать цвет по шестнадцатеричному коду вида #3399FF?
Платформа не принимает hex-строки напрямую. Разбейте код на три пары символов, переведите каждую из шестнадцатеричной в десятичную систему и передайте в конструктор: Новый Цвет(51, 153, 255). Для перевода удобно использовать любой онлайн-конвертер цветов или калькулятор в режиме программиста.
Можно ли задать цвет без изменения конфигурации?
Да, для списков. В режиме предприятия откройте «Ещё → Настроить список» и добавьте условное оформление с нужным отбором и цветом. Настройка сохранится для вашего пользователя. Изменить цвет произвольной кнопки или поля без доработки конфигурации нельзя.
Почему присвоение ЦветФона не даёт видимого эффекта?
Наиболее вероятные причины: элемент не поддерживает это свойство в текущем виде, оформление переопределяется условным оформлением списка, либо код выполняется на клиенте, а элемент изменён на сервере без обновления. Проверьте также, что вы обращаетесь к элементу формы (Элементы.Имя), а не к данным реквизита.
Чем цвета стиля лучше «жёстких» RGB-значений?
Цвет стиля автоматически меняется при смене темы оформления конфигурации и гарантирует единообразие с типовыми элементами. Жёсткий RGB останется прежним при любом стиле и может выбиваться из общего оформления. Для доработок типовых конфигураций предпочтительнее ЦветаСтиля.
Как раскрасить ячейки табличной части по-разному?
Используйте условное оформление формы (свойство формы «УсловноеОформление») с отбором по данным табличной части и указанием конкретного оформляемого поля. Программно перекрашивать отдельные ячейки таблицы формы напрямую нельзя — только через механизм условного оформления.
Работают ли эти примеры в обычных формах?
Частично. Тип Цвет и конструктор Новый Цвет доступны везде, но состав свойств элементов обычных форм отличается, а условное оформление там реализовано иначе. Для обычных форм сверяйте имена свойств с синтакс-помощником под вашу версию платформы.
Что важно запомнить
Цвет в коде создаётся через Новый Цвет(R,G,B), WebЦвета или ЦветаСтиля. Для подсветки строк списков используйте условное оформление — программно или через «Настроить список». Всегда проверяйте сброс цвета при смене состояния и читаемость текста на новом фоне.