Прошу разрешить добавлять динамическую кнопку в окно Турбоконфа

tormozit Открыто

Например хочу добавить кнопку "Общие методы" в окно Турбоконфа "JumpToForm" (Процедуры и функции).
Список команд скрипта ИР адаптер уже довольно большой и искать в нем команды не быстро, особенно если не помнишь как она называется. Одним из способов разгрузить память пользователя от необходимости помнить называния команд является отображение их в наиболее близких по смыслу окнах.

Комментарии

bolsun
#1, 28 декабря 2024 22:33

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


bolsun
#2, 13 января 2025 14:43

6.3.9144.29898
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg

API

  • Реализована возможность добавления пользовательских кнопок в формы TurboConf.

Location - координаты кнопки
AddToForm - имя формы
ParentControl - имя родительского элемента

//@button {'Name': 'ButtonTest', 'Text': 'Моя кнопка', 'Hint': 'Показать тестовое уведомление', 'Anchor': 'RightTop', 'Location': '200, 20', 'Width': 80, 'Height': 20, 'AddToForm': 'MethodsForm', 'ParentControl': 'panel1' }

Посмотреть иерархию и имена элементов можно в логе с включенным режимом Отладка (в дальнейшем появится опция для этого).

- MethodsForm
-- panel1
--- buttonClose
--- label2
--- label1
--- listBoxFoundItems
--- textBoxSearch

При нажатии кнопки форма TurboConf будет закрыта и выполнен обработчик.

Перем ТурбоКонф;

Процедура ПриНажатииКнопки(Кнопка)      
    
    ТурбоКонф = Новый ТурбоКонф;    

    Если Кнопка = "ButtonTest" Тогда
        ТурбоКонф.ПоказатьВсплывающееУведомление("TurboConf", "Работает!", 5000);
        Возврат;
    КонецЕсли;

КонецПроцедуры


bolsun
#3, ред. 13 января 2025 14:50


tormozit
#4, 13 января 2025 15:19

В панель главного окна так можно будет добавить кнопку?


bolsun
#5, 13 января 2025 17:47

(4) tormozit,

6.3.9144.35221
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg

API

  • Реализована возможность добавления пользовательских кнопок в главное меню TurboConf.

AddToМаinMenu - true
Ширина кнопки рассчитывается автоматически.
Свойства Width, Height, Location, Offset, Filter и т.д. игнорируются.

//@button {'Name': 'ПерейтиПоСсылкеИзБуфера', 'Text': 'Перейти (ИР)', 'Hint': 'Перейти по ссылке из буфера обмена (ИР)', 'AddToMainMenu': 'true' }


bolsun
#6, 14 января 2025 00:00

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


bolsun
#7, 14 января 2025 00:09

(6) bolsun, речь идет про главное меню.


bolsun
#8, ред. 14 января 2025 18:49

6.3.9145.30586
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg

В этой версии добавление кнопок в главное меню работает стабильно.
Формат изменился вместо 'AddToMainMenu': 'true' теперь 'AddToMenu': 'main_menu'

Добавлено свойство "DocumentsOnly", кнопка будет доступна для клика только в текстовых документах.

//@button {'Name': 'КнопкаМетоды', 'Text': 'Методы', 'Hint': 'Улучшенные процедуры и функции', 'AddToMenu': 'main_menu', 'DocumentsOnly': 'true' }


bolsun
#9, 14 января 2025 23:18

В версии 6.3.9145.38066 появилась возможность добавлять команды в главное меню в Настройках, что является предпочтительным методом ,т.к. позволяет пользователю отключать ненужные кнопки.

Единственным на данный момент способом способом добавить команды в меню из скрипта, так чтобы это отразилось в списке скриптов - это изменить файл ScriptSettings.ts

Найти нужную команду и для свойства "HotKeys" задать
"MainMenu": true,
"ButtonText": "Моя кнопка",
"DocumentsOnly": true/false,

И затем перезагрузить скрипты программно.

Тогда пользователь сможет отключить кнопки в дальнейшем или изменить названия.


bolsun
#10, 14 января 2025 23:19

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


tormozit
#11, ред. 14 января 2025 23:51

(8) bolsun, Проверил. Работает. Но в главном меню такая кнопка выглядит как заголовок поля поиска, т.к. не достаточно отделяется от нее визуально. Потому думаю многие просто не поймут что это кнопка.

Поэтому пока оставлю старый вариант


tormozit
#12, ред. 14 января 2025 23:58

Но мой старый вариант теперь перекроет первую пользовательскую кнопку.

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


tormozit
#13, ред. 15 января 2025 00:00

Кстати пользовательские кнопки кажется тоже не достаточно отделяются визуально (немного сливаются), хотя может это только с первого взгляда.


bolsun
#14, 15 января 2025 00:03

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


tormozit
#15, ред. 15 января 2025 00:03

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


tormozit
#16, 15 января 2025 00:04

(14) bolsun, да думаю достаточно будет 1-2 пикселя добавить.


bolsun
#17, 16 января 2025 14:50

(16) tormozit, расстояние между кнопками увеличено в 6.3.9147.29386


tormozit
#18, 16 января 2025 19:56

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


tormozit
#19, ред. 18 января 2025 08:56

Проверил добавление кнопок в окно "Процедуры и функции" Турбоконфа. Работает.


tormozit изменил статус на Закрыто


tormozit
#20, ред. 25 января 2025 22:39

В командных панелях окон Турбоконфа атрибут привязки игнорирует свое значение и всегда использует LeftTop:
'Anchor': 'RightTop'
'Anchor': 'LeftTop'

//@button {'Name': 'КнопкаПерейтиИзНавигатора', 'Text': 'Перейти ИР', Hint:'Перейти к текущему объекту метаданных(ИР)', 'Image': '', 'Anchor': 'RightTop', 'Location': '500, 10', 'Width': 60, 'Height': 20, 'AddToForm': 'JumpToForm', 'ParentControl': 'panel1', 'Filter': '0ы8й/' }

tormozit изменил статус на Открыто


tormozit
#21, ред. 25 января 2025 23:00

Еще нужен способ получить полное имя текущего объекта в навигаторе. Хотя бы вручную, чтобы потом я мог командой адаптера перейти своим алгоритмом. А лучше еще бы дать программно возможность обработчику Турбокнопки скрипта получить это полное имя.

Нажатие CTRL+C в навигаторе сейчас почему то только чистое имя объекта (без родителей) помещает в буфер обмена. Мне такое нужно редко. Из полного имени недолго вырезать чистое имя, а вот наоборот намного сложнее делать, особенно учитывая что перейти к объекту в дереве навигатор не всегда может.
Поэтому предлагаю в этом случае помещать в буфер обмена полное имя объекта.


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера