Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Глюк ПриНажатииКнопкиКлавиатуры() (число прочтений - 2653 )
ZOOBR
Junior Member
**
Отсутствует



Сообщений: 22
Зарегистрирован: 17. Апреля 2008
Глюк ПриНажатииКнопкиКлавиатуры()
17. Апреля 2008 :: 12:49
Печать  
Суть в следующем!! В модуле формы документа я разместил процедуру ПриНажатииКнопкиКлавиатуры()

Вот так она выглядит:

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl)
Если (СокрЛП(КодКлавиши)="76") и (Ctrl=1) Тогда
Если Вопрос("Вы действительно хотите очистить таблицу реестра?",1)=1 Тогда
УдалитьСтроки();
КонецЕсли;
КонецЕсли;
КонецПроцедуры

При нажатии заданной комбинации должно выдаватся предупреждение, при нажатии кнопки ОК должна очищатся табличная часть! Но ЭТО ПРОИСХОДИТ НЕ ТАК КАК НУЖНО!

Предупреждение выдается, но при нажатии на кнопку ОК табличная часть не очищается и при нажатии курсором мыши на табличную часть вылетают две ошибки, после чего 1С вылетает, естественно с последующей реиндексацией и т.д. и т.п. Пробовал на разных компах и конфигурациях. Других ВК не использовал?

Может кто знает как это побороть??


  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #1 - 17. Апреля 2008 :: 13:03
Печать  
Если предупреждение выдается, то ВК, видимо, не при чем, а?
Повесь такую же процедуру на кнопку и проверь.
ЗЫ. Поаккуратней с формулировками, лично меня упоминание непроверенного "глюка" напрягает.
  
Наверх
ICQ  
IP записан
 
ZOOBR
Junior Member
**
Отсутствует



Сообщений: 22
Зарегистрирован: 17. Апреля 2008
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #2 - 17. Апреля 2008 :: 13:26
Печать  
vip писал(а) 17. Апреля 2008 :: 13:03:
Если предупреждение выдается, то ВК, видимо, не при чем, а?
Повесь такую же процедуру на кнопку и проверь.
ЗЫ. Поаккуратней с формулировками, лично меня упоминание непроверенного "глюка" напрягает.


Куда еще аккуратнее! Если бы без компоненты не работало бы я и писать не стал бы!  Улыбка
Буду еще проще! Не работает нормально даже такой код:

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl)
Если (СокрЛП(КодКлавиши)="76") и (Ctrl=1) Тогда
УдалитьСтроки();
КонецЕсли;
КонецПроцедуры

Естественно, что без использования компоненты команда УдалитьСтроки() работает безотказно!

У меня на всех машинах 27 релиз 1С и самая свежая версия Formex. Еще раз скажу, что глюк такой есть на всех компах и на разных конфигурациях!

Вот текст ошибок:

1 ошибка: Инструкция по адресу "0*20129588" обратилась к памяти по адресу "0*00000004". Память не может быть "read"
2 ошибка: Исключение unknown software exception (0*c000001d) в приложении по адресу 0*00640280.

Кстати, чуть не забыл! Ошибка выскакивает если щелкнуть левой кнопкой по табличной части! Если же выбрать любой другой реквизит, то при последующем щелчке по табличной части она наконец таки очистится и ошибки не будет!
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #3 - 17. Апреля 2008 :: 14:08
Печать  
Попробуй после удаления строк поставить Форма.Обновить(1);
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #4 - 17. Апреля 2008 :: 14:10
Печать  
Судя по всему, FormEx все таки не при чем. Тут что-то связано с обновлением формы после удаления строк в зависимости от фокуса текущего реквизита.
Попробуй так.
Повесь УдалитьСтроки() на невидимую кнопку с хоткеем Ctrl+F8, например.
И напиши
Код
Выбрать все
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl)
Если (СокрЛП(КодКлавиши)="76") и (Ctrl=1) Тогда
Если Вопрос("Вы действительно хотите очистить таблицу реестра?",1)=1 Тогда
Сервис.SendKeys("^{F8}");
//УдалитьСтроки();
КонецЕсли;
КонецЕсли;
КонецПроцедуры 


Все отработает нормально.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #5 - 17. Апреля 2008 :: 14:13
Печать  
Цитата:
Попробуй после удаления строк поставить Форма.Обновить(1);

Если курсор на табличной части, не поможет.
  
Наверх
ICQ  
IP записан
 
ZOOBR
Junior Member
**
Отсутствует



Сообщений: 22
Зарегистрирован: 17. Апреля 2008
Re: Глюк ПриНажатииКнопкиКлавиатуры()
Ответ #6 - 17. Апреля 2008 :: 22:04
Печать  
Цитата:
Попробуй после удаления строк поставить Форма.Обновить(1);


Работает, но если реквизит табличной части редактируется,то опять двадцать пять! Может можно как нибудь перед удалением снять фокусировку с табличной части? Тогда должно заработать?! А если нельзя может стоит добавить? Улыбка

vip писал(а) 17. Апреля 2008 :: 14:10:
Судя по всему, FormEx все таки не при чем. Тут что-то связано с обновлением формы после удаления строк в зависимости от фокуса текущего реквизита.
Попробуй так.
Повесь УдалитьСтроки() на невидимую кнопку с хоткеем Ctrl+F8, например.
И напиши
Код
Выбрать все
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl)
Если (СокрЛП(КодКлавиши)="76") и (Ctrl=1) Тогда
Если Вопрос("Вы действительно хотите очистить таблицу реестра?",1)=1 Тогда
Сервис.SendKeys("^{F8}");
//УдалитьСтроки();
КонецЕсли;  
КонецЕсли;
КонецПроцедуры 


Все отработает нормально.


Попробовал, действительно работает! Но при этом мы по сути возвращаемся к стандартным хоткеям! Но это не беда, главное, что я уже не смогу отключить стандартные хоткеи(флагФСО=0). Печаль

Всем спасибо за ваши ответы! Улыбка

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать