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