Часто в работе бухгалтера возникает необходимость визуально быстро определять состояние документов. Например, выделить зеленым цветом оплаченные счета, желтым — неоплаченные, а красным — те, по которым прошел срок оплаты. Рассмотрим, как реализовать такую задачу в системе 1С:Предприятие 8.
Для современных конфигураций на управляемых формах самым надежным и быстрым способом является УсловноеОформление. Этот механизм позволяет задавать правила отображения данных, не перегружая систему программным кодом.
Разберем процесс настройки по шагам:
ДинамическийСписок (обычно это Общий журнал или форма списка документов).УсловноеОформление.ЦветФона и укажите нужный цвет (например, светло-зеленый).СтатусОплаты, который предварительно должен быть добавлен в запрос динамического списка.Важно помнить, что для работы этого метода данные о статусе оплаты должны быть доступны в запросе динамического списка. Если логика расчета оплаты сложная, лучше вывести вычисляемое поле в запрос заранее, чтобы не снижать производительность системы при открытии журнала.
Если требуется более гибкая настройка или динамическое изменение условий, вы можете использовать программное добавление элементов оформления в обработчике ПриСозданииНаСервере. Посмотрим, как это выглядит на примере кода:
// Пример добавления правила для Зеленого цвета
НовыйЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = НовыйЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.СтатусОплаты");
ЭлементОтбора.ПравоеЗначение = 1; // Допустим, 1 - это оплачено
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
Используя этот подход, мы создаем объект УсловноеОформление, добавляем в него элементы отбора и связываем их с цветами из коллекции WebЦвета. Это позволяет реализовать любые сложные условия, не изменяя структуру метаданных.
Если вы работаете в старых конфигурациях (обычные формы), используйте событие ПриПолученииДанных у ТабличногоПоля. Этот метод позволяет перехватывать каждую строку перед выводом на экран и менять её визуальные свойства:
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
Для каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
Если ОформлениеСтроки.ДанныеСтроки.СуммаДокумента = 0 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Здесь мы перебираем коллекцию ОформленияСтрок, проверяем данные текущей строки ДанныеСтроки и, если условие выполняется, присваиваем свойству ЦветФона нужное значение.
Чтобы система не «тормозила» при просмотре списков, придерживайтесь следующих правил:
WebЦвета.Теперь, когда вы разобрали основные методы, вы сможете самостоятельно реализовать раскраску списков, сделав работу с программой удобнее и нагляднее!