
Предлагаю добавить режим "Избранное" в навигатор по метаданным.
Этот режим переключается кнопкой в форме навигатора и повторными вызовами команды "Навигатор по метаданным". Т.е. после открытия навигатора еще раз жмем то же сочетание клавиш и включает новый режим. Еще раз жмем - снова возвращается полный режим.
В режиме "Избранное"
В полном режиме навигатора
В API
Добавить команду для добавления объекта метаданных в избранное. Смотри пример в ИР адаптере "Копировать ссылку"
Функция СсылкаНаОбъектМДВДеревеКонфигурации(Знач ПодключениеИР, Знач ТолькоВерхнийУровень = Ложь, выхИмяРасширения = "") Экспорт
МодулиИР = МодулиИР(ПодключениеИР);
ОткрытьКонтекстноеМеню();
Попытка
ТипАктивногоЭлемента = ТурбоКонф.ПолучитьТипАктивногоЭлемента();
Исключение
// < 6.3.9145.3319
ТипАктивногоЭлемента = Неопределено;
КонецПопытки;
Сообщить("ТипАктивногоЭлемента=" + ТипАктивногоЭлемента);
Если Ложь
Или ТипАктивногоЭлемента = ТипЭлемента.ЭлементМеню // Не работает
Или ТурбоКонф.НайтиЭлементПоИмени("Свойства", "элемент меню")
Или ТурбоКонф.НайтиЭлементПоИмени("Добавить", "элемент меню")
//Или ПолучитьТипТекущегоЭлемента() = ТипЭлемента.ЭлементМеню // турбоконф не видит активность контекстного меню
Тогда
Если КликнутьПоЭлементу("Справочная информация", "элемент меню") Тогда
// Частично дублируем логику см. ИмяМодуляДокумента Мультиметка250108_112016
Заголовок = МодулиИР.ирОбщий.ПервыйФрагментЛкс(ТурбоКонф.ПолучитьЗаголовокКонфигуратора(Конфигуратор.ГлавноеОкно), "- Конфигуратор -", Ложь);
ЗакрытьДочернееОкноКонфигуратора();
ВернутьсяИзПереходаКонфигуратора();
Если ПустаяСтрока(Заголовок) Тогда
ПоказатьВсплывающееУведомление("Разверните дочерние окна конфигуратора для ускорения получения ссылки на объект метаданных");
ТурбоКонф.Ждать(50);
Иначе
ЧастиДвоеточия = СтрРазделитьЛкс(Заголовок, ":", Истина);
ИмяКорневогоТипа = ИдентификаторИзПредставленияЛкс(СтрокаБезПоследнегоФрагментаЛкс(ЧастиДвоеточия[0], " "));
Если ИмяКорневогоТипа = "Конфигурация" Тогда
ПолноеИмяОбъекта = "ОбщаяФорма." + ЧастиДвоеточия[1];
Иначе
ИмяОбъекта = ПоследнийФрагментЛкс(ЧастиДвоеточия[0], " ");
ПолноеИмяОбъекта = ИмяКорневогоТипа + "." + ИмяОбъекта;
Если Истина
И ЧастиДвоеточия.Количество() > 1
И ЧастиДвоеточия[1] <> "Справочная информация"
Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта + ".Форма." + ИдентификаторИзПредставленияЛкс(ЧастиДвоеточия[1]);
КонецЕсли;
КонецЕсли;
Возврат ПолноеИмяОбъекта;
КонецЕсли;
Иначе
ЗакрытьДочернееОкноКонфигуратора();
КонецЕсли;
КонецЕсли;
Фрагменты = ПутьВДеревеТабличногоПоля(ПодключениеИР);
Если Ложь
Или Фрагменты.Количество() < 2
Или Найти(Фрагменты[0], " ") > 0 // неполное дерево
Тогда
АктивироватьСтрокуДерева(Фрагменты);
Возврат "";
КонецЕсли;
Если Фрагменты[1] = "Общие" Тогда
Фрагменты.Удалить(1);
КонецЕсли;
ПозицияФрагмента = Фрагменты.Найти("Табличные части");
Если ПозицияФрагмента <> Неопределено Тогда
Если Фрагменты.Количество() > ПозицияФрагмента + 2 Тогда
Фрагменты.Вставить(ПозицияФрагмента + 2, "Реквизиты");
КонецЕсли;
КонецЕсли;
ПозицияФрагмента = Фрагменты.Найти("Перерасчеты");
Если ПозицияФрагмента <> Неопределено Тогда
Если Фрагменты.Количество() > ПозицияФрагмента + 2 Тогда
Фрагменты.Вставить(ПозицияФрагмента + 2, "Измерения");
КонецЕсли;
КонецЕсли;
Для Счетчик = 1 По Цел(Фрагменты.Количество() / 2) Цикл
ИндексФрагмента = 2*(Счетчик - 1) + 1;
ИмяМножественное = ИдентификаторИзПредставленияЛкс(Фрагменты[ИндексФрагмента],,, "");
ЕдинственноеИмя = МодулиИР.ирОбщий.ЕдинственноеИмяМДЛкс(ИмяМножественное);
Если ЕдинственноеИмя = Неопределено Тогда
ПоказатьВсплывающееУведомление("Неизвестный тип метаданных """ + ИмяМножественное + """");
Возврат "";
КонецЕсли;
Фрагменты[ИндексФрагмента] = ЕдинственноеИмя;
КонецЦикла;
ИмяКонфигурации = Фрагменты[0];
Фрагменты.Удалить(0); // Имя конфигурации/расширения
СсылкаВосстановления = СтрСоединить(Фрагменты, ".");
Пока ТолькоВерхнийУровень И Фрагменты.Количество() > 2 Цикл
Фрагменты.Удалить(Фрагменты.ВГраница());
КонецЦикла;
Ссылка = СтрСоединить(Фрагменты, ".");
ИмяОсновнойКонфигурации = ИмяОсновнойКонфигурации(ПодключениеИР);
Если ИмяОсновнойКонфигурации <> ИмяКонфигурации Тогда
выхИмяРасширения = ИмяКонфигурации;
СсылкаВосстановления = ИмяКонфигурации + " " + СсылкаВосстановления;
Ссылка = ИмяКонфигурации + " " + Ссылка;
КонецЕсли;
ТурбоКонф.Перейти(СсылкаВосстановления);
Возврат Ссылка;
КонецФункции
#1, 15 января 2025 08:32
Вопрос, не будут-ли лишняя картинка мозолить остальным глаза? Надо над этим моментом хорошо подумать. Возможно, если и добавлять пометку в виде звезды, то стоит подумать где... Например, в конце строки.
Если честно, как-то не очень выглядит, и лично мне, например мешает, если попробовать представить себе как это будет выглядеть визуально (см. картинку). Да и в целом функционал на самом деле сомнительный. Всегда можно почистить навигатор и оставить в списке то что нужно если это требуется, и докинуть новых объектов.
А тот кто имеет "избранные" метаданные и так их помнит и быстро найдет нажатием Ctrl + J и набрав например "общ наз выз сер"
#2, ред. 15 января 2025 08:47
(1) nytlenc, разместил звезду ты правильно, но только показал "включенный" вариант картинки. Такой будет в режиме "Избранное". А в полном режиме будет блеклый вариант (у тех строк, которые не добавлены в избранное). Так что привлекать много внимания он не будет.
#3, ред. 15 января 2025 08:59
(1) nytlenc,
Серьезно считаешь, что каждый раз набирать текст для часто используемых метаданных так же удобно как найти глазами и кликнуть на строке в небольшом списке?
Мне кажется очевидным, что это менее удобно.
#4, 15 января 2025 09:02
Похожий интерфейс сделан в программе ClipAngel (менеджере истории буфера обмена) https://sourceforge.net/projects/clip-angel/ . Картинка выше из него.
#5, 15 января 2025 09:10
(2) tormozit, ну в принципе блеклый вариант звезды наверное наименее "раздражает" глаз. Вынужден согласиться.
#6, ред. 15 января 2025 14:05
Если будет какой-то специальный режим для отображения избранного, то и звезд не нужно и так понятно, что это избранное. Добавлять удалять можно по правой кнопке в меню, два клика получится, зато нет избыточной информации в списке.
#7, ред. 15 января 2025 14:14
(6) bolsun,
Она может быть и полезной. Например в полном режиме видя включенную пометку "Звезда", можно быстрее находить объект, если изначально не был уверен что он есть в избранном но вероятность этого оценивал как большую.
Для добавления может и будет нормально (так же я сделал в инструменте "Интерфейсная панель"), но для удаления, которое в случае избранного часто бывает порциями, это будет не достаточно удобно. Либо в режиме "Избранное" нужно множественное выделение , чтобы удалять сразу несколько элементов. Еще переключатель с картинкой "Звезда" в полном режиме позволяет сразу понимать, добавился ли элемент в избранное, т.к. изменение его состояния сразу видно в списке. Если же выполнять команду контекстного меню, то можно вслепую надобавлять много объектов и только потом увидеть, что по какой то причине они все же не добавились.
#8, 15 января 2025 14:56
(7) tormozit, слишком пестро получается с этими звездочками они еще скачут туда-сюда, если разные конфигурации и длина имени.

Вот рандомно вывел их
#9, 15 января 2025 14:57
#10, 15 января 2025 14:58
Можно выделять избранное цветом (темно синий например)
#11, 15 января 2025 15:00
(10) bolsun, но это тоже так себе, т.к. могут использоваться разные темы оформления списка
#12, 15 января 2025 15:01
либо не выводить пустую звезду, может не будет тогда так отвлекать.
#13, 15 января 2025 15:04
да, так выглядит поспокойнее
#14, 15 января 2025 15:07
Попробуй разместить звезду в самом конце строки
#15, 15 января 2025 15:10
(14) tormozit, это уже сложнее, там обрезка происходит. У меня используется универсальный механизм для таких списков, там есть основной текст, вторичный текст, детали и т.д. не хочу его пока переделывать.
Вроде в последнем варианте и так неплохо, избранных то на самом деле еще меньше будет попадаться в списке.
#16, 15 января 2025 15:18
(15) Понял. Ну тогда сойдет и (13)
#17, 15 января 2025 16:52
Добавил Избранное в первом приближении.
6.3.9146.33843
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg
#18, ред. 15 января 2025 19:52
То, что сделано, вроде работает. Но добавлять в избранное я обычно хочу из дерева метаданных. Тут есть 2 подхода
#19, 15 января 2025 22:37
(18) tormozit, как ты определяешь к основной конфигурации или какому расширению принадлежит объект?
#20, ред. 15 января 2025 22:45
(19) bolsun, по имени корня дерева. Но правда восстановление позиции у меня сейчас идет всегда в дереве основной конфигурации. Не помню, работало ли это корректно ранее.
#21, 15 января 2025 22:44
(20) tormozit, и назад возвращаешь фокус?
#22, 15 января 2025 22:45
Да, проблема в восстановлении позиции.
#23, ред. 15 января 2025 22:52
Ну дорогой способ активировать окно расширения есть - по имени расширения найти его строку и открыть его через окно "Расширения конфигурации".
#24, 15 января 2025 23:05
Можешь напомнить, почему не подходит способ получить полное имя объекта в дереве переходя по родителям?
У делал такой прототип в свое время.
#25, ред. 15 января 2025 23:12
Еще нашел простой способ получить полное имя объекта.
Работает вроде быстро. Какие могут быть проблемы с использованием?
Я вижу только засорение окна сообщений.
#26, 15 января 2025 23:13
После этого по всем кэшам проверяем есть ли совпадения более одного раза и тогда уточняем, к какой конфигурации принадлежит объект.
#27, ред. 15 января 2025 23:24
Проверил, работает быстро даже на ERP (что логично, т.к. ищется не по всем объектам его вхождение ,а наоборот), версии 8.3.8 -8.3.27 поддерживаются.
#28, ред. 15 января 2025 23:33
(25) bolsun, Пробовал его. Он может быть долгим для больших объектов типа форм с настройками по умолчанию. Поэтому придется в окне настроек поиска ставить флажки так

Но считать текущие состояния флажков мы не можем, чтобы понять в каких строках надо жать клавишу Space.
#29, ред. 15 января 2025 23:30
Все же самый быстрый по пику способ получать полное имя - открывать окно "Справочная информация". Он для части типов объектов не работает, но зато максимальная длительность у него низкая и мусора не остается. А для остальных объектов уже можно применять более грязные способы.
#30, 15 января 2025 23:39
(29) tormozit, определять состояние флажков можем, т.к. TogglePattern поддерживается.
#31, 15 января 2025 23:42
Для общих модулей нет справочной информации, но уверен они часто будут добавляться в Избранное, поэтому этот способ может помочь.
Преимущества - быстро, не меняется активный элемент.
Минусы - одна лишняя строчка в окне сообщений.
#32, ред. 15 января 2025 23:43
Проверяем, есть ли Справочная информация - если есть получаем из ее окна, если нет, вызываем этот метод.
Получаем значение текущего флажка, снимаем если нужно и ставим последний.
#33, 15 января 2025 23:45
(32) bolsun, Да похоже это будет оптимальный способ.
#34, 15 января 2025 23:47
Ну и хорошо бы его сразу в АПИ прокинуть, чтобы мне не дублировать это все в скрипте.
#35, ред. 15 января 2025 23:51
Кстати кажется, что окно с флажками появляется только у тех объектов, у которых есть справочная информация. Поэтому очень вероятно, что тебе даже не придется с ним взаимодействовать.
#36, 15 января 2025 23:51
(35) tormozit, похоже на то
#37, ред. 16 января 2025 00:08
Еще заметил что когда нет дочерних обычных окон в конфигураторе, то он отключает режим "Разворачивать все дочерние окна". Соответственно если открыть окно справочной информации, то оно будет не развернутым и не будет влиять на заголовок главного окна. А в АПИ вроде уже не осталось метода разворачивать окно (есть только авторазворачивание, которое тут не работает). Он бы тут пригодился.
#38, 16 января 2025 00:12
(36) bolsun, Все таки у макетов это окно появляется, а справочной информации у них нет. Макеты могут быть тяжелыми. Например в схеме компоновки может быть много разных ссылок на другие объекты метаданных. Сходу даже не знаю какой из флажков оптимальнее выбрать.
#39, 16 декабря 2025 09:40
Метод ДобавитьОбъектМетаданныхВИзбранное() хотелось бы.
#40, 24 января 2026 18:21
По большому счету не пользуюсь этой функцией в текущем виде, т.к. неудобно добавлять объекты в избранное.
Вот я пишу код целый день в каком то модуле и понимаю, что еще неделю там буду править. Поэтому хочу добавить объект метаданных в избранное. Что для этого нужно сделать?
В текущей реализации я нашел только один путь - открыть навигатор и ввести/вставить туда имя текущего объекта метаданных и после его вывода в отфильтрованном списке навести указатель и в контекстном меню кликнуть "Добавить в избранное". Слишком неудобно.
Может есть более удобный путь?
#41, ред. 24 января 2026 18:27
Поэтому пожелание (18) актуально. Нужно хотя бы п.2 (39)