При переходе на интерфейс «Такси» многие разработчики и пользователи сталкиваются с неприятной особенностью: привычные тонкие рамки вокруг групп элементов, которые помогали визуально структурировать форму, исчезают или превращаются в «толстые» цветовые пятна. Это связано с глобальной сменой концепции дизайна 1С — переходом от классического стиля (скевоморфизма) к «плоскому» интерфейсу. В этой статье мы подробно разберем, почему это происходит, как ведут себя разные версии платформы и какими способами можно добиться качественного визуального разделения элементов.
Для начала проанализируем ситуацию: в старых версиях управляемых форм (до появления «Такси» или в режиме совместимости с ранними версиями 8.3) свойство Отображение в значении Сильное выделение рисовало четкую, тонкую серую рамку. Однако, начиная с версий 8.3.14, 8.3.15 и выше, поведение платформы изменилось. Теперь свойство Сильное выделение чаще всего просто заливает фон группы серым или желтоватым цветом, не создавая четкой границы.
Рассмотрим, как менялось поведение платформы:
Разберем первый способ, который позволяет имитировать рамку через стандартные настройки. Посмотрим на свойства элемента формы Группа. Чтобы рамка (или хотя бы ее подобие) появилась, платформа требует наличия заголовка. Если заголовок пустой, рамка зачастую не отрисовывается вовсе.
Выполним следующие шаги:
Обычная группа.Отображение выберем Сильное выделение.Заголовок и установим флаг Отображать заголовок.В некоторых версиях платформы это создаст горизонтальную линию сверху с текстом заголовка, что визуально отделит блок данных от остальной формы. Однако полной рамки по периметру в «Такси» добиться таким образом сложно.
Существует «хак», который часто используют опытные разработчики. Если стандартная группа не дает рамки, мы можем использовать элемент Группа страниц. Проанализируем, как это работает: элементы страниц в 1С имеют четкую границу контента.
Рассмотрим алгоритм реализации:
Группа страниц.Отображение закладок в значение Не отображать.Страницу.В результате платформа может отрисовать тонкий контур вокруг содержимого страницы, так как она ожидает, что там может быть переключение вкладок. Этот метод дает наиболее близкий результат к «старым» рамкам, хотя и добавляет лишний уровень вложенности в структуру формы.
Если нам не удается получить замкнутую рамку, стоит обратить внимание на современные рекомендации 1С по дизайну. Вместо того чтобы «запирать» элементы в коробки, проанализируем возможность разделения их линиями. Для этого используются элементы типа Декорация - Линия.
Посмотрим на программную настройку такого разделителя:
// Пример настройки декоративной линии программно, если нужно динамически управлять формой
ЭлементЛиния = Элементы.Добавить("ДекорацияРазделитель", Тип("ДекорацияФормы"), ГруппаКонтейнер);
ЭлементЛиния.Вид = ВидДекорацииФормы.Линия;
ЭлементЛиния.Линия = Новый Линия(ТипЛинииВизуальногоОбъекта.Сплошная, 1);
ЭлементЛиния.ЦветРамки = ЦветаСтиля.ТекстВторостепенногоНадписи;
Горизонтальные линии сверху и снизу логического блока воспринимаются пользователем гораздо легче, чем тяжелые рамки с заливкой фона. Это соответствует концепции «воздушного» интерфейса.
Как отмечал автор темы, игра с цветами фона вложенных групп часто дает «толстое чудо». Выясним причину: это происходит из-за того, что у каждой группы в 1С есть автоматические внутренние отступы (padding), которые невозможно программно установить в 0 пикселей. Когда мы вкладываем одну группу с серым фоном в другую с белым, мы видим широкую серую полосу вместо тонкой линии.
Чтобы минимизировать этот эффект, попробуем следующее:
ЦветФона (это будет цвет нашей «рамки»).ЦветФона совпадает с фоном формы (обычно белый).РастягиватьПоГоризонтали и РастягиватьПоВертикали в значение Да.Важный момент: если ваша версия платформы позволяет использовать Компактный интерфейс, обязательно включите его в параметрах запуска или настройках пользователя. В компактном режиме отступы между элементами уменьшаются, и «толщина» такой самодельной рамки станет визуально приемлемой.
Иногда полезно выделять группу только при определенных условиях. Рассмотрим пример кода, который меняет визуальное состояние группы в зависимости от данных на форме:
&НаСервере
Процедура ПриИзмененииДанныхНаСервере()
// Если условие выполнено, акцентируем внимание на группе
Если Объект.ВажныйПоказатель > 100 Тогда
Элементы.ГруппаРеквизитов.Отображение = ОтображениеГруппы.СильноеВыделение;
Элементы.ГруппаРеквизитов.ЦветФона = Новый Цвет(255, 250, 205); // Светло-желтый
Иначе
Элементы.ГруппаРеквизитов.Отображение = ОтображениеГруппы.Обычное;
Элементы.ГруппаРеквизитов.ЦветФона = Новый Цвет(); // Автоматический
КонецЕсли;
КонецПроцедуры
Этот метод не дает тонкую рамку, но эффективно решает задачу визуального акцентирования, ради чего рамки обычно и используются.
Проанализировав возможности платформы 8.3, можно сделать вывод: классические рамки уходят в прошлое. Чтобы форма выглядела профессионально в интерфейсе «Такси», мы рекомендуем:
Помните, что интерфейс 1С стремится к упрощению, и избыточное количество рамок («клеток») на форме перегружает внимание пользователя и мешает быстрой работе с данными.