Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Перехватчик + BinaryData - не хотят работать совместно (число прочтений - 1259 )
sacred
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 27. Апреля 2012
Пол: Мужской
Перехватчик + BinaryData - не хотят работать совместно
20. Ноября 2019 :: 00:09
Печать  
Код (Pascal)
Выбрать все
	ЗагрузитьВнешнююКомпоненту("1cpp.dll");
	Упр = СоздатьОбъект("УправлениеНастройками");
	Упр.Включить("ПерехватитьСобытияГК");
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
 



при начале работы системы и далее

Код (Pascal)
Выбрать все
Процедура Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
	Если ТипЗначенияСтр(object) = "Справочник" Тогда
		Если object.Вид() = "Номенклатура" Тогда
			Запись = СоздатьОбъект("BinaryData");
			Запись.Кодировка = 0; // ANSI
			Запись.ПодключитьсяКФайлу("c:\temp\log.txt", 2, 2);
			Запись.Перейти(0, 2);
			Стр = Строка(ТекущаяДата())+" "+ТекущееВремя()+ СимволТабуляции
					+ object.Вид() + СимволТабуляции
					+ Event + СимволТабуляции
					+ "Код=" + object.Код + СимволТабуляции
					+ "Наименование=" + object.Наименование + СимволТабуляции;
			Запись.ЗаписатьСтроку(Стр);
			Запись.Закрыть();

			Сообщить(Стр);
			Сообщить(EventCategory);
			Сообщить(Event);
			Сообщить(EvType);
			Сообщить(object);
			Сообщить(ObjDescr);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры 



В итоге в файл ничего не записывается. Хотя Стр - заполнена как надо. Никаких ошибок не выдаётся.
Если этот код вставить, например просто в обработку (изменив, конечно формирование Стр) - файл прекрасно дополняется новыми строками.
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #1 - 20. Ноября 2019 :: 08:01
Печать  
У меня работает:
https://yadi.sk/i/fzORsdTkM_p4Bg
  
Наверх
 
IP записан
 
pvn
YaBB Newbies
*
Отсутствует


Любознательный

Сообщений: 1
Зарегистрирован: 20. Ноября 2019
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #2 - 20. Ноября 2019 :: 09:40
Печать  
nicesc писал(а) 20. Ноября 2019 :: 08:01:
У меня работает:
url...https__yadi.sk/i/fzORsdTkM_p4Bg...url


Уважаемый, уточните, пожалуйста, какую версию icpp.dll (или 1cpp.dll) вы использовали.
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #3 - 20. Ноября 2019 :: 09:49
Печать  
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #4 - 20. Ноября 2019 :: 12:35
Печать  
Процедура Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
  Попытка
     Если ТипЗначенияСтр(object) = "Справочник" Тогда
           Если object.Вид() = "Номенклатура" Тогда
                 Запись = СоздатьОбъект("BinaryData");
                 Запись.Кодировка = 0; // ANSI
                 Запись.ПодключитьсяКФайлу("c:\temp\log.txt", 2, 2);
                 Запись.Перейти(0, 2);
                 Стр = Строка(ТекущаяДата())+" "+ТекущееВремя()+ СимволТабуляции
                             + object.Вид() + СимволТабуляции
                             + Event + СимволТабуляции
                             + "Код=" + object.Код + СимволТабуляции
                             + "Наименование=" + object.Наименование + СимволТабуляции;
                 Запись.ЗаписатьСтроку(Стр);
                 Запись.Закрыть();

                 Сообщить(Стр);
                 Сообщить(EventCategory);
                 Сообщить(Event);
                 Сообщить(EvType);
                 Сообщить(object);
                 Сообщить(ObjDescr);
           КонецЕсли;
     КонецЕсли;
  Исключение
                 Запись = СоздатьОбъект("BinaryData");
                 Запись.Кодировка = 0; // ANSI
                 Запись.ПодключитьсяКФайлу("c:\err_log.txt", 2, 2);
                 Запись.Перейти(0, 2);
                 Запись.ЗаписатьСтроку(ОписаниеОшибки());
                 Запись.Закрыть();
  КонецПопытки
КонецПроцедуры
  

1&&2&&3
Наверх
 
IP записан
 
sacred
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 27. Апреля 2012
Пол: Мужской
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #5 - 20. Ноября 2019 :: 19:03
Печать  
Очень краткий ответ. И непонятный.
На всякий случай уточню, все строчки с Сообщить() в моём исходном варианте - отрабатывают, то есть никаких исключений не происходит.
Версия 1cpp тоже 3.2.4.1.
Возможно дело в операционке. Windows 7 Home.

Если повесить процедуру записи в лог на кнопку в обработке - файл пишется. А при работе внутри перехвата, к файлу даже обращений не делается, смотрел с помощью procmon.
  
Наверх
 
IP записан
 
sacred
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 27. Апреля 2012
Пол: Мужской
Re: Перехватчик + BinaryData - не хотят работать совместно
Ответ #6 - 20. Ноября 2019 :: 22:15
Печать  
Отбой тревоги: http://www.1cpp.ru/forum/YaBB.pl?num=1574287997

Тестовый пример пришлось изменить, поэтому на нём ошибка не воспроизводится, прошу прощения за напрасные хлопоты.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать