Цвет выделенной строки в 1С: настройка, СКД и код формы

· 8 мин

Содержание

Частое заблуждение: цвет строки в 1С якобы «зашит» в платформу и его нельзя поменять. Можно. Но надо различать две вещи: цвет подсветки текущей строки под курсором и цвет строк, которые закрашиваются по условию. Первое задаёт стиль интерфейса, второе настраивается через условное оформление.

На практике почти всегда нужно второе: подсветить просроченные счета, красным пометить отрицательные остатки, выделить строки определённого контрагента. Это делается в трёх местах: в настройках формы или списка, в схеме компоновки данных (СКД) отчёта и программно в модуле формы. Ниже все три способа для платформы 8.3 с интерфейсом «Такси».

Что именно красит платформа и где лежат настройки

В 1С цвет ячейки складывается из нескольких слоёв. Платформа берёт цвета из стиля интерфейса, поверх них накладывает оформление, заданное разработчиком, а в конце применяет условное оформление.

Выделенную курсором строку платформа рисует сама. Её цвет определяется стилем, а не данными, поэтому условное оформление «перекрасить строку под курсором» не заменяет. Оно красит строки по условию, а курсор показывает текущую поверх.

Где живут настройки цвета:

  • 🎨 Форма списка и документа — свойство «Условное оформление» в редакторе формы (конфигуратор).
  • 📊 Отчёт на СКД — вкладка «Условное оформление» в настройках компоновки.
  • 💻 Код — коллекция УсловноеОформление формы, заполняется на сервере при создании формы.
  • 🖌 Стиль — элементы стиля, на которые ссылаются цвета; смена темы меняет их все разом.

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

Способ 1. Условное оформление в форме: без кода

Это самый безопасный способ. Он не требует программирования и сохраняется вместе с конфигурацией.

Пошагово в конфигураторе

  1. Откройте нужную форму (например, форму списка документа) в конфигураторе.
  2. В окне редактора формы найдите свойство формы «Условное оформление» и откройте его. Нужен именно список оформлений формы, не свойство отдельной ячейки.
  3. Добавьте новый элемент оформления.
  4. В блоке «Поля» укажите, что красим. Пустое поле — вся строка таблицы; конкретная колонка — только она.
  5. В блоке «Отбор» задайте условие, например Сумма «Больше» 100 000.
  6. В блоке «Оформление» выберите параметр: цвет фона, цвет текста, шрифт.
  7. Сохраните и запустите 1С:Предприятие, проверьте результат на реальных данных.

Пример условий

ЗадачаПоле отбораУсловиеЧто менять
Просроченный платёжСрокОплатыменьше текущей датыцвет фона светло-красный
Неактуальный договорНедействителенравно Истинацвет текста серый
Крупная суммаСуммабольше порогашрифт жирный
Не проведён документПроведенравно Ложьцвет текста тёмно-серый

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

Что может сам пользователь

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

Способ 2. Условное оформление в СКД-отчёте

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

Где найти

  • ⚙️ Для пользователя: в форме отчёта откройте настройки (команда «Настройки» или «Показать настройки»), вкладка «Другие настройки» или «Условное оформление» — зависит от режима настроек.
  • 🛠 Для разработчика: в конструкторе схемы компоновки данных перейдите на вкладку «Настройки», выберите нужную группировку или корень, раздел «Условное оформление».

Как составить условие

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

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

Если в отчёте нет нужного поля, оно должно присутствовать в наборе данных и в доступных полях. Нет поля в схеме — условия по нему не построить. Добавьте его в запрос или как вычисляемое.

Способ 3. Изменение цвета программно в модуле формы

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

Рабочий пример

Подсветим строки списка, у которых сумма больше 100 000. Здесь Список — имя таблицы формы, Сумма — реквизит динамического списка.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;

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

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

	// Что меняем
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 240, 200));
	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(120, 60, 0));

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

Разберём, что здесь важно:

  • 📌 Оформление добавляется в ПриСозданииНаСервере, до показа формы. Менять его на клиенте нельзя: коллекция УсловноеОформление доступна на сервере.
  • 📌 Имя поля в отборе строится как ИмяТаблицы.ИмяКолонки. Ошибка в написании молча приводит к тому, что цвет не применяется.
  • 📌 Для оформления всей строки в поле указывают имя самой таблицы формы.

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

Цвет из значений данных

Если у объекта есть реквизит «Цвет» (тип Цвет, хранится в хранилище значений или как отдельное поле), то условное оформление статического вида не годится. Нужен код, читающий значение, и динамическое формирование элементов оформления. На больших списках это дорого, поэтому ограничивайте набор: 3-5 цветовых состояний вместо произвольных цветов.

Цветовые индикаторы из запроса

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

ВЫБРАТЬ
	Расчеты.Контрагент,
	Расчеты.Сумма,
	ВЫБОР
		КОГДА Расчеты.СрокОплаты < &ТекущаяДата
			ТОГДА "Просрочено"
		КОГДА Расчеты.СрокОплаты < &ГраницаПредупреждения
			ТОГДА "Скоро срок"
		ИНАЧЕ "В срок"
	КОНЕЦ КАК Статус
ИЗ
	РегистрНакопления.Расчеты КАК Расчеты

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

Плюсы такого подхода:

  • ✅ Условие считается один раз, в запросе, а не десятками отборов.
  • ✅ Статус можно показать и колонкой, и цветом, и использовать для группировки.
  • ✅ Цветовая логика легко читается: смотрите на значения «Статус», а не на набор дат.

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

Цвета и темы оформления: чтобы строка читалась везде

Если задавать цвета жёстко, через Новый Цвет(255, 240, 200), то на другом фоне они могут стать нечитаемыми. Платформа позволяет ссылаться на элементы стиля — именованные цвета, которые общие для всей конфигурации.

Как это работает:

  1. В конфигураторе в дереве конфигурации откройте ветку «Общие» и раздел «Элементы стиля».
  2. Добавьте элемент стиля типа «Цвет» со своим именем, например ЦветПросрочки.
  3. В оформлении выберите его из списка цветов стиля (в коде обращайтесь через ЦветаСтиля.ИмяЭлемента).

Если в конфигурации используется БСП, в ней уже есть готовые элементы стиля для типовых ситуаций вроде просроченных данных; смотрите их в той же ветке и берите вместо собственных, чтобы вид остался единым.

Когда стиль меняется, цвета, привязанные к его элементам, меняются автоматически. Жёсткие значения RGB остаются прежними. Отсюда правило: для постоянных вещей берите элементы стиля, RGB оставляйте для разовых задач.

Контраст

Проверьте две пары цветов: текст на фоне строки и текст на фоне выделения. Светлый текст на светлом фоне, а также насыщенный цвет фона, который сливается с цветом курсора, делают строку нечитаемой.

  • Для фона берите бледные тона: светло-жёлтый, светло-розовый, светло-голубой.
  • Для текста — тёмные и насыщенные: тёмно-красный, тёмно-синий.
  • Не красьте фон и текст в один тон.

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

Если вы всё настроили, а строка остаётся прежней, проверяйте по порядку.

Диагностика: выберите симптом

Когда несколько элементов оформления подходят к одной строке, побеждает тот, что стоит ниже в списке. Порядок учитывайте, если у вас, например, общее правило «красить всё серым» и исключения для особых строк: исключения ставьте после общего.

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

Можно ли поменять цвет строки, на которой стоит курсор?
Он определяется стилем интерфейса, а не данными. Условное оформление красит строки по условию, а подсветка курсора рисуется платформой поверх.
Нужно ли для этого программирование?
Нет. Для типовых условий хватает условного оформления формы или настроек СКД. Код нужен, когда условие зависит от параметров и не выражается отбором.
Влияет ли условное оформление на скорость работы списка?
При разумном числе элементов оформления почти не влияет. Не заводите десятки правил на один динамический список: сведите их в один признак в запросе.
Сохранится ли настройка цвета после обновления конфигурации?
Оформление, сделанное в конфигураторе, входит в конфигурацию. При обновлении типовой конфигурации на поддержке ваши правки в типовых формах нужно переносить или оформлять в расширении.
Как сделать так, чтобы цвета видели все пользователи?
Настройте условное оформление в форме или в схеме отчёта. Персональные настройки списка сохраняются только для одного пользователя.