К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как выделить цветом строку в 1С 8.3

Разбираем, как выделить цветом строку в 1С 8.3: условное оформление динамического списка, табличной части и формы, настройка в конфигураторе и программно.

Подсветка строк цветом — один из самых востребованных приёмов визуализации данных в 1С 8.3. Менеджеру удобно сразу видеть просроченные заказы красным, оплаченные счета — зелёным, а документы на проверке — жёлтым. Такая разметка снижает количество ошибок и ускоряет работу со списками.

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

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

Как работает условное оформление в 1С 8.3

Условное оформление — это набор правил вида «если поле удовлетворяет условию, применить оформление». Каждое правило состоит из трёх частей: отбора (условие сравнения), оформления (цвет фона, цвет текста, шрифт) и списка оформляемых полей (к каким колонкам применять).

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

Важно понимать: условное оформление применяется к полям, а не к «строке» как объекту. Чтобы визуально подсветилась вся строка, в список оформляемых полей нужно включить все видимые колонки таблицы. Если добавить только одну колонку — раскрасится только она.

Выделение строки цветом в конфигураторе без кода

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

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

На вкладке «Отбор» задайте условие, например: поле «ПометкаУдаления» равно «Да». На вкладке «Оформление» установите параметр «Цвет фона» — выберите нужный оттенок. На вкладке «Оформляемые поля» добавьте все колонки таблицы, которые должны окрашиваться. Сохраните конфигурацию и проверьте результат в режиме предприятия.

Порядок настройки в конфигураторе
  1. 1
    Откройте форму списка в конфигураторе
  2. 2
    Найдите реквизит динамического списка и откройте его условное оформление
  3. 3
    Добавьте элемент и задайте отбор (условие)
  4. 4
    На вкладке «Оформление» установите цвет фона или текста
  5. 5
    На вкладке «Оформляемые поля» отметьте все нужные колонки
  6. 6
    Обновите конфигурацию и проверьте список в режиме предприятия

Программное выделение строк цветом

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

Элемент условного оформления создаётся в коллекции УсловноеОформление формы или списка. Для него заполняются отбор, оформление и оформляемые поля. Пример для подсветки просроченных заказов:

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

ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ДатаОтгрузки");

ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;

ЭлементОтбора.ПравоеЗначение = ТекущаяДатаСеанса();

ЭлементОтбора.Использование = Истина;

ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоРозовый);

ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();

ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Номер");

ПолеОформления.Использование = Истина;

Обратите внимание на имя поля в отборе: оно указывается с префиксом «Список.», если оформление добавляется в коллекцию формы. Если правило добавляется в Список.УсловноеОформление, префикс не нужен — платформа сама понимает контекст.

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

1c
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЖелтый);

Раскраска табличной части документа

Табличная часть — это не динамический список, а коллекция строк, поэтому условное оформление динамического списка на неё не действует. Здесь правила добавляют в условное оформление формы.

В конфигураторе откройте форму документа, в её свойствах найдите «Условное оформление» и добавьте элемент. В отборе укажите путь к данным табличной части, например «Объект.Товары.Цена», и условие «Равно 0». В оформляемых полях перечислите колонки таблицы: «ТоварыНоменклатура», «ТоварыЦена», «ТоварыСумма» и так далее.

Программный вариант аналогичен списку, но левое значение отбора строится как Новый ПолеКомпоновкиДанных("Объект.Товары.Количество"), а имена оформляемых полей совпадают с именами колонок таблицы формы, а не с именами реквизитов объекта. Это частая причина «неработающего» оформления.

Какие параметры оформления доступны

Помимо цвета фона, условное оформление позволяет менять цвет текста, шрифт (жирный, курсив, размер), видимость и доступность поля, текст-подстановку и отметку незаполненного. Комбинируя параметры, можно, например, выводить отрицательные остатки красным жирным шрифтом.

Цвет задаётся тремя способами: через перечисление WebЦвета, через ЦветаСтиля (рекомендуется — цвета адаптируются под тему интерфейса) и через конструктор Новый Цвет(Красный, Зеленый, Синий) с компонентами от 0 до 255. Абсолютные RGB-цвета стоит применять осмотрительно: в тонком и веб-клиенте с нестандартной темой они могут выглядеть иначе.

Способы задания цвета

WebЦвета

Просто и наглядно, но фиксированная палитра; не подстраивается под тему интерфейса

ЦветаСтиля

Рекомендуемый вариант: цвета согласованы с оформлением конфигурации и меняются вместе со стилем

Новый Цвет(R,G,B)

Полный контроль над оттенком; требует проверки отображения в разных клиентах

Типичные ошибки и ограничения

Чаще всего оформление «не работает» из-за четырёх причин. Первая — не заполнены оформляемые поля: правило создано, но ни к одной колонке не привязано. Вторая — неверное имя поля в отборе: опечатка или отсутствие префикса «Список.». Третья — у элемента отбора не установлено свойство «Использование» в значение «Истина». Четвёртая — правило добавлено не в ту коллекцию (в форму вместо списка или наоборот).

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

Не злоупотребляйте количеством правил. Десятки элементов условного оформления на большом списке заметно замедляют его отрисовку, особенно в веб-клиенте. Объединяйте правила с одинаковым оформлением через группу отбора «ИЛИ».

Типичные ошибки
01
Не добавлены оформляемые поля — правило есть, но цвет ни к одной колонке не применяется
02
Опечатка в имени поля отбора — платформа молча игнорирует такое условие
03
Не установлено «Использование = Истина» у элемента отбора — условие не участвует в проверке
04
Правило добавлено в условное оформление формы, хотя список — динамический, и наоборот
05
Слишком много правил на большом списке — заметное падение скорости отрисовки

Как проверить результат

После настройки откройте список в режиме предприятия и найдите запись, заведомо удовлетворяющую условию. Если такой записи нет — создайте тестовую. Строка должна окраситься сразу после открытия списка или обновления данных, без перезахода в форму.

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

Если оформление добавлено программно, полезно временно вывести количество элементов в коллекции условного оформления через сообщение — это подтвердит, что код вообще выполняется и правило создано.

Контрольные точки

Как проверить результат

Подсветка тестовой строки
Норма

Строка, удовлетворяющая условию, окрашена сразу после открытия списка

Тревожный признак

Цвет не появляется или появляется только после перезахода в форму

Полнота окраски
Норма

Окрашены все видимые колонки строки

Тревожный признак

Раскрашена только одна колонка — не все поля добавлены в оформляемые

Граничное условие
Норма

Запись на границе условия обрабатывается согласно виду сравнения

Тревожный признак

Строка подсвечивается или не подсвечивается вопреки условию

Ответы на частые вопросы

Итог

Что важно запомнить

Цвет строки в 1С 8.3 задаётся условным оформлением: отбор определяет условие, оформление — цвет, оформляемые поля — какие колонки раскрасятся. Настройка возможна в конфигураторе без кода и программно через коллекцию УсловноеОформление.

Можно ли выделить строку цветом без изменения конфигурации?

Да, если конфигурация поддерживает пользовательские настройки списка: в форме списка через «Ещё» → «Настроить список» (или «Изменить форму») доступна вкладка условного оформления, где пользователь добавляет свои правила. Изменения сохраняются в настройках пользователя и не требуют доработки конфигурации.

Почему условное оформление не срабатывает на группах строк?

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

Как раскрасить строку по значению вычисляемого поля?

Добавьте в запрос динамического списка вычисляемое поле (например, через ВЫБОР с условием), затем используйте его в отборе условного оформления. Прямо в отборе произвольные выражения недоступны — только сравнение полей.

Работает ли условное оформление в отчётах на СКД?

Да, но это отдельный механизм: в схеме компоновки данных на вкладке «Настройки» есть раздел «Условное оформление», где правила задаются аналогично — отбор, оформление и область. Настройки формы на отчёт СКД не влияют.

Как убрать подсветку, добавленную программно?

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

Влияет ли раскраска строк на производительность?

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