| 
    0
    
        НичегоНе Понятно    
       
    
    21.09.19 
            ✎
    07:27 
 | 
         
        Все пирвет есть РМК, при определенных ситуациях надо отключить все кнопки кроме нескольких. Это собственно не очень большая проблема. Но сочетания клавиш у кнопок в нижнем ряду, продолжают работать. Вот код
 
 &НаКлиенте
 Процедура ЗаблокироватьВсеКромеОплаты()
     
     Перем ЭлементКнопка;
     ЗаблокированныеКнопки = Новый Соответствие;
     
     //Если все хорошо, тогда заблокируем все остальное кроме возможности оплатить
     ЗаблокироватьЭлементыГруппы(Элементы.ГруппаЧастотныхОпераций.ПодчиненныеЭлементы, 
                                 СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("Наличные (F6),Плат. карта (F7),Сложная оплата (F8)"));
     
     //+++ если применяется настройка, надо блокировать все программно добавленные кнопки,
     //если настройка не юзается, этот код никогда не сработает
     Для каждого ДобавленнаяГруппа Из Элементы.ГруппаПрочихОпераций.ПодчиненныеЭлементы Цикл 
         ЗаблокироватьЭлементыГруппы(ДобавленнаяГруппа.ПодчиненныеЭлементы, Новый Массив);
     КонецЦикла; 
     
 КонецПроцедуры
 
 &НаКлиенте
 Процедура ЗаблокироватьЭлементыГруппы(ГруппаЭлементов, ЗаголовкиКоторыеНадоПропустить = Неопределено)
     //Если ЗаголовкиКоторыеНадоПропустить = Неопределено Тогда ЗаголовкиКоторыеНадоПропустить = Новый Массив; КонецЕсли; 
     
     Для каждого ЭлементКнопка Из ГруппаЭлементов Цикл
         Если ЗаголовкиКоторыеНадоПропустить.Найти(ЭлементКнопка.Заголовок) <> Неопределено Тогда Продолжить; КонецЕсли; 
         
         ЭлементКнопка.Доступность = Ложь;
         ЗаблокированныеКнопки.Вставить(ЭлементКнопка, ЭлементКнопка.СочетаниеКлавиш); //запомним, что заблокировали и горячую кнопку
         ЭлементКнопка.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет);              //что-бы вернуть после окончания процесса
     КонецЦикла;    
 КонецПроцедуры
 
 
 Были найдены дубли в командах и удалены следующим образом:
 
 &НаСервере
 Процедура ОбнулитьСочетанияКлавищ()//дублирующие сочетания назначены командам
     Для каждого ТекущаяКоманда Из ЭтаФорма.Команды Цикл
         ТекущаяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет);
     КонецЦикла;     
 КонецПроцедуры 
 
 
 Но некоторые кнопки нижней панели F12(выход), кнопка ctrl + f12(пробить непробитый), ctrl + f5(продолжить чек) все равно работают. Как узнать, где они подключены?     
         | 
 |