Имя: Пароль:
1C
 
Как найти где назначены сочетания клавиш на форме?
0 НичегоНе Понятно
 
21.09.19
07:27
Все пирвет есть РМК, при определенных ситуациях надо отключить все кнопки кроме нескольких. Это собственно не очень большая проблема. Но сочетания клавиш у кнопок в нижнем ряду, продолжают работать. Вот код

&НаКлиенте
Процедура ЗаблокироватьВсеКромеОплаты()
    
    Перем ЭлементКнопка;
    ЗаблокированныеКнопки = Новый Соответствие;
    
    //Если все хорошо, тогда заблокируем все остальное кроме возможности оплатить
    ЗаблокироватьЭлементыГруппы(Элементы.ГруппаЧастотныхОпераций.ПодчиненныеЭлементы,
                                СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("Наличные (F6),Плат. карта (F7),Сложная оплата (F8)"));
    
    //+++ если применяется настройка, надо блокировать все программно добавленные кнопки,
    //если настройка не юзается, этот код никогда не сработает
    Для каждого ДобавленнаяГруппа Из Элементы.ГруппаПрочихОпераций.ПодчиненныеЭлементы Цикл
        ЗаблокироватьЭлементыГруппы(ДобавленнаяГруппа.ПодчиненныеЭлементы, Новый Массив);
    КонецЦикла;
    
КонецПроцедуры

&НаКлиенте
Процедура ЗаблокироватьЭлементыГруппы(ГруппаЭлементов, ЗаголовкиКоторыеНадоПропустить = Неопределено)
    //Если ЗаголовкиКоторыеНадоПропустить = Неопределено Тогда ЗаголовкиКоторыеНадоПропустить = Новый Массив; КонецЕсли;
    
    Для каждого ЭлементКнопка Из ГруппаЭлементов Цикл
        Если ЗаголовкиКоторыеНадоПропустить.Найти(ЭлементКнопка.Заголовок) <> Неопределено Тогда Продолжить; КонецЕсли;
        
        ЭлементКнопка.Доступность = Ложь;
        ЗаблокированныеКнопки.Вставить(ЭлементКнопка, ЭлементКнопка.СочетаниеКлавиш); //запомним, что заблокировали и горячую кнопку
        ЭлементКнопка.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет);              //что-бы вернуть после окончания процесса
    КонецЦикла;    
КонецПроцедуры


Были найдены дубли в командах и удалены следующим образом:

&НаСервере
Процедура ОбнулитьСочетанияКлавищ()//дублирующие сочетания назначены командам
    Для каждого ТекущаяКоманда Из ЭтаФорма.Команды Цикл
        ТекущаяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет);
    КонецЦикла;     
КонецПроцедуры


Но некоторые кнопки нижней панели F12(выход), кнопка ctrl + f12(пробить непробитый), ctrl + f5(продолжить чек) все равно работают. Как узнать, где они подключены?