Как сделать шрифт кнопки в панели "Сервис" полужирным в управляемом интерфейсе?

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

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

Мы проанализируем обсуждение проблемы, рассмотрим неудачные попытки решения и детально разберем рабочий способ, найденный опытным путем (близкий по духу к недокументированному использованию стандартных форм), который базируется на особенностях наследования команд в иерархии подсистем.

Постановка задачи и ограничения платформы

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

Оформление определяется принадлежностью команды к стандартной группе (в отличие от механизмов условного оформления):

  1. Панель навигации (слева или сверху): содержит ссылки на списки (включая методы доработки динамических списков), отчеты и разделы.
  2. Панель действий (обычно сверху): содержит команды создания, отчеты и сервисные функции. Внутри она делится на группы:
    • Создать — для добавления новых объектов.
    • Отчеты — для вызова отчетов.
    • Сервис — для обработок и служебных инструментов.
    • Важное — группа, которая выделяет команды жирным шрифтом.

Задача состоит в том, чтобы разместить команду в группе Сервис (логически), но придать ей визуальный стиль группы Важное (полужирный шрифт).

Попытка решения через графическое представление

Первая идея, которая приходит в голову при попытке изменить внешний вид кнопки — использовать картинку. Логика следующая: если нельзя изменить шрифт программно, давайте нарисуем картинку, на которой текст уже написан жирным шрифтом, и назначим её команде.

Давайте разберем, почему этот метод не работает в контексте Панели действий подсистемы.

У объекта конфигурации Команда действительно есть свойство Картинка. Однако, управляемый интерфейс рендерит (отрисовывает) элементы по-разному в зависимости от места их размещения:

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

Рабочее решение: Манипуляция группами в иерархии подсистем

Единственный способ повлиять на жирность шрифта стандартными средствами — это заставить платформу думать, что команда относится к группе Важное. Но нам нужно, чтобы она находилась в Сервисе. Как совместить эти два требования?

Решение кроется в механизме того, как платформа объединяет настройки командного интерфейса для вложенных подсистем. Если у нас есть иерархия подсистем (Родительская -> Подчиненная), мы можем настроить видимость одной и той же команды по-разному на разных уровнях.

Давайте пошагово разберем алгоритм действий, который позволяет добиться эффекта «жирной кнопки в Сервисе».

Шаг 1. Подготовка структуры подсистем

Убедитесь, что у вас есть следующая структура:

  1. Родительская подсистема (например, «Продажи» или «Администрирование»).
  2. Подчиненная подсистема (например, «ДополнительныеИнструменты»), входящая в состав родительской.

Шаг 2. Настройка интерфейса в Родительской подсистеме

Откройте командный интерфейс Родительской подсистемы:

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

На этом этапе в родительском разделе команда отображается стандартным шрифтом в меню «Сервис».

Шаг 3. Настройка интерфейса в Подчиненной подсистеме

Теперь откройте командный интерфейс Подчиненной подсистеме:

  1. Найдите ту же самую команду.
  2. Включите её видимость и разместите её в группе Панель действий.Важное.

Результат и объяснение механизма

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

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

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

Альтернативные подходы

Если описанный выше метод кажется вам ненадежным (так как он эксплуатирует особенности поведения платформы, которые могут быть изменены в будущих обновлениях), рассмотрим более архитектурно правильный, но трудоемкий вариант.

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

Преимущества такого подхода:

  1. На форме вы можете размещать кнопки типа КнопкаФормы.
  2. Для кнопок формы доступно свойство Шрифт, где можно явно задать Полужирный, изменить размер или цвет.
  3. Вы можете использовать декорации, картинки и группировки без ограничений командного интерфейса подсистем.

Код для вызова такой формы можно поместить в команду, которая будет единственной точкой входа, или же сделать эту форму рабочей областью начальной страницы.

Заключение

Подведем итог. В стандартном управляемом интерфейсе 1С нет прямой настройки «Сделать жирным» для команд группы «Сервис». Однако, мы выяснили, что:

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

← На главную