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

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

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

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

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

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

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

Где в 1С применяется выделение цветом

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

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

Выделение цветом строк списка через настройку формы

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

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

Учтите ограничение: доступность настройки зависит от прав пользователя и от того, как разработчик сделал форму. Если пункт «Изменить форму» недоступен или условное оформление в нём заблокировано, потребуется настройка в конфигураторе.

Порядок действий для списка
  1. 1
    Откройте список и выберите «Ещё» → «Изменить форму» (или «Настроить список»)
  2. 2
    Добавьте элемент условного оформления
  3. 3
    Задайте условие отбора по нужному полю
  4. 4
    Укажите цвет фона или текста и оформляемые поля
  5. 5
    Сохраните и проверьте раскраску на реальных данных

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

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

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

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

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

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

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

Новый ПолеКомпоновкиДанных("Просрочен");

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

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

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

ЭлементОформления.Оформление.УстановитьЗначениеПараметра(

"ЦветФона", Новый Цвет(255, 220, 220));

КонецПроцедуры

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

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

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

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

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

Если отчёт открывается пользователям в режиме настроек, они могут добавлять свои правила раскраски через «Ещё» → «Изменить вариант» без доработки конфигурации. Это удобно, когда разным отделам нужны разные пороги подсветки.

Проверяйте, чтобы оформляемые поля были указаны явно, если раскрашивать нужно только колонку с суммой, а не всю строку. Иначе при большом объёме отчёта сплошная заливка строк ухудшает читаемость и замедляет формирование.

Сравнение способов раскраски

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

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

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

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

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

Поддерживает сложные вычисляемые условия, но требует аккуратности: код выполняется при каждом создании формы

Оформление в СКД для отчётов

Гибко настраивается и пользователем, и разработчиком, но применимо только к отчётам на компоновке

Проверка результата и типичные ошибки

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

Частая ошибка — сравнение несовместимых типов: например, строковое поле сравнивается с числом. Условие молча не выполняется. Вторая типичная проблема — раскраска пропадает при группировке списка: условное оформление динамического списка применяется к строкам данных, а строки групп оформляются отдельно. Третья — попытка раскрасить список обходом строк в цикле: динамический список не даёт прямого доступа к строкам, и такой подход в принципе не работает.

Ещё одна ошибка — слишком яркие или многочисленные цвета. Если в списке действуют пять-шесть правил раскраски, пользователь перестаёт различать сигналы. Ограничьтесь двумя-тремя смысловыми цветами и используйте приглушённые оттенки фона вместо насыщенных.

Типичные ошибки
01
Поле отбора не включено в запрос динамического списка — условие не срабатывает без ошибки
02
Сравнение поля со значением другого типа — отбор молча не выполняется
03
Попытка раскрасить строки списка циклом в коде — динамический список так не работает
04
Слишком много правил и ярких цветов — пользователь перестаёт воспринимать подсветку
05
Конфликт нескольких элементов оформления — нижний элемент переопределяет цвет верхнего
Контрольные точки

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

Раскраска строк
Норма

Цвет появляется только у строк, удовлетворяющих условию

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

Раскрашены все строки или ни одной

Обновление данных
Норма

При изменении записи цвет меняется автоматически

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

Цвет остаётся старым до переоткрытия формы

Работа у других пользователей
Норма

Настройка из конфигуратора видна всем

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

Раскраска есть только у настроившего пользователя

Ограничения и когда привлекать разработчика

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

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

Маршрут решения

Как выбрать способ

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

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

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

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

Почему условное оформление не срабатывает, хотя условие верное?

Чаще всего поле отбора отсутствует в запросе динамического списка или в выбранных полях. Также проверьте флаг «Использование» у элемента отбора и совместимость типов сравниваемых значений.

Как задать цвет программно, если нужен нестандартный оттенок?

Используйте конструктор Новый Цвет(Красный, Зелёный, Синий) со значениями от 0 до 255, например Новый Цвет(230, 240, 255). Для типовых оттенков удобна коллекция WebЦвета.

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

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

Можно ли раскрашивать строки в мобильном клиенте 1С?

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

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

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

Итог

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

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