Столкнулся со стабильным залипанием клавиши ALT

tormozit Закрыто Высокий

Было открыто 2 конфигуратора. В одном (Редакторе скрипта Турбоконф) я правил расположение кнопок и жал ATL+S для сохранения скрипта с перезагрузкой скриптов. Затем я переключался во второй конфигуратор с открытым окном "Остановка по ошибке" (не в точке останова) и смотрел там на результат подбора позиции кнопки в этом окне. Затем снова активировал первый конфигуратор и там пытался править координаты кнопок в тексте, но ввод цифр не выполнялся, т.к. каждый раз модификато ALT залипал. Раз 20 это подряд повторилось. Причем перезапуск Турбоконфа не помогает устранить проблему.

Команду сохранения скрипта уже очень давно не правил. Вот ее код


Процедура СохранитьМодульВФайл()
	ТурбоКонф.КонтролКлавиша(Клавиши.S);
	Если Истина
		И ТурбоКонф.ПолучитьВерсиюAPI() >= 6 
		И Не ТурбоКонф.ЭтоСкрипт 
	Тогда
		Возврат;
	КонецЕсли;
	ПодключениеИР = ПодключениеИР(,, Ложь);
	Если ПодключениеИР = Неопределено Тогда
		Возврат;
	КонецЕсли;
	Если Не ЗначениеЗаполнено(ТекстМодуля) Или Не ЭтоДокумент() Тогда
		Возврат;    
	КонецЕсли;
	МодулиИР = МодулиИР(ПодключениеИР);
	Маркер = "//#Дублировать" + " в файл "; // Разделено для не обнаружения себя же
	ИмяФайла = СокрЛП(МодулиИР.ирОбщий.ТекстМеждуМаркерамиЛкс(ТекстМодуля, Маркер, Символы.ПС, Ложь));
	Если ЗначениеЗаполнено(ИмяФайла) Тогда
		Текст = Новый ТекстовыйДокумент;
		Текст.УстановитьТекст(ТекстМодуля);
		Текст.Записать(ИмяФайла);   
		ТурбоКонф.ПоказатьВсплывающееУведомление(НазваниеСкрипта(), СтрШаблон("Текст модуля сохранен в файл %1", ИмяФайла), 2000);
		ТурбоКонф.ПерезагрузитьСкрипты();
	Иначе 
		ТурбоКонф.ПоказатьВсплывающееУведомление(НазваниеСкрипта(), "Модуль не связан с файлом. В тексте модуля должна быть строка 
		|" + Маркер + "<Полное имя файла>", 4000);
	КонецЕсли;
	ТурбоКонф.ОтжатьВсеМодификаторы();
КонецПроцедуры

Ссылка скрыта

Комментарии

tormozit
#1, ред. 24 декабря 2024 14:27

Локализовал проблему. Достаточно выполнить
ТурбоКонф.ПерезагрузитьСкрипты()
в команде, вызванной сочетанием ALT+S, чтобы ALT залип с большой вероятностью. Проблемы ранее не было. Появилась в последних версиях Турбоконфа. Мне она доставляет большие неудобства в разработке скрипта.


bolsun
#2, 24 декабря 2024 16:30

Не воспроизводится.
Если хочешь, чтобы модификаторы отжимались после выполнения скрипта используй
ТурбоКонф.ОтжатьМодификаторыПослеЗавершенияСкрипта = Истина;


tormozit
#3, ред. 24 декабря 2024 17:53

(2) bolsun, Конечно я это пробовал первым делом. Это не помогает. Посмотришь лог?


tormozit
#4, ред. 24 декабря 2024 17:52

Перезапустил Турбоконф и все конфигураторы. Снова воспроизвел проблему. Момент, где я нажимаю и отпускаю поочередно все модификаторы - это я уже лечу проблему. А начинается она с нажатия ALT+S (команда СохранитьМодульВФайл)

Ссылка скрыта


bolsun
#5, 24 декабря 2024 18:19

(4) tormozit, в логе вижу что флаг ОтжатьМодификаторыПослеЗавершенияСкрипта не установлен.


tormozit
#6, ред. 24 декабря 2024 18:35

(5) bolsun, да я убрал этот код. Сейчас понял что я неправильный метод вызывал для установки флага -
я использовал ОтжатьВсеМодификаторы(), а надо было ОтжатьМодификаторы(). Называния методов очень похожи и их легко перепутать. Заменю везде на свойство ОтжатьМодификаторыПослеЗавершенияСкрипта. С установкой флага ОтжатьМодификаторыПослеЗавершенияСкрипта = Истина проблема ушла.

Но осталось непонятным, почему она вообще появилась вдруг.


bolsun
#7, ред. 24 декабря 2024 18:37

(6) tormozit, ОтжатьМодификаторы() - устаревший метод, он оставлен для совместимости. Вместо него был сделан ОтжатьМодификаторыПослеЗавершенияСкрипта, как раз чтобы не путаться. Но делают они одно и то же.
А ОтжатьВсеМодификаторы именно отжимает их в данный момент, а не после завершения скрипта.


tormozit
#8, 24 декабря 2024 18:37

(7) bolsun, да, но я старался поддерживать и старые версии Турбоконфа. Поэтому не торопился переходить на новое свойство без веских причин.


tormozit
#9, 24 декабря 2024 18:43

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


tormozit
#10, 24 декабря 2024 18:44

Для истории еще раз отмечу - осталось непонятным, почему такое залипание вообще появилась вдруг.


tormozit
#11, ред. 24 декабря 2024 18:50

Думаю что логичнее было бы лечение делать в проблемном методе Турбоконф.ПерезагрузитьСкрипты(), а не в скриптах после каждого его вызова.


bolsun
#12, 24 декабря 2024 18:53

(11) tormozit, ПерезагрузитьСкрипты тут думаю не причем.
Проблема скорее всего вызвана тем, что если при нажатом Alt нажать Ctrl, то нажатие Alt сбрасывается (без события). А т.к. флаг ОтжатьМодификаторыПослеЗавершенияСкрипта не был установлен и не было отжатия, то ТК думает что клавиша еще должна быть нажата и нужно ее донажать после выполнения скрипта.


vigor
#13, ред. 24 декабря 2024 19:48

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

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

Процедура ReleaseAllModifiers()
	ТурбоКонф.ОтжатьМодификаторыПослеЗавершенияСкрипта = Истина;
	ТурбоКонф.ПоказатьВсплывающееУведомление("ТурбоКонф", "Отжали модификаторы", 3000);
КонецПроцедуры

ТурбоКонф = Новый ТурбоКонф; 


bolsun
#14, 24 декабря 2024 20:38

(13) vigor,
ТурбоКонф.ОтжатьМодификаторыПослеЗавершенияСкрипта = Истина; - это гарантирует что ТК не будет дожимать модификаторы после выполнения скрипта
Но если в процессе модификатор залип, то это не спасет. Но можно в конце скрипта добавить ТК.ОтжатьВсеМодификаторы() - тогда точно не должно быть залипания.

ТурбоКонф.ОтжатьМодификаторыПослеЗавершенияСкрипта = Истина;
ТК.ОтжатьВсеМодификаторы();
//Конец скрипта

Но нужно понимать, если скрипт предусматривает возможность нескольких выполнений подряд, то пользователю придется каждый раз нажимать заново модификатор.
bolsun изменил статус на Закрыто


bolsun
#15, 28 декабря 2024 17:54

Исправлено в 6.3.9128.35246

Добавил принудительную установку флага ОтжатьМодификаторыПослеЗавершенияСкрипта для метода ПерезагрузитьСкрипты(). Т.к. в процессе перезагрузки скриптов, происходит переинициализация движка программы, это могло приводить к потере данных об отжатых клавишах.


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