Условное оформление с группировкой в 1С

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

Постановка

Для примера, предположим, что у нас есть список контрагентов. Каждый контрагент имеет заполненные поля Задолженность и Уровень риска. Задолженность отражает текущий уровень дебиторской задолженности (в рублях) перед нашей компанией. Уровень риска (варианты: Низкий, Средний, Высокий), в свою очередь, отражает уровень риска проведения сделок с данным контрагентом. Требуется выделить красным те из них, которые имеют задолженность свыше 1 миллиона рублей, либо чей уровень риска оценивается как Высокий.

Визуальная настройка

Для начала попытаемся решить задачу с помощью визуальной настройки условного оформления. Для этого выбираем интересующую форму и открываем ссылку УсловноеОформление в Конфигураторе. Задаём Отбор, Оформление и выбираем Оформляемые поля.

Обратите внимание, что условия сгруппированы в Группу ИЛИ. Таким образом, оформление подключится при наступлении любого из указанных событий.

Настройка завершена. Проверяем результат.

Всё прошло успешно. «Проблемные» контрагенты подсвечены красным цветом.

Программная настройка

Теперь реализуем такую же функциональность, используя программный интерфейс.

Позаимствуем код из Библиотеки стандартных подсистем (для компактности публикации я вырезал комментарии):

Объявления этих функций можно найти здесь:

Если в Вашей конфигурации не используется БСП, Вы можете просто скопировать код выше.

Теперь переходим к самому главному. В процедуре ПриСозданииНаСервере() формы добавляем обработчик установки условного оформления.

Добавим элементы условного оформления:

Создадим группу отбора ИЛИ:

Определим список оформляемых полей:

Установим способ оформления:

И, наконец, включим условия в группу:

Итоговый вариант обработчика:

Снова проверяем результат:

УслованоеОформление_Результат2Результат совпадает с уже полученным ранее решением. Цель достигнута.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *