Разработка и Конфигурация · 11 мин
Как изменить цвет формы в 1С
Как изменить цвет формы в 1С: программное изменение цвета фона и текста, условное оформление списков и таблиц, типовые ошибки и примеры кода.
Внешний вид формы в 1С можно менять двумя принципиально разными способами: через настройки условного оформления без изменения кода и программно — через свойства элементов формы или реквизиты условного оформления. Выбор зависит от того, что именно нужно раскрасить: весь фон формы, отдельное поле, строки списка по условию или кнопки.
Важно понимать ограничение платформы: управляемые формы 1С используют клиентскую тему оформления, и полностью перекрасить «всю форму» как веб-страницу нельзя. Зато можно управлять цветом фона и текста отдельных элементов — полей, надписей, таблиц, групп, — а также строк и ячеек динамических списков через условное оформление.
Ниже разобраны практические сценарии: изменение цвета элемента в конфигураторе и в коде, раскраска строк списка по условию, работа с обычными формами старых конфигураций и проверка результата. Примеры кода приведены для управляемых форм — они работают на большинстве актуальных конфигураций (БП, УТ, ERP, ЗУП).
Что именно можно перекрасить в форме 1С
Прежде чем менять цвет, определите объект. В управляемой форме доступны три основных свойства внешнего вида: ЦветФона — заливка области элемента, ЦветТекста — цвет шрифта надписей и содержимого полей, ЦветРамки — обводка. Эти свойства есть у полей ввода, надписей, кнопок, таблиц и групп.
Значение цвета задаётся тремя способами: абсолютный цвет Новый Цвет(255, 0, 0) (RGB), элемент стиля ЭлементыСтиля.ЦветОсобогоТекста и веб-цвет из перечисления WebЦвета.СветлоСерый. Элементы стиля предпочтительнее: они автоматически подстраиваются под тему оформления клиента и не «ломаются» при её смене.
Ограничение, о котором часто забывают: фон самой формы (окна) в управляемом интерфейсе не настраивается. Если требуется визуально выделить форму целиком, приём — создать корневую группу с нужным цветом фона и поместить в неё остальные элементы, либо изменить цвет фона ключевых полей.
Как изменить цвет элемента в конфигураторе без кода
Самый простой способ — статическая настройка в редакторе формы. Откройте конфигуратор, найдите нужную форму объекта (например, «Справочник.Номенклатура.Форма.ФормаЭлемента»), выделите элемент в дереве элементов формы и откройте палитру свойств (правый клик — «Свойства»).
В списке свойств найдите «ЦветФона», «ЦветТекста» или «ЦветРамки» и выберите значение: из палитры абсолютных цветов, из списка веб-цветов или из элементов стиля. Изменение сохраняется в конфигурации и применяется ко всем пользователям после обновления базы.
- 1Откройте конфигуратор и разверните дерево конфигурации до нужной формы
- 2Откройте форму двойным щелчком и выделите элемент в дереве элементов
- 3Откройте палитру свойств и найдите ЦветФона или ЦветТекста
- 4Выберите цвет: абсолютный, веб-цвет или элемент стиля
- 5Сохраните конфигурацию, обновите базу (F7) и проверьте форму в режиме 1С:Предприятие
Этот способ требует права на изменение конфигурации и, если конфигурация на поддержке у поставщика, снятия формы с поддержки. Учтите: при обновлении типовой конфигурации доработанная форма может вызвать конфликт объединения, и изменения придётся переносить вручную.
Как изменить цвет программно в коде формы
Динамическое изменение — когда цвет зависит от данных — делается в модуле формы. Обращение к элементу выполняется через коллекцию Элементы, а цвет задаётся конструктором Новый Цвет(Красный, Зелёный, Синий) со значениями от 0 до 255.
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Красный фон поля "Комментарий"
Элементы.Комментарий.ЦветФона = Новый Цвет(255, 200, 200);
// Цвет текста из элементов стиля
Элементы.Комментарий.ЦветТекста = ЭлементыСтиля.ЦветОсобогоТекста;
КонецПроцедурыТиповой сценарий — подсветка обязательного незаполненного поля. В обработчике ПриИзменении или в процедуре проверки заполнения сравнивайте значение с пустым и переключайте цвет: заполнено — стандартный фон (элемент стиля или Новый Цвет() как авто), не заполнено — предупреждающий оттенок.
Обратите внимание на контекст выполнения. Свойства элементов формы доступны и на клиенте, и на сервере, но конструктор Новый Цвет и WebЦвета на тонком клиенте в серверных процедурах работают корректно. Если код выполняется в &НаСервереБезКонтекста, обращение к Элементы недоступно — используйте процедуры с контекстом формы.
Как раскрасить строки списка по условию
Наиболее востребованная задача — выделить цветом строки динамического списка: просроченные заказы, неоплаченные счета, контрагентов с задолженностью. Для этого используется условное оформление формы, а не перебор строк — динамический список не даёт прямого доступа к своим строкам.
В конфигураторе: откройте форму списка, в палитре свойств формы найдите «УсловноеОформление» и добавьте элемент. Задайте оформление (цвет фона или текста), отбор (например, «СуммаДолга > 0») и оформляемые поля — колонки списка, к которым применяется цвет. Если оформляемые поля не указать, условие может не сработать или примениться не к тем колонкам.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементУО = УсловноеОформление.Элементы.Добавить();
// Оформление
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 220, 220));
// Условие
Отбор = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Просрочен");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Истина;
// Оформляемое поле
Поле = ЭлементУО.Поля.Элементы.Добавить();
Поле.Поле = Новый ПолеКомпоновкиДанных("Список");
КонецПроцедурыВ типовых конфигурациях пользователю часто доступна раскраска списка без конфигуратора: в форме списка откройте «Ещё — Настроить список» (или «Изменить форму») и добавьте условие оформления. Возможности зависят от конфигурации, но для стандартных отборов и цветов этого достаточно.
Способы изменить цвет
Подходит для постоянного оформления. Требует доработки конфигурации и снятия с поддержки
Когда цвет зависит от данных объекта. Гибко, но тоже доработка конфигурации
Стандартный способ раскраски строк списков по условию; часто доступен пользователю без конфигуратора
Особенности обычных форм и такси-интерфейса
В старых конфигурациях на обычных формах (режим совместимости 8.2) механика та же — свойства ЦветФона и ЦветТекста есть у элементов, а для табличных полей условное оформление задаётся в свойствах табличного поля. Дополнительно в обычных формах доступно событие ПриВыводеСтроки, где можно красить ячейки индивидуально через ОформлениеЯчеек.
В интерфейсе «Такси» учитывайте, что пользователь мог включить другую тему оформления или масштаб. Абсолютные яркие цвета (чистый красный, кислотный жёлтый) выглядят агрессивно и плохо сочетаются со стандартной палитрой. Практическое правило: для подсветки используйте приглушённые оттенки — светло-красный, светло-жёлтый, светло-зелёный, — а для акцентов текста — элементы стиля.
Если цвет нужен для группы пользователей (например, у кассиров своя подсветка), не дублируйте форму — задавайте цвет программно в ПриСозданииНаСервере по роли пользователя через РольДоступна() или по функциональной опции.
Типичные ошибки и проверка результата
Частая ошибка — условное оформление «не работает», потому что не заполнены оформляемые поля или в отборе указано поле, которого нет в запросе динамического списка. Проверяйте: поле отбора должно присутствовать в выборке списка, а оформляемое поле — быть колонкой таблицы формы.
Вторая ошибка — попытка изменить цвет в событии, которое не вызывается при обновлении данных. Например, ПриОткрытии срабатывает один раз; если цвет зависит от редактируемого поля, логику нужно ставить в ПриИзменении этого поля. Третья — присвоение цвета не тому элементу: у поля ввода и у его надписи разные элементы, и красить надо именно тот, который видит пользователь.
Как проверить результат
Цвет применён к нужному элементу сразу или при выполнении условия
Цвет не меняется или применён не к тому элементу
Цвет переключается при изменении контрольного поля
Цвет застыл в одном состоянии
При смене темы элементы со стилевыми цветами выглядят корректно
Абсолютные цвета конфликтуют с темой, текст нечитаем
Перед переносом доработки в рабочую базу проверьте форму под пользователем с целевыми правами: у части пользователей могут отличаться настройки видимости элементов, и раскрашенное поле может быть им недоступно. Сами изменения цвета безопасны для данных — они затрагивают только представление, — но любая доработка типовой формы усложняет последующие обновления.
Что важно запомнить
Цвета элементов формы меняются свойствами ЦветФона, ЦветТекста и ЦветРамки — в конфигураторе или кодом. Строки списков красятся только через условное оформление с указанием отбора и оформляемых полей. Фон всей управляемой формы изменить нельзя. Предпочитайте элементы стиля абсолютным цветам и проверяйте результат в режиме Предприятия под реальным пользователем.
Частые вопросы
Можно ли изменить цвет фона всей формы целиком?
В управляемых формах — нет, фон окна определяется темой клиентского приложения. Обходной приём: поместить содержимое в корневую группу и задать цвет фона ей, либо изменить цвета ключевых полей. Пользователь также может выбрать другую тему оформления в настройках клиента.
Почему условное оформление списка не срабатывает?
Чаще всего не заполнен список оформляемых полей либо поле из отбора не входит в запрос динамического списка. Также проверьте порядок элементов условного оформления: более поздний элемент может перекрывать оформление предыдущего.
Как вернуть стандартный цвет элемента после подсветки?
Присвойте пустой конструктор: Элементы.Поле.ЦветФона = Новый Цвет(); — это автоцвет, который следует за темой оформления. Не используйте для «сброса» белый цвет: он зафиксирует заливку и нарушит вид при смене темы.
Можно ли раскрасить список без доработки конфигурации?
Во многих типовых конфигурациях — да. В форме списка откройте «Ещё — Настроить список» или «Изменить форму» и добавьте условие оформления с отбором и цветом. Набор доступных условий зависит от конфигурации, но стандартные сценарии подсветки по значению поля обычно покрываются.
Изменения цвета пропадут при обновлении типовой конфигурации?
Настройки, сделанные пользователем через «Изменить форму», обычно сохраняются. Доработки формы в конфигураторе при обновлении могут вызвать конфликт объединения — их придётся переносить вручную. Чтобы минимизировать риск, выносите логику в расширение конфигурации вместо изменения типовой формы.
Как задать цвет в формате RGB или по веб-имени?
RGB задаётся конструктором Новый Цвет(К, З, С) со значениями 0–255. Именованные веб-цвета доступны через коллекцию WebЦвета, например WebЦвета.СветлоСерый. Для согласованности с интерфейсом предпочтительнее элементы стиля из коллекции ЭлементыСтиля.