Разработчики при переходе на современный интерфейс «Такси» часто сталкиваются с неприятной особенностью платформы «1С:Предприятие 8.3»: стандартные свойства элементов формы, такие как ЦветРамки, ВертикальныеЛинии, ГоризонтальныеЛинии или локальный флаг ЧередованиеЦветовСтрок у таблиц и динамических списков, перестают работать или ведут себя не так, как ожидается. Пользователи при этом могут жаловаться на низкую контрастность интерфейса и просить сделать границы ячеек более четкими (например, черными) или выделить строки через одну.
В этой статье мы подробно разберем, почему возникает эта проблема, как устроена логика рендеринга форм в интерфейсе «Такси», и рассмотрим четыре практических способа решения этой задачи, включая современные механизмы платформы.
Интерфейс «Такси» построен на концепции «flat design» (плоский дизайн). Его основная задача — визуально разгрузить рабочее пространство пользователя, убрать лишние «шумящие» рамки, сетки и сделать фокус на данных. Для обеспечения этого единообразия разработчики платформы применили жесткие правила рендеринга элементов:
Тем не менее, решить задачу повышения контрастности динамического списка можно. Рассмотрим доступные инструменты.
---
Если конфигурация находится на поддержке, напрямую менять ее свойства и стили нельзя. Однако мы можем использовать механизм расширений конфигурации, который позволяет точечно переопределить визуальный стиль всей системы, не снимая основную конфигурацию с поддержки.
Выполним следующие шаги для изменения стилей:
ЦветРамки, ЦветФонаЧередованияСтрок или свойства, отвечающие за сетки таблиц, и установите для них требуемые контрастные цвета (например, темно-серый или черный для рамок).Преимущество метода: Изменения применяются корректно на уровне платформы, сохраняется высокая производительность отрисовки интерфейса, конфигурация остается на поддержке.
Минусы: Стиль меняется глобально для всей системы (всех таблиц и списков), а не для одного конкретного списка.
---
Если вам нужно раскрасить строки динамического списка программно и индивидуально для конкретной формы, начиная с версии платформы 8.3.10, следует использовать событие таблицы ПриПолученииДанныхНаСервере.
В отличие от устаревшего и медленного метода ПриВыводеСтроки, новый обработчик работает пакетно. Он вызывается один раз для всей порции строк, которые выводятся на экран монитора в данный момент, что исключает сильные задержки при прокрутке больших списков.
Проанализируем пример реализации программной раскраски:
&НаСервере
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
// Счетчик для реализации собственного чередования цветов
Счетчик = 0;
Для Каждого СтрокаСписка Из Строки Цикл
// Определяем цвет в зависимости от четности строки в текущем пакете
Если Счетчик % 2 = 0 Тогда
ЦветСтроки = Новый Цвет(240, 240, 240); // Светло-серый
Иначе
ЦветСтроки = Новый Цвет(255, 255, 255); // Белый
EndЕсли;
// Применяем оформление к ячейкам строки
Для Каждого КлючИЗначение Из СтрокаСписка.Значение.Оформление Цикл
ЯчейкаОформления = КлючИЗначение.Значение;
ЯчейкаОформления.УстановитьЗначениеПараметра("ЦветФона", ЦветСтроки);
КонецЦикла;
Счетчик = Счетчик + 1;
КонецЦикла;
КонецПроцедуры
Важное архитектурное замечание: Динамический список подгружает данные порциями. Строки не имеют сквозных фиксированных индексов (номеров по порядку) в рамках всей таблицы базы данных. Поэтому при прокрутке списка вверх-вниз или при изменении сортировки "четность" строк внутри пакета может смещаться, вызывая визуальное "мерцание" или сбивку чередования цветов на стыках порций данных.
---
Для создания стабильного чередования строк без изменения глобальных стилей и без использования программного кода можно применить аналитический трюк в самом запросе динамического списка совместно с механизмом Условного оформления.
Разберем этот метод по шагам:
Посмотрим на пример такого запроса для справочника с числовыми кодами:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.Код КАК Код,
СправочникНоменклатура.Наименование КАК Наименование,
СправочникНоменклатура.Код % 2 КАК Четность
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЦветФона.Четность Равно 1.Ограничение метода: Чередование является "псевдочередованием". Если в базе данных будут пропущены коды (например, удален элемент с кодом 4, и после 3 идет сразу 5), то на экране окажутся две подряд окрашенные строки. Также этот метод не рекомендуется использовать с тяжелыми математическими расчетами внутри запроса на больших таблицах, чтобы не снижать производительность СУБД.
---
Если реальные границы (рамки) ячеек таблицы включить не удается из-за ограничений интерфейса «Такси», хорошим UX-решением является визуальное разделение колонок с помощью условного оформления текста или фона отдельных ключевых полей.
Например, мы можем задать для определенных колонок (например, "Статус", "Сумма") индивидуальные фоновые подложки или изменить начертание шрифта. Это компенсирует отсутствие контрастной сетки таблицы и позволит пользователю легко ориентироваться в строках динамического списка.
Для этого в Условном оформлении формы достаточно настроить правила окраски фона конкретных колонок на постоянной основе (без дополнительных условий), что визуально разобьет сплошной плоский список на понятные вертикальные зоны.