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

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

Как в 1С изменить цвет строки

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

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

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

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

Где именно нужно поменять цвет: определяем сценарий

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

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

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

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

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

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

Настройка цвета строки в конфигураторе без программирования

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

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

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

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

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

Программное изменение цвета строки в управляемой форме

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

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

&НаСервере

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

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

// Условие: сумма документа больше 100000

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

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

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

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

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

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

// Оформление: зелёный фон строки

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

"ЦветФона", WebЦвета.СветлоЗеленый);

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

Если оформление добавляется к УсловноеОформление самой формы (а не списка), нужно дополнительно указать оформляемые поля через ЭлементОформления.Поля.Элементы.Добавить(), иначе подсветка может не отобразиться. Для табличной части документа левое значение отбора указывается с путём к данным, например Объект.Товары.Цена.

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

Изменение цвета строки в отчёте на СКД

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

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

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

Особые случаи: обычные формы и табличные документы

Обычное приложение

В старых конфигурациях, работающих в режиме обычного приложения, условного оформления нет. Цвет строки табличного поля задаётся в обработчике события ПриПолученииДанных: в нём перебираются строки оформления, проверяется условие и меняется свойство ЦветФона объекта ОформлениеСтроки.

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл

Если ОформлениеСтроки.ДанныеСтроки.Просрочен Тогда

ОформлениеСтроки.ЦветФона = WebЦвета.СветлоРозовый;

КонецЕсли;

КонецЦикла;

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

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

Табличный документ и печатные формы

В табличном документе (печатной форме, макете) цвет ячейки задаётся напрямую через свойство области: Область.ЦветФона, Область.ЦветТекста. Обычно это делается при программном формировании печатной формы — после вывода области проверяется условие и меняется оформление нужных ячеек. Изменить цвет уже распечатанного документа без повторного формирования нельзя.

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

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

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

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

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

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

Строка, удовлетворяющая условию
Норма

Окрашена заданным цветом сразу при открытии списка

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

Цвет не появился или появляется только после обновления вручную

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

Осталась со стандартным оформлением

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

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

Просмотр под другим пользователем
Норма

Оформление одинаковое у всех

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

У части пользователей свои цвета — мешают сохранённые настройки

Производительность списка
Норма

Прокрутка плавная

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

Список подтормаживает — проверьте код обработчиков

Часто задаваемые вопросы

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

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

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

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

Как раскрасить только одну колонку, а не всю строку?

На вкладке «Оформляемые поля» элемента условного оформления укажите конкретную колонку вместо пустого списка. Программно это делается через ЭлементОформления.Поля.Элементы.Добавить() с указанием имени поля.

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

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

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

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

Как убрать изменение цвета и вернуть стандартный вид?

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

Итог

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

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