При разработке интерфейсов на управляемых формах многие разработчики сталкиваются с неприятной особенностью платформы 1С:Предприятие. Когда вы используете УсловноеОформление для окрашивания фона строки или ячейки, при наведении курсора или активации этой строки стандартный системный цвет выделения перекрывает ваш настроенный цвет. В итоге пользователь видит не тот результат, который был задуман, а стандартную «синюю» или «серую» полоску, скрывающую важную информацию.
Разберем, почему так происходит и какие существуют альтернативные способы визуализации данных в таблицах, чтобы они оставались читаемыми и информативными в любых условиях.
Важно понимать, что в управляемых формах визуализация табличного поля работает на основе механизмов, близких к веб-технологиям. Системный слой выделения имеет высокий приоритет при отрисовке, чтобы обеспечить единообразие интерфейса во всех конфигурациях. Именно поэтому попытка просто «закрасить» фон ячейки часто оказывается неэффективной: при выделении строки ваш цвет оказывается «под» слоем системного выделения.
Полное отключение выделения строки в управляемых формах не предусмотрено разработчиками платформы, так как это нарушило бы пользовательскую навигацию и доступность интерфейса. Однако мы можем пойти по пути альтернативного дизайна.
Рассмотрим способы, которые позволят вам сохранить информативность таблицы и сделать акценты видимыми даже при активном фокусе на строке.
Вместо того чтобы полагаться исключительно на цвет фона, используйте изменение стиля текста. Это один из самых надежных способов, так как шрифт остается видимым поверх любого цвета выделения.
УсловноеОформление для вашего элемента формы.ЦветФона выберите Шрифт.Жирный или Наклонный.Такой подход позволяет пользователю мгновенно выделить нужную строку, не вступая в конфликт с системными настройками цветовой схемы Windows или самой 1С.
Хорошим решением является добавление в таблицу дополнительной колонки-флага. Если вы выводите в ячейку небольшую иконку (например, статусный значок или цветной маркер), она будет отрисовываться поверх фона. Иконки практически не подвержены искажению при выделении строки.
Чтобы реализовать это, выполните следующие шаги:
Число или Строка, либо используйте Картинка.ВидЭлемента как ПолеКартинки.УсловноеОформление задайте вывод нужной картинки в зависимости от значения данных.Если вы не хотите отказываться от цветовой кодировки, попробуйте менять не цвет фона, а ЦветТекста. Хотя системное выделение может влиять и на него, контрастный цвет (например, ярко-красный или темно-синий на стандартном светлом фоне выделения) зачастую читается значительно лучше, чем попытка изменить цвет заливки всей ячейки.
Если задача требует максимально сложного визуального оформления, которое невозможно реализовать штатными средствами, можно вывести данные в ПолеHTMLДокумента. Это превращает вашу таблицу в полноценную веб-страницу.
Внутри ПолеHTMLДокумента вы полностью управляете стилями через CSS. Вы сможете задать любые цвета, границы и эффекты, которые система 1С уже не будет пытаться перекрыть своими стандартными выделениями.
Проанализировав ситуацию, мы понимаем, что попытки «сломать» логику работы платформы обычно приводят к нестабильному поведению приложения. Вместо этого мы предлагаем следующие принципы проектирования:
Таким образом, хотя штатного способа отключить наложение цвета при выделении строки не существует, использование комбинаций шрифтов, иконок и цвета текста позволит вам достичь желаемого результата, не создавая проблем в работе пользователя и не конфликтуя с архитектурой 1С:Предприятие.