Цвет фона в 1С: поле, строка списка, ячейка и вся форма

· 9 мин

Содержание

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

Главное ограничение сразу: обычный пользователь не меняет цвет фона интерфейса «по вкусу» через настройки. Цвета задаёт разработчик конфигурации. Если вы бухгалтер и хотите подсветить в списке нужные строки, смотрите раздел про условное оформление. Если вы разработчик, читайте всё подряд.

Статья про управляемые формы платформы 8.3 с интерфейсом «Такси».

ЗадачаСпособНужен конфигуратор
Покрасить одно поле или группуСвойство ЦветФона элементаДа
Подсветить строки по условиюУсловное оформлениеДа, либо настройки отчёта в режиме 1С:Предприятие
Менять цвет в зависимости от данных документаКод в обработчике формыДа
Перекрасить все поля одного видаЭлемент стиляДа
Покрасить ячейку печатной формы или отчётаЦветФона области табличного документаДа

С чего начать: где живёт свойство «Цвет фона»

В конфигураторе откройте нужную форму, выделите элемент на закладке «Элементы» и посмотрите палитру свойств. У поля формы, группы и некоторых декораций есть свойство ЦветФона. Выберите цвет из палитры или из стиля, и фон поля изменится при следующем открытии формы.

Здесь два типа значения, и путают их часто:

  • 🎨 Обычный цвет: конкретный RGB или веб-цвет. Он одинаков во всех стилях.
  • 🧩 Цвет из стиля: ссылка на элемент стиля. При смене стиля конфигурации цвет изменится вместе с ним.

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

Если фон задан в свойстве, а поле всё равно белое, проверьте, не перекрывает ли его условное оформление формы. Оно применяется поверх свойств элемента.

Как покрасить строки и ячейки по условию

Условное оформление нужно, когда цвет зависит от данных: просроченный счёт красным, оплаченный зелёным, остаток ниже минимума жёлтым. Это самый частый сценарий, и кода тут не нужно.

Настройка в конфигураторе

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

Если динамический список построен на запросе, оформление можно задать и в настройках самого списка: тогда оно действует независимо от формы.

Отчёты и пользовательские настройки

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

Правила условного оформления применяются сверху вниз. Если два правила красят одну ячейку, победит нижнее. Порядок меняйте стрелками рядом со списком правил.

Для подсветки строк по цвету даты удобно сочетать два правила: общее (серый фон для проведённых) и точечное (красный для просроченных). Точечное ставьте ниже.

Какие цвета выбирать, чтобы форма не превратилась в ёлку

Подсветка работает, пока её мало. Когда в списке красные, жёлтые, зелёные и синие строки одновременно, глаз перестаёт различать смысл. Практики держатся простых правил.

  • 🎯 Один цвет — один смысл. Красный только для просрочки или ошибки, жёлтый для «требует внимания», зелёный для завершённого. Не смешивайте смыслы в разных формах.
  • 🔅 Светлые тона для фона. Бледно-жёлтый, светло-розовый, светло-зелёный читаются лучше насыщенных. Тёмный фон требует светлого текста, а это лишняя настройка.
  • 👁 Не только цвет. Часть пользователей плохо различает красный и зелёный. Дублируйте смысл значком, текстом статуса или жирным начертанием.
  • 🧮 Не больше трёх-четырёх оттенков на одну форму.

Пример для списка заказов: серый фон у закрытых, светло-жёлтый у ожидающих оплаты, светло-красный у просроченных. Три правила, три смысла, всё читается с одного взгляда.

Пошаговый пример: подсветить просроченные счета в списке

Задача: в списке счетов покрасить строки, у которых срок оплаты прошёл, а статус не «Оплачен». Допустим, в динамическом списке есть реквизиты СрокОплаты и Оплачен (булево). Названия у вас будут свои, подставьте их.

  1. Откройте форму списка в конфигураторе и перейдите к свойству «Условное оформление».
  2. Добавьте элемент и назовите его понятно, например «Просроченные счета». Название видно только разработчику, но через год вы скажете себе спасибо.
  3. Поле оформления оставьте пустым: тогда красится вся строка.
  4. Добавьте в отбор две строки, объединённые по «И»: Оплачен равно Ложь и СрокОплаты меньше текущей даты. Для сравнения с текущей датой удобнее передать её в параметр динамического списка и обновлять при открытии формы.
  5. В оформлении задайте «Цвет фона» светло-красным.
  6. Сохраните, загрузите изменения в базу, откройте список заново.

Условие «срок меньше текущей даты» в отборе динамического списка сравнивается с датой, которую вы передали при открытии. Если форма висит открытой всю ночь, утром подсветка будет вчерашней. Для рабочих списков это обычно не страшно, а для дашбордов обновляйте параметр по таймеру.

Если нужно красить не вся строка, а только колонку с суммой, добавьте в «Оформляемые поля» именно её. Остальные колонки останутся прежними.

Фон отдельной ячейки в таблице формы

Иногда красят не строку, а одну ячейку табличной части документа: например, поле «Цена» выделить, если она ниже себестоимости. Здесь условное оформление тоже подходит лучше свойства элемента.

Свойство ЦветФона колонки красит колонку целиком, во всех строках. Конкретную ячейку по значению красит только оформление с отбором. В отборе используйте путь к полю строки, а не к полю документа. Частая ошибка: указали поле шапки, и правило сработало на все строки сразу либо ни на одну.

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

Программное изменение цвета: код в форме

Код нужен, когда условие не выразить отбором: сложная логика, обращение к нескольким объектам, цвет по результату проверки. Обычно его пишут в обработчике ПриСозданииНаСервере или в процедуре, вызываемой после изменения данных.

Простая подсветка поля:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Объект.Сумма > 100000 Тогда
        Элементы.Сумма.ЦветФона = Новый Цвет(255, 250, 205);
    КонецЕсли;
КонецПроцедуры

Это работает для элементов формы. Свойство ЦветФона перезаписывается тем значением, что вы присвоили. Чтобы вернуть цвет по умолчанию, присвойте ему пустой цвет:

Элементы.Сумма.ЦветФона = Новый Цвет;

Условное оформление из кода

Если нужно красить строки списка или таблицы по условию, но логику проще писать кодом, добавьте правило программно:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Правило = УсловноеОформление.Элементы.Добавить();

    Поле = Правило.Поля.Элементы.Добавить();
    Поле.Поле = Новый ПолеКомпоновкиДанных("Сумма");

    Отбор = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сумма");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    Отбор.ПравоеЗначение = 100000;

    Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 250, 205));
КонецПроцедуры

Для табличной части в поле указывайте путь вместе с именем таблицы, например Объект.Товары.Сумма.

Типовые конфигурации

Форму типовой конфигурации (Бухгалтерия, ЗУП, УТ) правят только после включения возможности изменения, и это усложняет обновления. Для цвета фона лучше подходит расширение конфигурации : в нём можно перехватить ПриСозданииНаСервере и добавить подсветку, не снимая конфигурацию с поддержки. Расширения доступны с платформы 8.3.6.

Цвет, зависящий от данных, проще держать в условном оформлении, чем в коде: его видно в конфигураторе и не надо искать по модулям.

Ячейки печатных форм и табличных документов

В табличном документе цвет фона задаётся на уровне области. В макете выделите нужные ячейки, откройте палитру свойств и найдите настройку цвета фона. Для макета этого достаточно.

В коде область берут по адресу и присваивают ей цвет:

Область = ТабДок.Область("R2C1:R2C5");
Область.ЦветФона = Новый Цвет(220, 235, 250);

Строка R2C1:R2C5 читается так: строка 2, колонки с 1 по 5. Если у вас именованная область макета, используйте её имя.

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

Стили: перекрасить всё сразу

Стиль — это набор цветов, шрифтов и размеров для всей конфигурации. Если вы хотите, чтобы все обязательные поля отличались одним оттенком, заведите элемент стиля и подставляйте его в ЦветФона.

Порядок такой:

  1. В дереве конфигурации откройте ветку «Общие → Элементы стиля».
  2. Добавьте элемент типа «Цвет» и задайте ему значение.
  3. В свойстве нужного поля выберите этот элемент стиля вместо конкретного цвета.
  4. Теперь изменение значения в одном месте перекрасит все поля, которые на него ссылаются.

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

Из кода к элементу стиля обращаются через ЦветаСтиля:

Элементы.Сумма.ЦветФона = ЦветаСтиля.ИмяЭлемента;

Вместо ИмяЭлемента подставьте имя, которое вы дали в конфигураторе.

Веб-клиент и мобильное приложение

В тонком клиенте и веб-клиенте цвета фона, заданные свойствами, условным оформлением и стилями, отображаются одинаково. Отдельных настроек CSS в 1С нет: вы не подключаете таблицу стилей. Всё оформление идёт через механизмы платформы, поэтому «подправить стиль в браузере» не получится, да и после обновления страницы правка исчезнет.

Что полезно знать на практике:

  • 🌐 В браузере разные движки могут чуть по-разному передавать полупрозрачность и оттенки. Для обязательной подсветки берите насыщенный цвет.
  • 📱 В мобильном приложении используются формы, настроенные для мобильного клиента. Цвета из стиля там применяются, но состав доступных элементов и вид списков отличаются от десктопных. Проверяйте результат на устройстве.
  • 🖥 Если форма не открывается в браузере вовсе, причина обычно не в цвете, а в публикации базы.

Цвет не применился: что проверить

Если после настройки фона всё осталось по-старому, пройдите по списку сверху вниз.

Что видитеВероятная причинаЧто делать
Фон поля белый, хотя в свойстве цвет заданУсловное оформление формы перекрывает свойствоОткройте правила, найдите оформляемое поле, отключите лишнее
Правило есть, но строки не красятсяУсловие не выполняется или поле указано неверноПроверьте отбор и имя оформляемого поля, для табличной части нужен полный путь
Цвет не меняется после правки конфигурацииОткрыт старый сеанс или форма не перезагруженаЗакройте окно формы и откройте заново, при необходимости перезапустите клиент
Цвет есть в конфигураторе, но нет в «чистой» базе пользователяИзменения не загружены в рабочую базуОбновите конфигурацию базы данных
В отчёте нет вкладки «Условное оформление»Настройки закрыты разработчикомПопросите открыть настройки либо внесите правило в конфигурации
Светлый фон не виден на монитореСлишком бледный оттенокВозьмите насыщеннее, проверяйте на реальном мониторе

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

Подсветка не работает: быстрая проверка
Выполнено: 0 / 5

Частые вопросы

Может ли пользователь сам поменять цвет фона в 1С?
Общий цвет интерфейса пользователь не меняет: его задаёт стиль конфигурации. Подсветку строк в отчёте он настроит сам, если разработчик оставил доступными пользовательские настройки.
Чем отличается цвет фона от цвета текста?
Это два разных свойства: ЦветФона красит подложку, ЦветТекста — сами символы. Для читаемости их задают парой: на тёмном фоне светлый текст.
Можно ли красить строки без программирования?
Да, через условное оформление: отбор по условию и параметр «Цвет фона». Код нужен только для сложной логики.
Как вернуть цвет по умолчанию?
В свойстве уберите выбранный цвет либо удалите правило условного оформления. Из кода присвойте Новый Цвет.
Сохранится ли цвет фона при печати?
В печатной форме фон выводится, но на чёрно-белом принтере станет серым. Не используйте цвет как единственный признак.