Как настроить или вернуть отображение рамок групп в интерфейсе «Такси» на управляемых формах 1С?

Программист 1С v8.3 (Управляемые формы)
← На главную

При переходе на интерфейс «Такси» многие разработчики и пользователи сталкиваются с неприятной особенностью: привычные тонкие рамки вокруг групп элементов, которые помогали визуально структурировать форму, исчезают или превращаются в «толстые» цветовые пятна. Это связано с глобальной сменой концепции дизайна 1С — переходом от классического стиля (скевоморфизма) к «плоскому» интерфейсу. В этой статье мы подробно разберем, почему это происходит, как ведут себя разные версии платформы и какими способами можно добиться качественного визуального разделения элементов.

Проблема отрисовки рамок в разных версиях платформы

Для начала проанализируем ситуацию: в старых версиях управляемых форм (до появления «Такси» или в режиме совместимости с ранними версиями 8.3) свойство Отображение в значении Сильное выделение рисовало четкую, тонкую серую рамку. Однако, начиная с версий 8.3.14, 8.3.15 и выше, поведение платформы изменилось. Теперь свойство Сильное выделение чаще всего просто заливает фон группы серым или желтоватым цветом, не создавая четкой границы.

Рассмотрим, как менялось поведение платформы:

  1. Версии до 8.3.14: Позволяли выводить тонкую рамку при включении заголовка группы или использовании сильного выделения.
  2. Версии 8.3.15–8.3.17: Практически полностью игнорируют контурную отрисовку в интерфейсе «Такси», заменяя её фоновым выделением.
  3. Современные релизы (8.3.20+): Предлагают использовать «Компактный интерфейс», где границы элементов прорисованы несколько четче, но все еще в рамках «плоского» дизайна.

Вариант 1: Использование свойства «Отображение управления»

Разберем первый способ, который позволяет имитировать рамку через стандартные настройки. Посмотрим на свойства элемента формы Группа. Чтобы рамка (или хотя бы ее подобие) появилась, платформа требует наличия заголовка. Если заголовок пустой, рамка зачастую не отрисовывается вовсе.

Выполним следующие шаги:

  1. Установим вид группы в значение Обычная группа.
  2. В свойстве Отображение выберем Сильное выделение.
  3. Обязательно заполним поле Заголовок и установим флаг Отображать заголовок.

В некоторых версиях платформы это создаст горизонтальную линию сверху с текстом заголовка, что визуально отделит блок данных от остальной формы. Однако полной рамки по периметру в «Такси» добиться таким образом сложно.

Вариант 2: Обходной путь через «Группу страниц»

Существует «хак», который часто используют опытные разработчики. Если стандартная группа не дает рамки, мы можем использовать элемент Группа страниц. Проанализируем, как это работает: элементы страниц в 1С имеют четкую границу контента.

Рассмотрим алгоритм реализации:

  1. Создадим на форме элемент Группа страниц.
  2. Установим свойство Отображение закладок в значение Не отображать.
  3. Внутри этой группы создадим одну Страницу.
  4. Поместим все нужные элементы внутрь этой страницы.

В результате платформа может отрисовать тонкий контур вокруг содержимого страницы, так как она ожидает, что там может быть переключение вкладок. Этот метод дает наиболее близкий результат к «старым» рамкам, хотя и добавляет лишний уровень вложенности в структуру формы.

Вариант 3: Использование декораций для разделения

Если нам не удается получить замкнутую рамку, стоит обратить внимание на современные рекомендации 1С по дизайну. Вместо того чтобы «запирать» элементы в коробки, проанализируем возможность разделения их линиями. Для этого используются элементы типа Декорация - Линия.

Посмотрим на программную настройку такого разделителя:


// Пример настройки декоративной линии программно, если нужно динамически управлять формой
ЭлементЛиния = Элементы.Добавить("ДекорацияРазделитель", Тип("ДекорацияФормы"), ГруппаКонтейнер);
ЭлементЛиния.Вид = ВидДекорацииФормы.Линия;
ЭлементЛиния.Линия = Новый Линия(ТипЛинииВизуальногоОбъекта.Сплошная, 1);
ЭлементЛиния.ЦветРамки = ЦветаСтиля.ТекстВторостепенногоНадписи;

Горизонтальные линии сверху и снизу логического блока воспринимаются пользователем гораздо легче, чем тяжелые рамки с заливкой фона. Это соответствует концепции «воздушного» интерфейса.

Вариант 4: Манипуляции с цветом фона и отступами

Как отмечал автор темы, игра с цветами фона вложенных групп часто дает «толстое чудо». Выясним причину: это происходит из-за того, что у каждой группы в 1С есть автоматические внутренние отступы (padding), которые невозможно программно установить в 0 пикселей. Когда мы вкладываем одну группу с серым фоном в другую с белым, мы видим широкую серую полосу вместо тонкой линии.

Чтобы минимизировать этот эффект, попробуем следующее:

  1. Установим у внешней группы ЦветФона (это будет цвет нашей «рамки»).
  2. Внутрь поместим вторую группу, у которой ЦветФона совпадает с фоном формы (обычно белый).
  3. Для внутренней группы установим свойство РастягиватьПоГоризонтали и РастягиватьПоВертикали в значение Да.

Важный момент: если ваша версия платформы позволяет использовать Компактный интерфейс, обязательно включите его в параметрах запуска или настройках пользователя. В компактном режиме отступы между элементами уменьшаются, и «толщина» такой самодельной рамки станет визуально приемлемой.

Программное управление выделением группы

Иногда полезно выделять группу только при определенных условиях. Рассмотрим пример кода, который меняет визуальное состояние группы в зависимости от данных на форме:


&НаСервере
Процедура ПриИзмененииДанныхНаСервере()
    
    // Если условие выполнено, акцентируем внимание на группе
    Если Объект.ВажныйПоказатель > 100 Тогда
        Элементы.ГруппаРеквизитов.Отображение = ОтображениеГруппы.СильноеВыделение;
        Элементы.ГруппаРеквизитов.ЦветФона = Новый Цвет(255, 250, 205); // Светло-желтый
    Иначе
        Элементы.ГруппаРеквизитов.Отображение = ОтображениеГруппы.Обычное;
        Элементы.ГруппаРеквизитов.ЦветФона = Новый Цвет(); // Автоматический
    КонецЕсли;
    
КонецПроцедуры

Этот метод не дает тонкую рамку, но эффективно решает задачу визуального акцентирования, ради чего рамки обычно и используются.

Подведение итогов

Проанализировав возможности платформы 8.3, можно сделать вывод: классические рамки уходят в прошлое. Чтобы форма выглядела профессионально в интерфейсе «Такси», мы рекомендуем:

Помните, что интерфейс 1С стремится к упрощению, и избыточное количество рамок («клеток») на форме перегружает внимание пользователя и мешает быстрой работе с данными.

← На главную