Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) События типа ЗаписьСобытияЖурналаРегистрации (число прочтений - 6305 )
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
События типа ЗаписьСобытияЖурналаРегистрации
22. Мая 2008 :: 07:36
Печать  
Сегодня вдруг начало ругаться на Subj при запуске 1С

Количество параметров в событии 'Событие_НеобработаннаяОшибка' должно быть точно равно 7.
Количество параметров в событии 'Событие_ЗаписьСобытияЖурналаРегистрации' должно быть точно равно 7.
Количество параметров в событии 'Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации' должно быть точно равно 7.


Со вчера вроди-бы ничего не менял. Начало ругаться. Посмотрел - параметров действительно  6 а не 7. Добавил 7-й - все равно ругается!

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

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

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



Добавил описание в prm файл
Код
Выбрать все
класс ПерехватчикСобытий = HookEventsGlob.ert
{
	void Инициализация(Знач ГлобальныйКонтекст пКонт = 0);
	Число СобытиеГМ_Событие_НеобработаннаяОшибка(СообщениеОбОшибке, Маркер, ИмяФайла, Парам4, НомерСтрокиОшибки, Парам6, Парам7);
	Число СобытиеГМ_Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr, Парам7);
	Число , Event, EvType, comment, object, ObjDescr, Парам7);
};
 

 

Опять ругается!  Плачущий

Пробовал с 1С++  версиеи 3.0  и версии 2.5.0.6  от 19.05.2005. Результат одинаковый. Не пойму где я туплю! Вчера ведь не ругалось! А эти методы я не трогал с тех пор как попробовал их работоспособность, т.е. месяца 2-3

На версии 2.5.0.6  от 07.02.2005 работает номально.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #1 - 22. Мая 2008 :: 08:26
Печать  
А попробуй-ка убрать Знач из определения
void Инициализация(Знач ГлобальныйКонтекст пКонт = 0);
С использованием Знач у 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: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #2 - 22. Мая 2008 :: 08:27
Печать  
И покажи код класса-перехватчика и код установки перехвата на эти события.
  

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: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #3 - 22. Мая 2008 :: 08:29
Печать  
1. Кстати, у тебя в глобальнике случайно нету функций Событие_НеобработаннаяОшибка и т.д. ?
2. Покажи код обработчика события СобытиеГМ_Событие_НеобработаннаяОшибка, ты в нем случайно не вызываешь
Перехватчик = СоздатьОбъект("Перехватчик");
ЖурналаРегистрации", и тут 7 параметров ???);
  

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: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #4 - 22. Мая 2008 :: 08:43
Печать  
Посмотрел свой код в 1С++, там опечатка на 1:(
соответственно, твое сообщение нужно читать как "точно равно 6" Улыбка

Проверь 6 параметров и ответь на все мои предыдущие вопросы Улыбка
  

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: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #5 - 22. Мая 2008 :: 08:45
Печать  
artbear писал(а) 22. Мая 2008 :: 08:43:
Посмотрел свой код в 1С++, там опечатка на 1:(

Исправлено в 3.0 и 2.5, будет завтра.
  

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: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #6 - 22. Мая 2008 :: 08:49
Печать  
avgreen писал(а) 22. Мая 2008 :: 07:36:
Сегодня вдруг начало ругаться на Subj при запуске 1С

Пробовал с 1С++  версиеи 3.0  и версии 2.5.0.6  от 19.05.2005. Результат одинаковый. Не пойму где я туплю! Вчера ведь не ругалось! А эти методы я не трогал с тех пор как попробовал их работоспособность, т.е. месяца 2-3

На версии 2.5.0.6  от 07.02.2005 работает номально.

Версия Перехватчика на 07.02 ничем не отличается от текущей Улыбка, специально только что проверил.
  

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #7 - 22. Мая 2008 :: 08:50
Печать  
avgreen писал(а) 22. Мая 2008 :: 07:36:
На версии 2.5.0.6  от 07.02.2005 работает номально.


Опаньки! Извиняюсь! И на версии  2.5.0.6  от 07.02.2005  тоже не работает!
Раньше ни разу не ругалось а теперь начало! Странно!
Щас посмотрю все остальное что ты просил...... и отвечу. А зодно поищу при каких условиях это лезет!
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #8 - 22. Мая 2008 :: 09:02
Печать  
[quote author=artbear link=1211441780/0#6 date=1211446191
Версия Перехватчика на 07.02 ничем не отличается от текущей Улыбка, специально только что проверил. [/quote]

Короче так, когда я добавил 7-й параметр - начало ругаться сразу при запуске, т.е. я так понял при перехвате, а когда убрал 7-й параметр - ругается только при работе одного (пока по крайней мере больше не обнаружил) внешнего отчета. Сейчас буду смотреть что там такого в этом отчете и в используемых им классах страшного.
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #9 - 22. Мая 2008 :: 09:13
Печать  
artbear писал(а) 22. Мая 2008 :: 08:27:
И покажи код класса-перехватчика и код установки перехвата на эти события.


Ну код класса-перехватчика слишком длинный 840  строк. Просто у меня все в одном, и глобальные перехваты, ГМ тоесть,  и ГК.

То что относится к обработчика перехвата именно этих событий я уже привел. У меня там по сути как ты видишь просто заглушки пока (нет времени дописать реализацию Улыбка)

А сам перехват в функции Инициализация()

Код
Выбрать все
Процедура Инициализация(Знач пКонт = 0) Экспорт
	Если пКонт <> 0 Тогда // если контекст не равен "0" то перехватываем ГК
		КонтекстПерехваченнойФормы=пКонт;
		Права.ОбъектМетаданных = КонтекстПерехваченнойФормы;
		Перехватчик.ПерехватитьСобытияГК(КонтекстПерехваченнойФормы,Контекст);
	Иначе  // а иначе перехватываем ГМ
		//Сообщить("Перехвачен ГМ");
		Настройки = СоздатьОбъект("УправлениеНастройками");
		Настройки.Включить("ПерехватитьСобытияГК");
		СтарыйПерехватчикСобытий = Перехватчик.ПолучитьПерехватчикСобытийГлобальногоМодуля();
		Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
		Перехватчик.ПерехватитьСобытияГлобальногоМодуля(Сам());

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

		// ФормаРасш и Права могут быть не инициализированы в Конструкторе. Причину см. в самом Конструкторе
		Если ПустоеЗначение(ФормаРасш) = 1 Тогда
			ФормаРасш=СоздатьОбъектВК("FormEx.dll", "РасширениеФормы");
		КонецЕсли;
		Если ПустоеЗначение(Права) = 1 Тогда
			МетаКлассы = СоздатьОбъект("MetaInfoClasses");
			сзКлассов = МетаКлассы.ПолучитьВсеИменаКлассов();
			Если сзКлассов.НайтиЗначение("ПраваНаОбъектыМетаданныхРасш") <> 0 Тогда
				Права = СоздатьОбъект("ПраваНаОбъектыМетаданныхРасш");
			Иначе
				Права = СоздатьОбъект("ПраваНаОбъектыМетаданных");
			КонецЕсли;  
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

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

Функция СобытиеГМ_ПриОткрытии(КонтФормы, ФлагЧтенияНастройки) Экспорт
	//Сообщить("СобытиеГМ_ПриОткрытии " + Строка(КонтФормы));
	Если ПустоеЗначение(КонтФормы) = 0 Тогда
		ПерехватчикСобытий = Перехватчик.ПолучитьПерехватчикСобытийГК(КонтФормы);
		Если ПустоеЗначение(ПерехватчикСобытий) = 1 Тогда
			Возврат СоздатьЭкземплярСамогоСебя(КонтФормы);
		КонецЕсли;
	КонецЕсли;
	Возврат 1;
КонецФункции

 



Ну вот код....... заморочено конечно слегка  Смущённый
СобытиеГМ_ВводНового и СобытиеГМ_ВводНаОсновании аналогичны СобытиеГМ_ПриОткрытии
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #10 - 22. Мая 2008 :: 09:22
Печать  
Отвечай на все вопросы Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #11 - 22. Мая 2008 :: 09:23
Печать  
avgreen писал(а) 22. Мая 2008 :: 09:13:
Ну код класса-перехватчика слишком длинный 840  строк. Просто у меня все в одном, и глобальные перехваты, ГМ тоесть,  и ГК.

А вот для этого умные люди придумали наследование или агрегацию Улыбка - т.е. каждый класс должен выполнять свою маленькую задачу, свой кирпичик, не нужно весь код мешать в один класс/блок Улыбка
  

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #12 - 22. Мая 2008 :: 09:24
Печать  
Все! Выяснилось где собака порылась..... но вот как именно она порылась - пока не ясно Улыбка

Короче в одном из классов срабатывал код

Код
Выбрать все
Сообщить("Из ""ТЗСортировок"" удален реквизит """ + Реквизит + """ т.к. он отсутствует в ""ТЗДанных""!", "!");
 



При этом в Реквизит попадала пустая строка, или ПереводСтроки() - точно пока не выяснил. Это и вызывало глюк
Переписал код так
Код
Выбрать все
Сообщить("Из ""ТЗСортировок"" удален реквизит """ + СокрЛП(Реквизит) + """ т.к. он отсутствует в ""ТЗДанных""!", "!");
 



глюк ушел!
Ну усугубило ситуацию сообщение что нужно семь параметров и то что я поменял версию библиотеки и частично переписал классы. Просто не знал куда кидаться - много всего поменялось Улыбка
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #13 - 22. Мая 2008 :: 09:28
Печать  
artbear писал(а) 22. Мая 2008 :: 08:29:
1. Кстати, у тебя в глобальнике случайно нету функций Событие_НеобработаннаяОшибка и т.д. ?
2. Покажи код обработчика события СобытиеГМ_Событие_НеобработаннаяОшибка, ты в нем случайно не вызываешь
Перехватчик = СоздатьОбъект("Перехватчик");
ЖурналаРегистрации", и тут 7 параметров ???);

Отвечаю по требованию Улыбка

1. Нету
2. Не вызываю. Просто возвращаю "1" и все! Я так понял что в этом случае ОригинальноеСобытие само отработает
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События типа ЗаписьСобытияЖурналаРегистрации
Ответ #14 - 22. Мая 2008 :: 09:30
Печать  
avgreen писал(а) 22. Мая 2008 :: 09:28:
artbear писал(а) 22. Мая 2008 :: 08:29:
1. Кстати, у тебя в глобальнике случайно нету функций Событие_НеобработаннаяОшибка и т.д. ?
2. Покажи код обработчика события СобытиеГМ_Событие_НеобработаннаяОшибка, ты в нем случайно не вызываешь
Перехватчик = СоздатьОбъект("Перехватчик");
ЖурналаРегистрации", и тут 7 параметров ???);

Отвечаю по требованию Улыбка

1. Нету
2. Не вызываю. Просто возвращаю "1" и все! Я так понял что в этом случае ОригинальноеСобытие само отработает

По п.2 - смысл ВыполнитьОригинальноеСобытиеГлобальногоМодуля - если есть обработчик этого события в ГМ, то выполнить его, иначе ничего не делать.
А у  тебя из ГМ ничего не вызывается, т.е. в общем случае будет косяк Улыбка
  

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