Разработка и Конфигурация · 12 мин
Как в 1С изменить цвет строки
Как изменить цвет строки в 1С через условное оформление динамического списка, формы и программно. Пошаговые инструкции, примеры кода, типичные ошибки.
Изменение цвета строки в 1С — типовая задача, которая возникает, когда нужно визуально выделить важные данные: просроченные документы, контрагентов с задолженностью, товары с нулевым остатком. В зависимости от того, где именно нужно поменять цвет — в списке документов, в табличной части, в отчёте или в обычном приложении — используются разные механизмы.
Основной инструмент в управляемых формах — условное оформление. Оно позволяет задать цвет фона, цвет текста, шрифт и другие параметры для строк, которые удовлетворяют заданному условию, причём без изменения самих данных. Условное оформление можно настроить как в конфигураторе без единой строки кода, так и программно на встроенном языке.
В обычных формах (устаревший режим) и в табличных документах логика другая: там цвет задаётся через свойства ячеек или обработчики событий вывода строк. Ниже разобраны все основные сценарии с конкретными действиями и примерами кода.
Где именно нужно поменять цвет: определяем сценарий
Прежде чем приступать к настройке, важно понять, с каким объектом вы работаете, потому что механизмы принципиально различаются. Самая частая ситуация — динамический список документов или справочников в управляемом приложении. Здесь оформление настраивается либо у самого списка (в конфигураторе или программно), либо у реквизита формы типа «ДинамическийСписок».
Второй сценарий — табличная часть документа или таблица значений на форме. Здесь условное оформление привязывается к элементу формы (таблице), и условие строится по полям этой таблицы. Третий сценарий — отчёт на системе компоновки данных (СКД), где у варианта отчёта есть собственная вкладка условного оформления, доступная даже пользователю без прав разработчика.
Отдельный случай — обычное приложение (режим, который встречается в старых конфигурациях) и табличные документы (печатные формы). Там условного оформления как механизма нет, и цвет задаётся напрямую через свойства оформления ячеек или в обработчиках событий.
Как выбрать способ
Настройка цвета строки в конфигураторе без программирования
Самый простой и безопасный способ — задать условное оформление прямо в конфигураторе. Оно сохранится в конфигурации и будет работать у всех пользователей без дополнительного кода. Порядок действий для формы списка документов выглядит так.
Откройте конфигуратор, найдите нужный объект (например, документ «Реализация товаров и услуг») и откройте его форму списка. В дереве элементов формы выделите таблицу списка (обычно она называется «Список»). В палитре свойств найдите свойство «Условное оформление» и нажмите кнопку открытия. В появившемся окне добавьте новый элемент оформления.
Для каждого элемента оформления заполняются три части. На вкладке «Оформление» выберите параметр «Цвет фона» и задайте нужный цвет — например, светло-красный для просроченных документов. На вкладке «Условие» добавьте отбор: поле, вид сравнения и значение (например, «Оплачен Равно Нет»). На вкладке «Оформляемые поля» укажите колонки, к которым применяется оформление; если оставить список пустым, цвет применится ко всей строке целиком.
- 1Откройте форму списка объекта в конфигураторе
- 2Выделите таблицу списка и откройте свойство «Условное оформление»
- 3Добавьте элемент оформления и задайте цвет фона на вкладке «Оформление»
- 4На вкладке «Условие» добавьте отбор по нужному полю
- 5На вкладке «Оформляемые поля» укажите колонки или оставьте пустым для всей строки
- 6Обновите конфигурацию базы данных и проверьте результат в режиме предприятия
После сохранения формы обновите конфигурацию базы данных (клавиша F7) и запустите режим предприятия. Строки, удовлетворяющие условию, должны окраситься сразу при открытии списка. Если цвет не появился — проверьте, что условие реально выполняется хотя бы для одной строки и что поле отбора присутствует в запросе динамического списка.
Программное изменение цвета строки в управляемой форме
Когда условие сложное или оформление нужно включать динамически (например, по настройке пользователя), условное оформление создаётся программно — обычно в обработчике ПриСозданииНаСервере. Код работает с коллекцией УсловноеОформление формы или динамического списка.
Типовой пример для динамического списка формы выглядит следующим образом: создаётся элемент оформления, в него добавляется отбор с условием, затем устанавливается цвет фона и при необходимости ограничивается список оформляемых полей.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
// Условие: сумма документа больше 100000
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(
Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СуммаДокумента");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = 100000;
ЭлементОтбора.Использование = Истина;
// Оформление: зелёный фон строки
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(
"ЦветФона", WebЦвета.СветлоЗеленый);
КонецПроцедуры
Если оформление добавляется к УсловноеОформление самой формы (а не списка), нужно дополнительно указать оформляемые поля через ЭлементОформления.Поля.Элементы.Добавить(), иначе подсветка может не отобразиться. Для табличной части документа левое значение отбора указывается с путём к данным, например Объект.Товары.Цена.
Обратите внимание: код, размещённый в форме, применяется только когда открывается именно эта форма. Если документ может отображаться в общем журнале или через другую форму списка, оформление там не появится — для таких случаев надёжнее настраивать условное оформление в конфигураторе у самого динамического списка.
Изменение цвета строки в отчёте на СКД
В отчётах, построенных на системе компоновки данных, условное оформление настраивается на уровне варианта отчёта и доступно даже пользователю без доступа к конфигуратору. Это удобно, когда требуется подсветить, например, строки с отрицательной прибылью или превышением плана.
Откройте отчёт, перейдите в настройки (кнопка «Настройки» или «Ещё — Изменить вариант»), выберите вкладку «Условное оформление». Добавьте элемент, укажите оформление (цвет фона или текста), условие отбора и область применения — конкретные поля или всю строку. В расширенном режиме настроек можно выбрать, применять оформление к строкам группировок или только к детальным записям.
Разработчик может задать условное оформление и в схеме компоновки данных в конфигураторе — тогда оно станет частью типового варианта отчёта. Пользовательские настройки при этом могут перекрывать типовые, что иногда приводит к путанице: пользователь видит старые цвета, потому что у него сохранён собственный вариант настроек.
Особые случаи: обычные формы и табличные документы
Обычное приложение
В старых конфигурациях, работающих в режиме обычного приложения, условного оформления нет. Цвет строки табличного поля задаётся в обработчике события ПриПолученииДанных: в нём перебираются строки оформления, проверяется условие и меняется свойство ЦветФона объекта ОформлениеСтроки.
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
Если ОформлениеСтроки.ДанныеСтроки.Просрочен Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.СветлоРозовый;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Такой подход работает только при отображении данных на экране и не влияет на хранимые данные. Учтите, что обработчик вызывается часто — при каждой прокрутке списка, поэтому код внутри должен быть максимально лёгким, без запросов к базе данных.
Табличный документ и печатные формы
В табличном документе (печатной форме, макете) цвет ячейки задаётся напрямую через свойство области: Область.ЦветФона, Область.ЦветТекста. Обычно это делается при программном формировании печатной формы — после вывода области проверяется условие и меняется оформление нужных ячеек. Изменить цвет уже распечатанного документа без повторного формирования нельзя.
Проверка результата и типичные ошибки
После настройки обязательно проверьте результат в режиме предприятия: откройте список, найдите строку, которая точно удовлетворяет условию, и убедитесь, что она окрашена. Затем проверьте строку, которая условию не соответствует, — она должна остаться стандартной. Полезно также прокрутить список и открыть его под другим пользователем, чтобы исключить влияние персональных настроек.
На практике чаще всего встречаются следующие ошибки. Первая — условие отбора ссылается на поле, которого нет в запросе динамического списка: оформление молча не срабатывает. Вторая — оформление добавлено к форме, но не указаны оформляемые поля, и подсветка не видна. Третья — несколько элементов условного оформления конфликтуют: применяется тот, что выше в списке, и «неправильный» цвет перекрывает нужный.
Ещё одна частая причина «не работает» — изменения внесены в конфигураторе, но конфигурация базы данных не обновлена, либо пользователь работает с сохранённым вариантом настроек, который перекрывает типовое оформление. В этом случае помогает сброс настроек формы или варианта отчёта к стандартным.
Как проверить результат
Окрашена заданным цветом сразу при открытии списка
Цвет не появился или появляется только после обновления вручную
Осталась со стандартным оформлением
Окрашены все строки — условие составлено неверно
Оформление одинаковое у всех
У части пользователей свои цвета — мешают сохранённые настройки
Прокрутка плавная
Список подтормаживает — проверьте код обработчиков
Часто задаваемые вопросы
Можно ли изменить цвет строки без доступа к конфигуратору?
Да, но только в отчётах на СКД: откройте настройки варианта отчёта и добавьте условное оформление на соответствующей вкладке. Для списков документов и справочников без конфигуратора или расширения изменить оформление нельзя — там нет пользовательского механизма раскраски строк.
Почему условное оформление не срабатывает, хотя условие верное?
Чаще всего поле, по которому строится отбор, отсутствует в запросе динамического списка или в данных формы. Также проверьте, что у элемента оформления заполнены оформляемые поля (при программном добавлении) и что конфигурация базы данных обновлена после изменений.
Как раскрасить только одну колонку, а не всю строку?
На вкладке «Оформляемые поля» элемента условного оформления укажите конкретную колонку вместо пустого списка. Программно это делается через ЭлементОформления.Поля.Элементы.Добавить() с указанием имени поля.
Можно ли задать разные цвета для разных условий в одном списке?
Да. Добавьте несколько элементов условного оформления — по одному на каждое условие и цвет. Учтите, что если строка подпадает под несколько условий, применяется оформление элемента, расположенного выше в списке, поэтому порядок элементов имеет значение.
Сохранится ли раскраска при обновлении конфигурации?
Если оформление настроено в типовой форме, находящейся на поддержке, обновление может затереть изменения. Чтобы этого избежать, реализуйте условное оформление через расширение конфигурации — оно не затрагивает типовые объекты и переживает обновления.
Как убрать изменение цвета и вернуть стандартный вид?
Удалите или отключите соответствующий элемент условного оформления в конфигураторе или в коде формы. Если проблема в пользовательских настройках отчёта, откройте настройки варианта и выберите «Установить стандартные настройки» — типовое оформление восстановится.
Что важно запомнить
В управляемых формах 1С цвет строки меняется условным оформлением: в конфигураторе — через свойство таблицы списка, программно — через коллекцию УсловноеОформление с отбором, цветом и оформляемыми полями. В отчётах СКД используйте вкладку «Условное оформление» варианта, в обычных формах — обработчик ПриПолученииДанных. Проверяйте наличие поля условия в данных списка и помните о влиянии пользовательских настроек.