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

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

Как в 1С выделить цветом строки и ячейки

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

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

Ключевой момент, который нужно понять сразу: в типовых конфигурациях на управляемых формах (1С:Бухгалтерия 3.0, УТ 11, ERP, ЗУП 3.1) раскраска почти всегда делается через механизм условного оформления. Он доступен и обычному пользователю без прав разработчика — прямо из режима «Ещё» в форме списка. Для отчётов на СКД действует похожий механизм в настройках отчёта.

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

Как выделить цветом строки списка без программирования

Самый простой сценарий — раскрасить строки журнала документов или справочника по условию. Например, подсветить красным непроведённые документы или контрагентов с задолженностью. В управляемых формах это делается штатно.

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

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

Порядок действий
  1. 1
    Откройте список документов или справочника
  2. 2
    Нажмите «Ещё → Настроить список»
  3. 3
    Перейдите на закладку «Условное оформление» и добавьте элемент
  4. 4
    Задайте условие отбора, цвет и оформляемые поля
  5. 5
    Нажмите «ОК» и проверьте, что строки раскрасились

Настройка сохраняется для текущего пользователя. Если раскраску должны видеть все сотрудники, администратор может скопировать настройку другим пользователям через «Администрирование → Настройки пользователей и прав → Копирование настроек» либо задать оформление в конфигураторе.

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

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

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

Программное выделение цветом в модуле формы

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

Типовой фрагмент кода выглядит так:

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

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

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

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

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

ЭлементОтбора.ПравоеЗначение = 100000;

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

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

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

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

Как выделить цветом в отчёте на СКД

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

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

Отличие от списков: в СКД условие строится по полям набора данных, а не реквизитам объекта. Если нужного поля нет в списке доступных, его сначала добавляют в выбранные поля отчёта — иначе отбор по нему не сработает.

Раскраска в обычных формах и табличных документах

В старых конфигурациях на обычных формах (УТ 10.3, Бухгалтерия 2.0) механизм другой: условного оформления списка нет, раскраска делается через событие «ПриВыводеСтроки» табличного поля. В обработчике анализируют данные строки и задают цвет ячейки через объект оформления.

Для печатных форм и табличных документов цвет задаётся напрямую: у области табличного документа есть свойство «ЦветФона» и «ЦветТекста». Это актуально, когда нужно подсветить итоги или отклонения в печатной форме, формируемой программно.

Сравнение вариантов

Настройка списка пользователем

Быстро, без прав разработчика, но действует только у одного пользователя и может быть сброшена

Условное оформление в конфигураторе или расширении

Работает у всех пользователей, требует прав разработчика и обновления конфигурации

Программное оформление в модуле формы

Подходит для сложных условий, но требует поддержки кода при обновлениях

Оформление в настройках отчёта СКД

Гибко для отчётов, сохраняется в варианте, но не применимо к формам списков

Частые ошибки и ограничения

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

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

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

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

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

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

Открытие списка
Норма

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

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

Цвет появляется только после обновления или не появляется вовсе

Строка вне условия
Норма

Не подпадающие под отбор строки остаются стандартного цвета

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

Раскрашены все строки — условие отбора настроено неверно

Другой пользователь
Норма

Оформление видно всем, если задано в конфигураторе или скопировано

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

Раскраска есть только у одного пользователя — настройка личная

FAQ

Можно ли выделить цветом отдельную ячейку, а не всю строку?

Да. В настройке условного оформления заполните список «Оформляемые поля» — укажите только нужные колонки. Тогда цвет применится к ним, а остальная строка останется стандартной.

Почему моя раскраска пропала после обновления конфигурации?

Если оформление было сделано прямой правкой типовой формы, обновление могло затереть изменения. Чтобы этого не происходило, доработки выносят в расширение конфигурации. Личные настройки списка обновление обычно не трогает.

Как подсветить строки по условию от текущей даты, например просроченные документы?

В пользовательской настройке используйте вид сравнения «Меньше» по полю даты с конкретным значением. Для динамических условий вида «старше 30 дней» понадобится программное условное оформление или вычисляемое поле в запросе динамического списка.

Можно ли задать несколько цветов для разных условий в одном списке?

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

Работает ли выделение цветом в веб-клиенте и тонком клиенте?

Условное оформление динамических списков и отчётов СКД работает во всех клиентах — тонком, толстом и веб-клиенте. Различий в поведении для стандартных механизмов нет.

Как убрать чужую раскраску, которая мешает работать?

Откройте «Ещё → Настроить список», найдите лишний элемент условного оформления и удалите его или снимите флаг использования. Если элемент задан в конфигураторе, убрать его может только разработчик — либо добавьте свою настройку, которая перекроет типовую.

Итог

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

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