Цвет выделенной строки в 1С: настройка, СКД и код формы
Содержание
Частое заблуждение: цвет строки в 1С якобы «зашит» в платформу и его нельзя поменять. Можно. Но надо различать две вещи: цвет подсветки текущей строки под курсором и цвет строк, которые закрашиваются по условию. Первое задаёт стиль интерфейса, второе настраивается через условное оформление.
На практике почти всегда нужно второе: подсветить просроченные счета, красным пометить отрицательные остатки, выделить строки определённого контрагента. Это делается в трёх местах: в настройках формы или списка, в схеме компоновки данных (СКД) отчёта и программно в модуле формы. Ниже все три способа для платформы 8.3 с интерфейсом «Такси».
Что именно красит платформа и где лежат настройки
В 1С цвет ячейки складывается из нескольких слоёв. Платформа берёт цвета из стиля интерфейса, поверх них накладывает оформление, заданное разработчиком, а в конце применяет условное оформление.
Выделенную курсором строку платформа рисует сама. Её цвет определяется стилем, а не данными, поэтому условное оформление «перекрасить строку под курсором» не заменяет. Оно красит строки по условию, а курсор показывает текущую поверх.
Где живут настройки цвета:
- 🎨 Форма списка и документа — свойство «Условное оформление» в редакторе формы (конфигуратор).
- 📊 Отчёт на СКД — вкладка «Условное оформление» в настройках компоновки.
- 💻 Код — коллекция
УсловноеОформлениеформы, заполняется на сервере при создании формы. - 🖌 Стиль — элементы стиля, на которые ссылаются цвета; смена темы меняет их все разом.
Сначала решите, что вам нужно: подсветка по данным (условное оформление) или общий вид интерфейса (стили). Путать их — главная причина безуспешных поисков.
Способ 1. Условное оформление в форме: без кода
Это самый безопасный способ. Он не требует программирования и сохраняется вместе с конфигурацией.
Пошагово в конфигураторе
- Откройте нужную форму (например, форму списка документа) в конфигураторе.
- В окне редактора формы найдите свойство формы «Условное оформление» и откройте его. Нужен именно список оформлений формы, не свойство отдельной ячейки.
- Добавьте новый элемент оформления.
- В блоке «Поля» укажите, что красим. Пустое поле — вся строка таблицы; конкретная колонка — только она.
- В блоке «Отбор» задайте условие, например
Сумма«Больше»100 000. - В блоке «Оформление» выберите параметр: цвет фона, цвет текста, шрифт.
- Сохраните и запустите 1С:Предприятие, проверьте результат на реальных данных.
Пример условий
| Задача | Поле отбора | Условие | Что менять |
|---|---|---|---|
| Просроченный платёж | СрокОплаты | меньше текущей даты | цвет фона светло-красный |
| Неактуальный договор | Недействителен | равно Истина | цвет текста серый |
| Крупная сумма | Сумма | больше порога | шрифт жирный |
| Не проведён документ | Проведен | равно Ложь | цвет текста тёмно-серый |
Оформление применяется к тем полям, которые указаны в блоке «Поля». Если оставить его пустым, подсветится вся строка, а если указать одну колонку, окрасится только она. Это самая частая причина вопроса «условие сработало, а цвета нет».
Что может сам пользователь
В режиме 1С:Предприятие некоторые списки позволяют настроить оформление без конфигуратора: ищите в меню «Ещё» команду настройки списка. Там есть условное оформление для пользователя. Название пункта зависит от конфигурации и формы, поэтому единого пути нет. Такие настройки хранятся у пользователя и не влияют на других. Если нужно, чтобы цвета видели все, настраивайте оформление в форме.
Способ 2. Условное оформление в СКД-отчёте
В отчётах на схеме компоновки данных цвет задаётся в настройках отчёта. Логика та же: поля, отбор, оформление.
Где найти
- ⚙️ Для пользователя: в форме отчёта откройте настройки (команда «Настройки» или «Показать настройки»), вкладка «Другие настройки» или «Условное оформление» — зависит от режима настроек.
- 🛠 Для разработчика: в конструкторе схемы компоновки данных перейдите на вкладку «Настройки», выберите нужную группировку или корень, раздел «Условное оформление».
Как составить условие
- Добавьте элемент условного оформления.
- В поле «Оформляемые поля» выберите колонки, цвет которых нужно менять.
- В «Отбор» задайте условие по полю данных, например остаток меньше нуля.
- Выберите «Цвет текста» или «Цвет фона».
Условия можно связывать «И» и «Или» в группы. Для сложных случаев делайте группу «Или» с несколькими вложенными условиями, а не размножайте элементы оформления.
Если в отчёте нет нужного поля, оно должно присутствовать в наборе данных и в доступных полях. Нет поля в схеме — условия по нему не построить. Добавьте его в запрос или как вычисляемое.
Способ 3. Изменение цвета программно в модуле формы
Нужен, когда условие нельзя выразить отбором: оно зависит от параметров, ролей, обращения к другому объекту. Кроме того, программно удобно собирать оформление для набора однотипных форм.
Рабочий пример
Подсветим строки списка, у которых сумма больше 100 000. Здесь Список — имя таблицы формы, Сумма — реквизит динамического списка.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
// К какому полю применяем оформление
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Список");
// Условие
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Сумма");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = 100000;
// Что меняем
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 240, 200));
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(120, 60, 0));
КонецПроцедуры
Разберём, что здесь важно:
- 📌 Оформление добавляется в
ПриСозданииНаСервере, до показа формы. Менять его на клиенте нельзя: коллекцияУсловноеОформлениедоступна на сервере. - 📌 Имя поля в отборе строится как
ИмяТаблицы.ИмяКолонки. Ошибка в написании молча приводит к тому, что цвет не применяется. - 📌 Для оформления всей строки в поле указывают имя самой таблицы формы.
Если условие меняется во время работы формы, перерисовывайте оформление на сервере: обновите данные списка или задайте значение отбора заново.
Цвет из значений данных
Если у объекта есть реквизит «Цвет» (тип Цвет, хранится в хранилище значений или как отдельное поле), то условное оформление статического вида не годится. Нужен код, читающий значение, и динамическое формирование элементов оформления. На больших списках это дорого, поэтому ограничивайте набор: 3-5 цветовых состояний вместо произвольных цветов.
Цветовые индикаторы из запроса
Прямо в запросе цвет не задать. Запрос возвращает данные, а раскрашивает уже оформление. Поэтому приём такой: запрос считает признак, а условное оформление реагирует на него.
ВЫБРАТЬ
Расчеты.Контрагент,
Расчеты.Сумма,
ВЫБОР
КОГДА Расчеты.СрокОплаты < &ТекущаяДата
ТОГДА "Просрочено"
КОГДА Расчеты.СрокОплаты < &ГраницаПредупреждения
ТОГДА "Скоро срок"
ИНАЧЕ "В срок"
КОНЕЦ КАК Статус
ИЗ
РегистрНакопления.Расчеты КАК Расчеты
Дальше в условном оформлении добавьте два элемента: отбор Статус = "Просрочено" с красным текстом и Статус = "Скоро срок" с жёлтым фоном. Названия таблицы и полей в примере условные, подставьте свои.
Плюсы такого подхода:
- ✅ Условие считается один раз, в запросе, а не десятками отборов.
- ✅ Статус можно показать и колонкой, и цветом, и использовать для группировки.
- ✅ Цветовая логика легко читается: смотрите на значения «Статус», а не на набор дат.
Цвет не должен быть единственным носителем информации. Часть пользователей плохо различает красный и зелёный, а распечатка в чёрно-белом режиме теряет оттенки. Дублируйте смысл текстом в колонке.
Цвета и темы оформления: чтобы строка читалась везде
Если задавать цвета жёстко, через Новый Цвет(255, 240, 200), то на другом фоне они могут стать нечитаемыми. Платформа позволяет ссылаться на элементы стиля — именованные цвета, которые общие для всей конфигурации.
Как это работает:
- В конфигураторе в дереве конфигурации откройте ветку «Общие» и раздел «Элементы стиля».
- Добавьте элемент стиля типа «Цвет» со своим именем, например
ЦветПросрочки. - В оформлении выберите его из списка цветов стиля (в коде обращайтесь через
ЦветаСтиля.ИмяЭлемента).
Если в конфигурации используется БСП, в ней уже есть готовые элементы стиля для типовых ситуаций вроде просроченных данных; смотрите их в той же ветке и берите вместо собственных, чтобы вид остался единым.
Когда стиль меняется, цвета, привязанные к его элементам, меняются автоматически. Жёсткие значения RGB остаются прежними. Отсюда правило: для постоянных вещей берите элементы стиля, RGB оставляйте для разовых задач.
Контраст
Проверьте две пары цветов: текст на фоне строки и текст на фоне выделения. Светлый текст на светлом фоне, а также насыщенный цвет фона, который сливается с цветом курсора, делают строку нечитаемой.
- Для фона берите бледные тона: светло-жёлтый, светло-розовый, светло-голубой.
- Для текста — тёмные и насыщенные: тёмно-красный, тёмно-синий.
- Не красьте фон и текст в один тон.
Почему цвет не меняется: типичные ошибки
Если вы всё настроили, а строка остаётся прежней, проверяйте по порядку.
Неопределено не срабатывает. Проверьте, что в списке реально есть строки, подходящие под условие.ПриСозданииНаСервере, а имя поля написано точно в форме Таблица.Колонка. Опечатка не вызывает ошибку, оформление просто молча не применяется.Когда несколько элементов оформления подходят к одной строке, побеждает тот, что стоит ниже в списке. Порядок учитывайте, если у вас, например, общее правило «красить всё серым» и исключения для особых строк: исключения ставьте после общего.