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

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

Часто в работе бухгалтера возникает необходимость визуально быстро определять состояние документов. Например, выделить зеленым цветом оплаченные счета, желтым — неоплаченные, а красным — те, по которым прошел срок оплаты. Рассмотрим, как реализовать такую задачу в системе 1С:Предприятие 8.

Использование механизма «Условное оформление»

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

Разберем процесс настройки по шагам:

  1. Откройте конфигуратор и найдите форму, в которой расположен ваш ДинамическийСписок (обычно это Общий журнал или форма списка документов).
  2. В свойствах элемента формы найдите пункт УсловноеОформление.
  3. Добавьте новое правило. В поле «Оформление» выберите свойство ЦветФона и укажите нужный цвет (например, светло-зеленый).
  4. В поле «Отбор» укажите условие, по которому будет применяться цвет. Например, привяжите его к реквизиту СтатусОплаты, который предварительно должен быть добавлен в запрос динамического списка.

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

Программная реализация в управляемых формах

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


// Пример добавления правила для Зеленого цвета
НовыйЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = НовыйЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.СтатусОплаты");
ЭлементОтбора.ПравоеЗначение = 1; // Допустим, 1 - это оплачено
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);

Используя этот подход, мы создаем объект УсловноеОформление, добавляем в него элементы отбора и связываем их с цветами из коллекции WebЦвета. Это позволяет реализовать любые сложные условия, не изменяя структуру метаданных.

Программный подход для обычных форм

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


Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Для каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
        Если ОформлениеСтроки.ДанныеСтроки.СуммаДокумента = 0 Тогда
            ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Здесь мы перебираем коллекцию ОформленияСтрок, проверяем данные текущей строки ДанныеСтроки и, если условие выполняется, присваиваем свойству ЦветФона нужное значение.

Рекомендации по реализации

Чтобы система не «тормозила» при просмотре списков, придерживайтесь следующих правил:

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

← На главную