Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Не понятное поведение перехватчика (число прочтений - 2035 )
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Не понятное поведение перехватчика
12. Августа 2011 :: 10:06
Печать  
Добрый день.
Перехватчиком пользуюсь уже давно и все с ним понятно.
На рабочей базе все работает, документы перехватываются и все ок, но на базе для разработки, которая локально, почему то перестал срабатывать перехват, хотя
Код
Выбрать все
Рез =  


Возвращает 1 никаких ошибок не появляется.
Но в проведение даже и не заходит.
Библиотеки одинаковые ( 1CPP 3.2.2.0 пробовал с 3.2.3.16 ), MD одинаковые. В чем может быть проблема?

Рабочая база крутится в терминал Server 2008R2
Локальная на XP

но буквально месяц назад перехватывалось и локально, причем в перехватчик точно заходит, выполняет оттуда инструкции а вот ВыполнитьОригинальноеСобытиеГК мгновенно вылетает с 1.
« Последняя редакция: 12. Августа 2011 :: 11:37 - MaxPiter »  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не понятное поведение перехватчика
Ответ #1 - 12. Августа 2011 :: 11:44
Печать  
Перехват нужно включать при запуске 1С, желательно сразу же после загрузки 1С++, а у тебя, наверное, этого нет.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Не понятное поведение перехватчика
Ответ #2 - 12. Августа 2011 :: 12:14
Печать  
Перехват включаю в ПриНачалеРаботыСистемы вот так.

Код
Выбрать все
    Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"1CPP.dll") = 0 Тогда //icpp3.0...
        Сообщить("Неудачная попытка загрузки внешней компоненты 1CPP.dll");
        Сообщить("Некоторые сервисные функции будут не доступны!");
        гл1CPP = 0;
    КонецЕсли;

	глРС		= СоздатьОбъект("ODBCRecordset");

	глУстановленПерехват = 0;
	Если Константа.ПерехватПроведения = 1 Тогда
		Если гл1CPP = 0 Тогда
			Сообщить("Не загружена компонента 1СРР! Правильное функционирование не возможно!", "!!!");
		Иначе
			НастройкиВК = СоздатьОбъект("УправлениеНастройками");
			НастройкиВК.Установить("ПерехватитьСобытияГК",1);
			НастройкиВК.Установить("EnableTurboBL",1);
			ПерехватчикСобытийГМ = СоздатьОбъект("КлассПерехватСобытий");
			Перехватчик = СоздатьОбъект("Перехватчик");
			Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);
			Для Сч=1 По Метаданные.Документ() Цикл
				ч).Идентификатор));
				.Идентификатор),ПерехватчикСобытийГМ);
			КонецЦикла;
			глУстановленПерехват = 1;
		КонецЕсли;
	КонецЕсли; 



так какая-то непонятка в том, что перехват-то срабатывает, не срабатывает Перехватчик.ВыполнитьОригинальноеСобытиеГК, просто возвращает сразу 1 и все.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не понятное поведение перехватчика
Ответ #3 - 12. Августа 2011 :: 13:21
Печать  
Были баги, если перехват ГМ, ГК, событий проведения обрабатывается одним классом Печаль
Разбей на разные классы и проверь
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не понятное поведение перехватчика
Ответ #4 - 12. Августа 2011 :: 15:13
Печать  
у меня по-другому маленько сделано.
И.. я оставил всё в 1 классе.

Код
Выбрать все
в глобальничке:

Перехватчик = СоздатьОбъект("Перехватчик");
ПерехватчикСобытийГМ = СоздатьОбъект("ПерехватСобытий");
Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);
ПерехватчикСобытийГМ.ПерехватитьПроведение();

в классе:

Перем Перехватчик;
Перем КонтФормы ;
Перем ТипОбъекта;
//======================================================================
// Методы класса
//======================================================================
Процедура ПерехватитьПроведение() Экспорт
    Для нДок = 1 По Метаданные.Документ() Цикл
	  тификатор, вирт());
    КонецЦикла;
КонецПроцедуры
//======================================================================
Процедура Конструктор()
	Перехватчик = СоздатьОбъект("Перехватчик");
КонецПроцедуры // Конструктор
////======================================================================
//Процедура Деструктор()
//КонецПроцедуры // Деструктор
////======================================================================
Процедура Инит(Конт = "") Экспорт
	Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
		КонтФормы = Конт;
	КонецЕсли;
	Перехватчик.ПерехватитьСобытияГК(КонтФормы,вирт());
	Расшф = СоздатьОбъект("РасширениеФормы");
	Расшф.УстановитьФорму(КонтФормы.Форма);
	ТипОбъекта = РасшФ.ТипОбъекта();
	//Если ТипОбъекта="Документ" Тогда
    //    Перехватчик.ПерехватитьСобытияПроведенияДокумента(КонтФормы.Вид(),вирт());
	//КонецЕсли;
КонецПроцедуры
//======================================================================
Процедура СобытиеГМ_СозданиеКонтекста(Конт) Экспорт
	ПерехватчикСобытийФормы = СоздатьОбъект("ПерехватСобытий");
	ПерехватчикСобытийФормы.Инит(Конт);
КонецПроцедуры 

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не понятное поведение перехватчика
Ответ #5 - 13. Августа 2011 :: 04:26
Печать  
Eprst писал(а) 12. Августа 2011 :: 15:13:
у меня по-другому маленько сделано.
И.. я оставил всё в 1 классе.

У народа точно были проблемы, если ГМ и ГК в одном классе, разносили на 2 класса, проблемы исчезали.
ты наверняка видел эти темы.
ЗЫ конечно, я сильно не разбирался с их багами, некогда было Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Не понятное поведение перехватчика
Ответ #6 - 15. Августа 2011 :: 07:33
Печать  
Я правильно понимаю?

Код
Выбрать все
ПерехватчикСобытийГМ = СоздатьОбъект("КлассПерехватГМ");
ПерехватчикСобытийПроведения = СоздатьОбъект("КлассПерехватСобытийПроведения");

Перехватчик = СоздатьОбъект("Перехватчик");
Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);

Для Сч=1 По Метаданные.Документ() Цикл
	.Идентификатор),ПерехватчикСобытийПроведения);
КонецЦикла;	 



Если так, то тоже самое, в перехват зашли но оригинальное событие не выполнилось.

Defcls.prm
Выглядит так:

Код
Выбрать все
класс КлассПерехватГМ	    =  КлассПерехватГМ.ert
{};
класс КлассПерехватСобытийПроведения  =  КлассПерехватСобытий.ert
{}; 



Eprst писал(а) 12. Августа 2011 :: 15:13:
у меня по-другому маленько сделано.
И.. я оставил всё в 1 классе.

так у меня на рабочей базе все в одном и нормально работает, ттт.
А на локальной перестало с месяц назад примерно.
Как уже сказал, локальная база точная копия рабочей по MD, dll и прочим приблудам, разве что данные отстают на пару тройку месяцев. Операционки разные, ну не ставить же себе WinServer для разработки Улыбка
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать