Как раскрасить строки в 1С: условное оформление и СКД

· 9 мин

Содержание

Выделить строку цветом в 1С 8.3 можно без единой строки кода — через механизм условного оформления. В любом списке жмёте Ещё → Настроить список → Условное оформление, в отчёте на СКД — открываете Настройки → Условное оформление. Задаёте условие (например, остаток меньше нуля), выбираете цвет фона или текста и указываете, какие колонки красить. Всё, строки, попавшие под условие, подсветятся.

Условное оформление работает одинаково и в динамических списках на форме, и в отчётах на системе компоновки данных (СКД) — в основе лежит один и тот же движок. Разница только в том, где открывается окно настройки. Если же оформление нужно включать по сложному условию или менять на лету, цвет строки задают программно в коде конфигурации.

Ниже — все три сценария: раскраска списков руками пользователя, правила в отчётах через конструктор СКД и выделение цветом кодом. Плюс отдельно разобраны ошибки, из-за которых цвет «не применяется».

Два механизма раскраски и когда какой брать

В 1С 8.3 цвет строки почти никогда не «прибивают» намертво. Вместо этого задают правило: при каком условии и какие поля подсветить. Движок сам проверяет каждую строку и применяет оформление. Это и есть условное оформление.

Форматов два, и они не конкурируют, а дополняют друг друга:

  • 🎨 Условное оформление списков и форм — красит строки в журналах документов, справочниках, динамических списках. Настраивается прямо в режиме «1С:Предприятие», сохраняется в настройках пользователя.
  • 📊 Условное оформление СКД — работает в отчётах. Настраивается либо пользователем в отчёте, либо разработчиком в схеме компоновки данных.

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

Каким способом красить строки?

Условное оформление списков без программиста

Самый частый запрос — подсветить строки в журнале или справочнике. Решается за минуту и без конфигуратора.

  1. Откройте нужный список (журнал документов , справочник, список регистра).
  2. Нажмите Ещё (меню в правом верхнем углу формы) → Настроить список.
  3. Перейдите на вкладку Условное оформление.
  4. Нажмите Добавить — появится новый элемент оформления с тремя блоками.

Эти три блока — суть всего механизма:

  • Оформление — что меняем: Цвет фона, Цвет текста, Шрифт (жирный, курсив), а также Видимость и Доступность.
  • Условие — когда применяем: отбор по полю списка, например Сумма документа Меньше 0 или Проведён Равно Нет.
  • Оформляемые поля — какие колонки красим. Если список оставить пустым, оформление ляжет на всю строку.

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

Пример: в списке «Реализация товаров» выделить непроведённые документы серым фоном. Условие — Проведён Равно Ложь, оформление — цвет фона светло-серый, поля не указываем. Непроведённые строки сразу видны в общем потоке.

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

Правила оформления в отчётах через конструктор СКД

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

Пользователь меняет оформление в готовом отчёте:

  1. Сформируйте отчёт, нажмите Настройки (или Ещё → Изменить вариант отчёта).
  2. Включите расширенный режим настроек, если доступен переключатель вида.
  3. Откройте вкладку Условное оформление и добавьте элемент — те же три блока: оформление, условие, оформляемые поля.

Разработчик закладывает правило прямо в схему:

  1. В конфигураторе откройте основную схему компоновки данных отчёта.
  2. Внизу перейдите на вкладку Настройки.
  3. Выберите вкладку Условное оформление и добавьте элемент.

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

Таблица — какой уровень что даёт:

УровеньГде настраиваетсяКто видит результат
ПользовательскийВ отчёте, Настройки → Условное оформлениеТолько автор настройки (можно сохранить вариант)
Схема СКДВ конфигураторе, вкладка Настройки схемыВсе пользователи отчёта

Если правило нужно всем и навсегда — задавайте его в схеме СКД в конфигураторе. Пользовательская настройка живёт в варианте отчёта и легко теряется при сбросе.

Раскраска строк цветом в коде 1С

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

Для динамического списка на управляемой форме в процедуре ПриСозданииНаСервере:

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

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

// Оформление: красный текст
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);

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

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

Для отчёта на СКД правило добавляют в настройки компоновщика:

УслОформление = КомпоновщикНастроек.Настройки.УсловноеОформление;
Элемент = УслОформление.Элементы.Добавить();

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

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

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

Доступные параметры оформления — те же, что в окне настройки: ЦветФона, ЦветТекста, Шрифт, Видимость, Доступность. Цвет задают либо из палитры WebЦвета (например, WebЦвета.Красный), либо вручную — Новый Цвет(255, 230, 230) по значениям RGB.

Для жирного шрифта удобно собрать объект шрифта:

Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(, , Истина));

Третий параметр Истина включает жирность. Так подсвечивают, скажем, просроченные строки — красный текст плюс жирный шрифт заметны даже боковым зрением.

Программный способ незаменим, когда правило зависит от текущего пользователя или его роли. В коде легко проверить РольДоступна(...) или должность сотрудника и подсветить строки по-разному для разных ролей — через отбор в окне настройки такое не задать. При этом помните: оформление, добавленное в ПриСозданииНаСервере, пересобирается при каждом открытии формы, поэтому перед добавлением имеет смысл очистить коллекцию (Список.УсловноеОформление.Элементы.Очистить()), если форма переоткрывается в одном сеансе и правила могли накопиться.

Если красите табличный документ при выводе макета (а не список или отчёт на СКД), механизм другой: Область.ЦветФона = WebЦвета.Красный прямо перед ТабДок.Вывести(Область). Это разовая заливка ячеек, без условий.

Выделение в табличных частях и формах

Отдельная история — таблицы на форме, не связанные с динамическим списком (например, табличная часть документа или таблица значений на форме). Здесь оформление тоже задаётся через Форма.УсловноеОформление, но поле указывают по имени колонки формы.

Порядок действий:

  1. На управляемой форме откройте свойство Условное оформление (команда в контекстном меню формы или через палитру свойств самой формы).
  2. Добавьте элемент, задайте оформление и условие.
  3. В «Оформляемых полях» выберите не реквизит, а колонку таблицы формы — тот элемент, который отображает данные.

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

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

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

Частые ошибки при настройке оформления

Условное оформление либо работает, либо «молча» не применяется — ошибок на экран оно почти не выдаёт. Поэтому разбор по симптомам.

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

Ещё одна типовая ловушка — конфликт правил. Если два элемента оформления красят одно поле по пересекающимся условиям, применится то, что идёт в списке ниже. Порядок элементов в условном оформлении имеет значение: более частное правило держите после общего.

Приёмы, которые экономят время

Несколько практик, которые делают раскраску предсказуемой и переносимой.

  • 🧩 Группируйте условия. В одном элементе оформления отбор может содержать несколько строк, объединённых по «И». Не плодите три элемента там, где хватит одного с составным условием.
  • 🎯 Красьте поле, а не всю строку, когда важна одна цифра. Подсветка всей строки «кричит», подсветка одной колонки-ресурса фокусирует внимание на сумме.
  • 🔁 Переносите оформление вместе с вариантом отчёта. Пользовательские настройки СКД сохраняются в варианте — его можно сохранить и раздать коллегам через Ещё → Прочее → Изменить вариант отчёта → Сохранить.
  • 🌈 Не злоупотребляйте цветом. Три-четыре цвета на список — потолок. Когда подсвечено всё, не выделено ничего.
  • ⚙️ Выбирайте значение из палитры, а не «на глаз». WebЦвета дают именованные оттенки, которые одинаково выглядят у всех. Самодельный Новый Цвет() держите для фирменных оттенков.

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

Прежде чем менять условное оформление в типовой конфигурации через расширение или снятие с поддержки — сверьтесь с регламентом обновлений. Правка в основной конфигурации усложнит будущие обновления; чаще оформление добавляют расширением.

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

Можно ли выделить строку цветом в 1С без программиста?
Да. В любом списке — Ещё → Настроить список → Условное оформление, в отчёте — Настройки → Условное оформление. Код для этого не нужен.
Почему условное оформление не применяется?
Чаще всего в «Оформляемых полях» указано поле, которое не выведено на экран, либо для подсветки всей строки этот блок, наоборот, не очищен. Проверьте оба варианта.
Как покрасить только одну колонку, а не всю строку?
В блоке «Оформляемые поля» укажите конкретную колонку. Если оставить блок пустым — покрасится вся строка.
Чем условное оформление списка отличается от оформления в СКД?
Движок один, отличается место настройки и область действия. Оформление списка сохраняется у пользователя, оформление в схеме СКД — часть отчёта и работает у всех.
Как задать цвет строки программно?
Добавьте элемент в УсловноеОформление формы, списка или настроек СКД, задайте отбор и вызовите Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный).