При разработке управляемых форм часто возникает задача сгруппировать команды табличной части или формы в отдельное выпадающее меню, чтобы не перегружать интерфейс. Однако разработчики сталкиваются с ситуацией: свойство Подсказка у объекта КомандаФормы заполнено, но при наведении курсора мыши на пункт внутри подменю всплывающая подсказка (tooltip) не появляется. Разберем по шагам, почему так происходит и какие существуют альтернативные способы решения этой задачи.
Проанализируем архитектуру элементов интерфейса в управляемом приложении. В управляемых формах свойство Подсказка задается непосредственно для объекта КомандаФормы. Элемент интерфейса КнопкаФормы (или кнопка командной панели) наследует это свойство от связанной с ним команды.
Главная причина: платформа 1С:Предприятие отрисовывает группы с видом Подменю, контекстные меню и выпадающие списки как стандартные системные меню. На уровне движка платформы механизм всплывающих подсказок (tooltips) при наведении курсора на пункты выпадающих меню не поддерживается. Подсказка отображается исключительно у тех кнопок, которые физически расположены непосредственно на самой командной панели.
Выясним, какие варианты обхода этого ограничения можно применить на практике.
Рассмотрим вариант, когда команды необходимо сгруппировать логически, но выносить их в отдельное выпадающее меню не обязательно. Если кнопки будут размещены в плоскости панели, механизм подсказок сработает штатно.
Вид со значения Подменю на Группа кнопок или Компактная группа кнопок.После этого элементы расположатся горизонтально на панели, и при наведении курсора подсказка из свойства Подсказка команды будет корректно всплывать.
Если в подменю спрятаны команды, у которых нет понятного текста (например, кнопки только с пиктограммой), пользоваться ими без подсказки неудобно. Разберем следующий подход:
Подменю оставим только второстепенные команды с понятными названиями.Поскольку всплывающее описание в выпадающих списках недоступно, единственным источником информации для пользователя остается текст самого пункта меню. Проанализируем свойства команды и скорректируем свойство Заголовок так, чтобы действие было интуитивно понятно без дополнительного всплывающего текста.
Если выпадающий список команд строго необходим, но перед открытием меню пользователю нужно показать подсказку к общей кнопке, рассмотрим программный вызов через метод ПоказатьВыборИзМеню.
Разберем по шагам, как настроить такую логику:
Подсказка. При наведении на саму кнопку подсказка будет отображаться.
&НаКлиенте
Процедура ДействияТаблицы(Команда)
СписокДействий = Новый СписокЗначений;
СписокДействий.Добавить("Действие1", "Заполнить по остаткам");
СписокДействий.Добавить("Действие2", "Очистить табличную часть");
Оповещение = Новый ОписаниеОповещения("ПослеВыбораДействия", ЭтотОбъект);
ПоказатьВыборИзМеню(Оповещение, СписокДействий, Элементы.КоманднаяПанельТаблицы);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораДействия(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
Если ВыбранныйЭлемент.Значение = "Действие1" Тогда
// Обработка первого действия
ИначеЕсли ВыбранныйЭлемент.Значение = "Действие2" Тогда
// Обработка второго действия
КонецЕсли;
КонецПроцедуры
Таким образом, мы сохраняем подсказку для головной кнопки и компактность интерфейса за счет выпадающего списка действий.