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