Почему не отображается подсказка у команды в подменю управляемой формы 1С?

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

При разработке управляемых форм часто возникает задача сгруппировать команды табличной части или формы в отдельное выпадающее меню, чтобы не перегружать интерфейс. Однако разработчики сталкиваются с ситуацией: свойство Подсказка у объекта КомандаФормы заполнено, но при наведении курсора мыши на пункт внутри подменю всплывающая подсказка (tooltip) не появляется. Разберем по шагам, почему так происходит и какие существуют альтернативные способы решения этой задачи.

Причины и особенности работы платформы

Проанализируем архитектуру элементов интерфейса в управляемом приложении. В управляемых формах свойство Подсказка задается непосредственно для объекта КомандаФормы. Элемент интерфейса КнопкаФормы (или кнопка командной панели) наследует это свойство от связанной с ним команды.

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

Выясним, какие варианты обхода этого ограничения можно применить на практике.

Способ 1. Замена вида группы с «Подменю» на «Группа кнопок»

Рассмотрим вариант, когда команды необходимо сгруппировать логически, но выносить их в отдельное выпадающее меню не обязательно. Если кнопки будут размещены в плоскости панели, механизм подсказок сработает штатно.

  1. Откроем редактор управляемой формы в конфигураторе.
  2. Найдем группу командной панели, содержащую нужные кнопки.
  3. В палитре свойств группы изменим свойство Вид со значения Подменю на Группа кнопок или Компактная группа кнопок.

После этого элементы расположатся горизонтально на панели, и при наведении курсора подсказка из свойства Подсказка команды будет корректно всплывать.

Способ 2. Вынос ключевых кнопок на основную командную панель

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

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

Способ 3. Использование информативных заголовков команд

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

Способ 4. Программный вызов меню по кнопке

Если выпадающий список команд строго необходим, но перед открытием меню пользователю нужно показать подсказку к общей кнопке, рассмотрим программный вызов через метод ПоказатьВыборИзМеню.

Разберем по шагам, как настроить такую логику:

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

&НаКлиенте
Процедура ДействияТаблицы(Команда)
    
    СписокДействий = Новый СписокЗначений;
    СписокДействий.Добавить("Действие1", "Заполнить по остаткам");
    СписокДействий.Добавить("Действие2", "Очистить табличную часть");
    
    Оповещение = Новый ОписаниеОповещения("ПослеВыбораДействия", ЭтотОбъект);
    ПоказатьВыборИзМеню(Оповещение, СписокДействий, Элементы.КоманднаяПанельТаблицы);
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораДействия(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    
    Если ВыбранныйЭлемент = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если ВыбранныйЭлемент.Значение = "Действие1" Тогда
        // Обработка первого действия
    ИначеЕсли ВыбранныйЭлемент.Значение = "Действие2" Тогда
        // Обработка второго действия
    КонецЕсли;
    
КонецПроцедуры

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

← На главную