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