Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 7 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1spy.dll: нужно добавить выполнение евентов (число прочтений - 32113 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #45 - 05. Июля 2007 :: 06:45
Печать  
Выкладываю тестовую сборку
http://webfile.ru/1460333

Инструкция для использования

1. Необходимо включить перехват событий в 1С++ с помощью встроенного класса "УправлениеНастройками"

2. Подключение любого из 3-х событий в произвольный момент, по умолчанию при загрузке 1С++ они выключены
Код
Выбрать все
Перехватчик = СоздатьОбъект("Перехватчик");
Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
; 



3. При подключения в глобальнике единственный раз идет поиск соответствующих событий
Событие_НеобработаннаяОшибка()
Событие_ЗаписьСобытияЖурналаРегистрации()
Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации()

В дальнейшем повторного поиска не происходит, в отличие от ФормЕкс, что дает хорошую скорость работы.

4. Описание событий
Код
Выбрать все
Функция/Процедура Событие_НеобработаннаяОшибка(СообщениеОбОшибке, Маркер, ИмяФайла, Парам4, НомерСтрокиОшибки, Парам6)
Функция/Процедура Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
Функция/Процедура Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr) 



5. Обработчики событий могут быть функциями, в этом случае если возвращается 0, системная функция не вызывается.
Если обработчик события является процедурой, то системная функция вызывается всегда.

6. Перед подключением можно установить перехват на глобальник, тогда указанные события будут ловиться в классах
« Последняя редакция: 05. Июля 2007 :: 08:57 - artbear »  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #46 - 05. Июля 2007 :: 07:03
Печать  
Еще раз - если не выполнить п.1, события работать не будут !!
  

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


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 21. Июня 2007
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #47 - 05. Июля 2007 :: 07:25
Печать  
Здорово  Улыбка
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #48 - 05. Июля 2007 :: 07:48
Печать  
Ошибка:
Код
Выбрать все
_Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
{Глобальный модуль(12)}: CDllMethodWrapper::Swap failed: m_pFunc == NULL 



Пустая чистая база,

Делаем

Код
Выбрать все
Перем _Перехватчик;

Процедура ПриНачалеРаботыСистемы()
	              
	ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"1cpp.dll");  

	                                                         


	_Перехватчик = СоздатьОбъект("Перехватчик");
	_Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
	_Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
	);


КонецПроцедуры 



Соответственно процедуры типа "Событие_" пока неопределены  Улыбка
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #49 - 05. Июля 2007 :: 08:03
Печать  
Вообщем попробовал сделать чистую конфу для теста... Компоненту скачал по ссылке Артура

Пока список ошибок вот такой

Код
Выбрать все
CDllMethodWrapper::Swap failed: m_pFunc == NULL
CDllMethodWrapper::Swap failed: m_pFunc == NULL
CDllMethodWrapper::Swap failed: m_pFunc == NULL
Тест = СоздатьОбъект("Хрень"); //Необработанная ошибка
{Обработка.ТестПерехватаОшибокВГлобальномМодуле.Форма.Модуль(3)}: Неудачная попытка создания объекта (Хрень)

 



Слегка подкорректировал конфу 05. Июля 2007 :: 08:28

05. Июля 2007 :: 08:55
Включил настройку "ПерехватитьСобытияГК ": класс УправлениеНастройками
Работает!!!



  

Base.zip ( 29 KB | Загрузки )

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #50 - 05. Июля 2007 :: 08:28
Печать  
в ГМ все работает.
сделал вывод в окно сообщений всех параметров, по сути тоже самое что и в млг, как и хотели, описание млг можно найти в сети.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #51 - 05. Июля 2007 :: 08:51
Печать  
Народ, виноват.
Забыл добавить, что для правильного использования нужно выполнить п.0
0. Необходимо включить перехват событий в 1С++ с помощью встроенного класса "УправлениеНастройками" Улыбка

Lustin, поэтому на чистой базе у тебя не работает, а у меня и Феникса на своих базах работает Улыбка

Вечером поправлю, указанные методы будут выдавать исключение, если не включен перехват событий.
  

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #52 - 05. Июля 2007 :: 09:01
Печать  
Исправил конфу в #49
Работает замечательно... Улыбка
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #53 - 05. Июля 2007 :: 09:07
Печать  
УправлениеНастройками у меня это вообще не создается Улыбка
есть в форме, которую я не открываю и все равно пашет.
в ГМ после загрузть 1С++ написал:
Перехватчик = СоздатьОбъект("Перехватчик");
Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
;      

выше функции:
Функция Событие_НеобработаннаяОшибка(СообщениеОбОшибке, Маркер, ИмяФайла, Парам4, НомерСтрокиОшибки, Парам6)
     Сообщить("Событие_НеобработаннаяОшибка: " + СообщениеОбОшибке+ "," + Маркер+ "," + ИмяФайла+ "," + Парам4+ "," + НомерСтрокиОшибки+ "," + Парам6);
     Возврат 1;
КонецФункции

Функция Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
     Сообщить("Событие_ЗаписьСобытияЖурналаРегистрации: " + EventCategory+ "," + Event+ "," + EvType+ "," + comment+ "," + object+ "," + ObjDescr);
     Возврат 1;
КонецФункции                                                                                       

Функция Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
     Сообщить("Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации: " + EventCategory+ "," + Event+ "," + EvType+ "," + comment+ "," + object+ "," + ObjDescr);
     Возврат 1;
КонецФункции      

15 релиз. и все работает.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #54 - 05. Июля 2007 :: 09:12
Печать  
Phoenix писал(а) 05. Июля 2007 :: 09:07:
УправлениеНастройками у меня это вообще не создается Улыбка

Значит, для данной конфы ты хотя бы один раз (в прошлом !!) включал перехват событий 1С с помощью этого класса Улыбка
Попробуй выключи, перезагрузись и нарвешься на этот же баг Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #55 - 05. Июля 2007 :: 09:16
Печать  
Надеюсь, все понимают, что указанные 3 события друг от друга не зависят, т.е. можно подключить только одно или несколько в любом порядке Улыбка
  

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


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #56 - 05. Июля 2007 :: 13:25
Печать  
Код
Выбрать все
	 ТекстСКЛ =
	 "
	 |SET NOCOUNT ON
	 |Insert Into mlg.dbo.log (UserName,EventCategory,Event,EvType,comment,object,ObjDescr)
	 |	Values ','"+comment+"','"+object+"','"+ObjDescr+"')
	 |";
	 мБД.Выполнить(ТекстСКЛ);

     Возврат 0;
 


Код
Выбрать все
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[log]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[log]
GO

CREATE TABLE [dbo].[log] (
	[Row_Id] [int] IDENTITY (1, 1) NOT NULL ,
	[DateTimePos] [datetime] NULL ,
	[UserName] [varchar] (24) COLLATE Cyrillic_General_CI_AS NULL ,
	[EventCategory] [varchar] (20) COLLATE Cyrillic_General_CI_AS NULL ,
	[Event] [varchar] (20) COLLATE Cyrillic_General_CI_AS NULL ,
	[EvType] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
	[comment] [text] COLLATE Cyrillic_General_CI_AS NULL ,
	[object] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
	[ObjDescr] [text] COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
 

  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #57 - 05. Июля 2007 :: 13:41
Печать  
Залил в репозитарий 1С++ 2.5,
брать завтра, как обычно, в ночной сборке.

Также соответствено обновил доку на Перехватчик.
  

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



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #58 - 05. Июля 2007 :: 18:12
Печать  
огромное спасибо!  Класс
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1spy.dll: нужно добавить выполнение евентов
Ответ #59 - 08. Августа 2007 :: 13:45
Печать  
Ну как? Кто-нибудь использует эту фичу?
Если использует, то каким образом?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 7
ОтправитьПечать