Как программно настроить условное оформление формы списка в управляемом приложении 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Основные принципы работы с условным оформлением в УФ

Важно помнить, что в управляемом приложении мы не работаем напрямую с оформлением каждой ячейки при отрисовке, так как это негативно сказывается на производительности клиент-серверного взаимодействия. Вместо этого мы используем механизм УсловноеОформление, встроенный в ДинамическийСписок. Главное правило: все настройки должны выполняться на сервере, желательно при создании формы.

Шаг 1: Настройка в процедуре ПриСозданииНаСервере

Для того чтобы система применила настройки единожды при открытии формы, мы используем обработчик ПриСозданииНаСервере. Мы обращаемся к объекту Список, который является нашим динамическим списком на форме, и добавляем в его коллекцию УсловноеОформление новый элемент. Разберем этот процесс по пунктам:

  1. Добавляем новый элемент в коллекцию УсловноеОформление.Элементы.
  2. В добавленном элементе задаем Оформление — это визуальные параметры (цвет фона, шрифты и т.д.).
  3. Настраиваем Отбор — здесь мы указываем условие, при котором оформление должно сработать.
  4. При необходимости указываем Поля, к которым должно применяться оформление. Если коллекцию полей оставить пустой, оформление применится ко всей строке.

Пример программной реализации

Рассмотрим конкретный пример кода, который необходимо разместить в модуле формы:


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

Почему не стоит использовать клиентские процедуры

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

Практические советы

Для более тонкой настройки оформления следуйте этим рекомендациям:

Теперь вы знаете, как правильно и профессионально подходить к визуальному оформлению списков в управляемых формах 1С. Этот метод является стандартным и наиболее производительным решением в современной архитектуре платформы.

← На главную