Разработка и Конфигурация · 11 мин
Как в 1С изменить цвет выделенной строки
Как изменить цвет выделенной строки в 1С: настройка условного оформления в пользовательском режиме и кодом, типичные ошибки, проверка результата.
В 1С под «цветом выделенной строки» обычно понимают две разные задачи. Первая — раскрасить строки списка документов или справочника по условию: например, выделить красным неоплаченные счета или зелёным проведённые документы. Вторая — изменить сам цвет курсора, то есть фон текущей активной строки таблицы. Решаются эти задачи по-разному, и важно сразу понять, какая из них ваша.
Раскраска строк по условию выполняется через механизм условного оформления, который доступен даже без изменения конфигурации — прямо в пользовательском режиме через меню «Ещё». Изменение же цвета текущей (выделенной) строки — более тонкая задача: платформа управляет этим цветом сама, и вмешаться в него можно лишь ограниченно.
Ниже разобраны оба сценария: настройка через интерфейс без программирования, установка оформления кодом на встроенном языке, ограничения платформы и типичные ошибки, из-за которых цвет не применяется.
Что именно вы хотите перекрасить: курсор или строки по условию
Прежде чем менять настройки, определите объект. Текущая строка таблицы в 1С подсвечивается системным цветом выделения, который берётся из настроек операционной системы и темы платформы. Штатной настройки «цвет выделенной строки» в интерфейсе 1С нет — это частая причина заблуждения.
Если же задача — чтобы строки с определёнными данными выглядели иначе (другой фон, цвет текста, шрифт), то это стандартная задача условного оформления, и она решается полностью штатными средствами.
Как выбрать действие
Как изменить цвет строк через «Настроить список» без программирования
В большинстве конфигураций на управляемых формах (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и другие) списки документов и справочников поддерживают пользовательскую настройку. Откройте нужный список, нажмите кнопку «Ещё» в правом верхнем углу и выберите пункт «Настроить список».
В открывшемся окне перейдите на закладку «Условное оформление» и добавьте новый элемент. Для него задаются три вещи: условие (отбор), оформление (цвет фона, цвет текста, шрифт) и список оформляемых полей. Если поля не указаны, оформление применится ко всей строке целиком.
Пример практической настройки: чтобы непроведённые документы подсвечивались жёлтым фоном, создайте условие «Проведен = Нет» и выберите светло-жёлтый цвет фона. Чтобы помеченные на удаление объекты были серыми, добавьте условие «ПометкаУдаления = Да» и серый цвет текста.
Настройка сохраняется для текущего пользователя и действует только в этом списке. Если нужно, чтобы раскраска работала у всех пользователей, потребуется либо распространить настройку (в некоторых конфигурациях есть кнопка «Установить стандартные настройки» и механизмы копирования настроек), либо задать оформление программно в конфигураторе.
Как задать цвет строк программно в модуле формы
Когда оформление должно работать у всех пользователей и не зависеть от ручных настроек, его задают в коде. Для динамического списка на управляемой форме это делается в обработчике «ПриСозданииНаСервере» через коллекцию условного оформления списка или формы.
Логика та же, что и в пользовательском режиме: создаётся элемент условного оформления, в нём настраивается отбор, параметр оформления (цвет фона, цвет текста, шрифт) и при необходимости перечень полей. Ниже пример, который красит фон строк непроведённых документов.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Проведен");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЖелтый);
КонецПроцедурыОбратите внимание: оформление добавляется в коллекцию «УсловноеОформление» самого динамического списка (реквизита формы), а не формы. Коллекция формы тоже существует и используется для оформления обычных таблиц и полей, но для динамических списков корректнее работать с оформлением списка — тогда настройка сочетается с пользовательскими настройками.
Доступные параметры оформления: «ЦветФона», «ЦветТекста», «Шрифт», «Текст» (подмена отображаемого значения), «Доступность», «Видимость» и другие. Цвет можно задавать через «WebЦвета», «ЦветаСтиля» или конструктором «Новый Цвет( R, G, B)».
Можно ли изменить цвет активной (выделенной) строки
Цвет фона строки, на которой стоит курсор, платформа 1С берёт из системных настроек. В управляемом интерфейсе нет ни настройки в конфигураторе, ни свойства таблицы формы, которое меняло бы именно цвет выделения. Попытки «перекрасить курсор» через условное оформление не сработают: условное оформление не знает, какая строка текущая.
Частичный обходной путь — оформить все строки списка собственным фоном через условное оформление с условием, которое истинно всегда (например, сравнение поля с самим собой или условие на заполненность ключевого поля). Тогда фон строк будет вашим, а системная подсветка курсора станет менее заметной или будет сочетаться с заданным фоном — визуальный результат зависит от версии платформы и темы.
Ещё один вариант — изменить тему оформления операционной системы. В Windows цвет выделения элементов списков связан с системной палитрой, и в некоторых режимах работы 1С (особенно в обычных формах и тонком клиенте старых версий) это влияет на подсветку активной строки. Однако такой способ меняет оформление всей системы, а не только 1С.
Как проверить, что оформление применилось правильно
После настройки откройте список и найдите строки, которые точно подпадают под условие, и строки, которые точно не подпадают. Первые должны быть окрашены, вторые — нет. Если красятся все строки или ни одна, условие сформулировано неверно.
Проверьте также поведение при изменении данных: проведите документ или снимите пометку удаления — цвет строки должен измениться после обновления списка (клавиша F5). Условное оформление пересчитывается при перечитывании данных, а не мгновенно.
Как проверить результат
Окрашены заданным цветом
Цвет не изменился — проверьте отбор и флаг «Использование»
Имеют стандартный вид
Окрашены все строки — условие пустое или всегда истинное
Цвет строки обновляется
Цвет «застывает» — возможно, оформление задано для формы, а не для списка
Раскраска видна, если оформление задано кодом
Настройка видна только вам — она сохранена как личная
Типичные ошибки и ограничения
Наиболее частая причина «неработающего» цвета — неверно заданный отбор. Например, сравнение строкового поля с учётом регистра, сравнение ссылки со строкой или условие по полю, которого нет в запросе динамического списка. Если поле не выбирается в запросе списка, отбор по нему и оформление работать не будут.
Вторая группа ошибок — конфликт настроек. Пользовательская настройка списка может перекрывать программное оформление или наоборот. Если в конфигураторе всё задано верно, а в базе цвет другой — сбросьте пользовательские настройки списка через «Ещё → Установить стандартные настройки».
Помните и об ограничении производительности: десятки элементов условного оформления со сложными условиями по вычисляемым полям замедляют вывод больших списков. Для рабочих баз держите число правил разумным и используйте простые сравнения по индексированным полям.
Что важно запомнить
Раскраска строк по условию делается условным оформлением: пользователем — через «Ещё → Настроить список», разработчиком — кодом в коллекции УсловноеОформление списка. Цвет активной строки курсора штатно не настраивается. После настройки проверяйте строки внутри и вне условия и обновляйте список клавишей F5.
Частые вопросы
Почему условное оформление не срабатывает, хотя условие задано верно?
Чаще всего поле, по которому построен отбор, отсутствует в запросе динамического списка, либо у элемента отбора снят флаг «Использование». Также проверьте, не перекрывает ли настройку личная пользовательская настройка списка — сбросьте её через «Ещё → Установить стандартные настройки».
Как сделать раскраску списка для всех пользователей сразу?
Личная настройка через «Настроить список» действует только у текущего пользователя. Для всех пользователей оформление задают программно в модуле формы списка (в обработчике «ПриСозданииНаСервере») или распространяют сохранённую настройку штатными средствами конфигурации, если они предусмотрены.
Можно ли раскрасить только одну колонку, а не всю строку?
Да. В элементе условного оформления есть список оформляемых полей: добавьте туда нужную колонку, и цвет применится только к её ячейкам. Если список полей пуст, оформление распространяется на всю строку.
Как изменить цвет фона текущей строки, где стоит курсор?
Штатной настройки цвета выделения активной строки в 1С нет — платформа берёт его из системной темы. Косвенные варианты: задать собственный фон всем строкам через условное оформление с условием, которое всегда истинно, либо изменить тему оформления операционной системы.
Цвет строки не меняется после проведения документа. Что делать?
Условное оформление пересчитывается при перечитывании данных списка. Нажмите F5 или кнопку обновления списка. Если цвет не меняется и после обновления, проверьте, что условие ссылается именно на поле «Проведен» и что оформление задано для динамического списка, а не для формы.
Влияет ли условное оформление на скорость работы списка?
Да, при большом числе правил и сложных условиях по вычисляемым полям вывод списка может замедляться. Используйте простые сравнения по индексированным полям и не создавайте десятки элементов оформления в одном списке.