Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ПриПолученииКоманды(Команда,Флаг) (число прочтений - 2708 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
ПриПолученииКоманды(Команда,Флаг)
30. Ноября 2007 :: 07:00
Печать  
Выловил непонятное поведение.
ПриНажатии на кнопку Insert или соответствующая кнопка на панели инструментов или в контекстном меню, событие отлавливается всегда

Команда всегда возвращает нужное значение.
А вот с Delete и Копирование в буфер обмена есть проблема:
Т.е. когда команда посылается через Панель инструментов или через контекстное меню, то код команды мы получаем, а вот если жать на кнопки клавиатуры то команда не ловиться.
Че делать то?
Ну не ловить же их через FormEx?
ПриНажатииКнопкиКлавиатуры()?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #1 - 30. Ноября 2007 :: 07:17
Печать  
прошу прощения.
Insert тоже не отдает номер команды.
Я так понял что выход один:
Принажатии кнопки клавиатуры отдавать данные с явным указанием в процедуру
ПриПолученииКоманды()
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #2 - 30. Ноября 2007 :: 10:25
Печать  
Таки нашел выход из сложившейся ситуации.
Вот только немоного трохи перемудрил.
Нужна помощь.
Прицепил в глобальном такое:
Код
Выбрать все
Функция ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
	Перем лКонтекст;
    Если пКоманда=32805 Тогда
		FormEx_ИконкаПредупреждения=1;
		FormEx_ОсновнаяКнопкаПредупреждения=2;
		Ответ=Вопрос("Нельзя блокировать сессию!
		|Выйти из 1С?","Да+Нет",10);
	  пЗаблокироватьКоманду=1;
		Если Ответ="Да" Тогда
			ЗавершитьРаботуСистемы();
		КонецЕсли;
	ИначеЕсли пКоманда=33898 Тогда
		ОткрытьФорму("Обработка.ЖурналРегистрации");
		пЗаблокироватьКоманду=1;
	ИначеЕсли пКоманда=32786 Тогда
		лСервис=СоздатьОбъект("Сервис");
		лСервис.АктивныйКонтекст(лКонтекст);
		Если ПустоеЗначение(лКонтекст)=1 Тогда
			Возврат 1;
		КонецЕсли;
		лСписок=ВыборСпискаДокументов(лКонтекст);
		Если ПустоеЗначение(лСписок)=0 Тогда
			пЗаблокироватьКоманду=1;
			Если лСписок.РазмерСписка()=1 Тогда
				зн=лСписок.ПолучитьЗначение(1);
				ОткрытьФорму("Документ."+зн);
				Возврат 0;
			ИначеЕсли лСписок.РазмерСписка()>0 Тогда
				зн="";
				Если лСписок.ВыбратьЗначение(зн,"Выберите вид документа!",1,10)=1 Тогда
					ОткрытьФорму("Документ."+зн);
				КонецЕсли;
				Возврат 0;
			Иначе
				Возврат 1;
			КонецЕсли;
		Иначе
			Возврат 1;
		КонецЕсли;
	Иначе
		//Сообщить(пКоманда);
	КонецЕсли;
КонецФункции

Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
	Если КодКлавиши=45 Тогда
		// новый! отрабатываем только для форм списков журналов
		Попытка
			лФорма=СоздатьОбъект("РасширениеФормы");
			лФорма.УстановитьФорму(Конт.Форма);
			Тип=лФорма.ТипОбъекта();
			Если Тип="Журнал" Тогда
				ФСО=ПриПолученииКоманды(32786,0);
			КонецЕсли;
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;
КонецПроцедуры	// ПриНажатииКнопкиКлавиатуры

 



Функция ВыборСпискаДокументов(лКонтекст)
возвращает списокзначений с видами документов для выбора.

Так проблема вот в чем:
Если я пытаюсь ввести новый документ через Insert то все работает нормально,
А вот если через Панель инструментов, то получается интересная картина:
При попытке выбора нужной строки из списка происходит повторное срабатываение
ПриПолученииКоманды()
причем списки накладуются друг на друга.
Если же я пытаюсть выбрать нужное значение из списка кнопками клавиатуры то все работает нормально.
Где может быть затык?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #3 - 03. Декабря 2007 :: 06:45
Печать  
Народ!
Я все таки подниму вопрос опять.
Выяснил интересную вещь:
Эта процедура почему-то срабатывает даже когда у нее в теле стоит что-то типа Выбрать().
Ввобщем система постоянно вызывает эту процедуру, хотя по идее пока не закончится выполнение она не должны быть повторно вызвана.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #4 - 03. Декабря 2007 :: 07:00
Печать  
varelchik писал(а) 03. Декабря 2007 :: 06:45:
Народ!
Я все таки подниму вопрос опять.
Выяснил интересную вещь:
Эта процедура почему-то срабатывает даже когда у нее в теле стоит что-то типа Выбрать().
Ввобщем система постоянно вызывает эту процедуру, хотя по идее пока не закончится выполнение она не должны быть повторно вызвана.


я этот баг говорил уже Роберту давненько. У меня из-за этого случалось достаточно частое зацикливаине процедуры и падение 1С  Нерешительный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #5 - 03. Декабря 2007 :: 07:19
Печать  
Так значит я не тормоз.
А я уже начал было думать что что-то умене невпорядке.
Тогда что Роберт говорит на этот вопрос?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #6 - 04. Декабря 2007 :: 07:54
Печать  
Народ!
Кто видел Роберта?
Что-то проясниться с данной ситуацией?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриПолученииКоманды(Команда,Флаг)
Ответ #7 - 04. Декабря 2007 :: 09:27
Печать  
Роберт обычно наблюдается в посетителях поздно ночью Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать