Сделал в своей конфе допонительные клавиши для работы с реквизитами на форме.
В глобальном модуле
Процедура ПриНажатииКнопкиКлавиатуры ( конт, код, _а, _ш, _к, Символ, ФСО ) // предопределенная процедура компоненты FormEx
//Сообщить("Нажата кнопка клавиатуры. "+код+" "+_а+" "+_ш+" "+_к);
Если код = 32 Тогда // клавиша пробел - открыть форму справочника, документа,
Попытка
Атрибут = СоздатьОбъект("АтрибутФормы");
Атрибут.УстановитьАтрибут(конт.Форма, конт.Форма.АктивныйЭлемент());
Исключение
Возврат; // нет активной формы, или любая другая ошибка
КонецПопытки;
ТипАтрибута = ТипЗначения(Атрибут.Значение);
Если (ТипАтрибута = 11) Или (ТипАтрибута = 12) Тогда //реквизит типа справочник, документ
ФСО = 0;
глОткрытьФорму(Атрибут.Значение, конт, 1 - _к);
КонецЕсли;
ИначеЕсли код = 46 Тогда // Delete key - очистить поле
Сервис.SendKeys ( "+{F4}" ); // SHIFT+F4 - очистить поле; на любом типе реквизита ничего страшного не будет от того, что будет нажато SHIFT+F4
ИначеЕсли Код = 45 Тогда // Insert - выбрать значение
Сервис.SendKeys( "{F4}" ); // Insert -> F4 - выбор, на любом типе реквизита ничего страшного не будет от того, что будет нажато F4
...
Чтобы открыть элемент справочника или документ - нажать пробел на на соответствующем реквизите формы.
Чтобы очистить значение - нажать Delete. Чтобы выбрать значение - Insert.
Все это уже давно работает, но достает один глюк (ли?). Иногда при нажитии Delete или Insert 1c "подвисает". По признакам - бесконечный цикл, связанный с обработкой нажатиий клавиш?
Есть идеи?
Спасибо.