Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вылет при перехвате ОбработкиПроведения (число прочтений - 9507 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #15 - 24. Августа 2010 :: 12:06
Печать  
Да, так всё нормально работает!
Спасибо еще раз!  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #16 - 24. Августа 2010 :: 12:08
Печать  
kms писал(а) 24. Августа 2010 :: 12:02:
artbear писал(а) 24. Августа 2010 :: 11:20:
Пока жду исходников последней версии icpp 3.2.2
Михаил мне прислал старые исходники, от версии 3.0.1.19

Что ж ты, Артур, везде неправду пишешь.
А потом люди скажут: дааа, эх, Михаил - даже старые исходники от новых отличить не можешь.
Нехорошо, Артур.

Да, нехорошо Печаль - не в том каталоге смотрел!
записал в папку 1cpp, а работал с папкой icpp Печаль
Косяк Печаль
ЗЫ а было так хорошо вернуться Улыбка
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Вылет при перехвате ОбработкиПроведения
Ответ #17 - 24. Августа 2010 :: 12:08
Печать  
Все, нахрен Улыбка

Перехватчик - сила, все наконец-то работает, баг закрываем.
Как же я счастлив, если б вы знали.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Вылет при перехвате ОбработкиПроведения
Ответ #18 - 24. Августа 2010 :: 12:10
Печать  
artbear писал(а) 24. Августа 2010 :: 12:08:
kms писал(а) 24. Августа 2010 :: 12:02:
artbear писал(а) 24. Августа 2010 :: 11:20:
Пока жду исходников последней версии icpp 3.2.2
Михаил мне прислал старые исходники, от версии 3.0.1.19

Что ж ты, Артур, везде неправду пишешь.
А потом люди скажут: дааа, эх, Михаил - даже старые исходники от новых отличить не можешь.
Нехорошо, Артур.

Да, нехорошо Печаль - не в том каталоге смотрел!
записал в папку 1cpp, а работал с папкой icpp Печаль
Косяк Печаль
ЗЫ а было так хорошо вернуться Улыбка

Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #19 - 24. Августа 2010 :: 12:12
Печать  
kms писал(а) 24. Августа 2010 :: 12:08:
Перехватчик - сила, все наконец-то работает, баг закрываем.

Ну наконец-то и ты это признал Подмигивание
Баг все-таки закрывать рановато, пусть висит до полного исправления.
Я в нем, конечно, отписался, как можно обойти проблему.

kms писал(а) 24. Августа 2010 :: 12:08:
Как же я счастлив, если б вы знали.

Рад за тебя Улыбка
  

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: Вылет при перехвате ОбработкиПроведения
Ответ #20 - 24. Августа 2010 :: 15:06
Печать  
Михаил, по падению 1С++ после использования кода перехватчика я разобрался.
Баг в том, что при завершении работы приложения
сначала вызывается CAddInApp::ExitInstance()
далее из него вызывается CAddIn::~CAddIn()
из него CAddIn :: Done()
последний метод выполняет основную работу по закрытию объектов 1С++
НО в коде 1С++ очень широко юзается указатель
boost::shared_ptr<class CAddIn> pMainAddIn;
который при вызове деструктора CAddIn::~CAddIn() уже недействителен.
На использовании этого указателя уже после деструктора 1С и падает Печаль

Исправить можно так:
Цитата:
int CAddInApp::ExitInstance()
{
     _Module.Term();  
     BOOL ret = CWinApp::ExitInstance();
     pMainAddIn->Done(); // вставить
     pMainAddIn.reset();
     return ret;
}
CAddIn::~CAddIn()
{
     //Done(); // закомментировать
}

т.е. до вызова деструктора вызываю Done и закрытие ресурсов 1С++, а уж потом деструктор.

Тестовые запуски 1С++ прошли нормально, сабжевый баг не повторяется.
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Вылет при перехвате ОбработкиПроведения
Ответ #21 - 24. Августа 2010 :: 21:28
Печать  
  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #22 - 25. Августа 2010 :: 05:31
Печать  
Т.е. теперь можно и не освобождать перехват проведения каждого документа в ПриЗавершенииРаботы?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #23 - 25. Августа 2010 :: 09:44
Печать  
JohnyDeath писал(а) 25. Августа 2010 :: 05:31:
Т.е. теперь можно и не освобождать перехват проведения каждого документа в ПриЗавершенииРаботы?

Да, вручную можно уже не освобождать.
ЗЫ Фак не забудь почистить Улыбка
  

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: Вылет при перехвате ОбработкиПроведения
Ответ #24 - 30. Августа 2010 :: 15:11
Печать  
Кстати о Перехватчике ...... снова напоминаю о баге, которому скоро исполнится 2 года http://www.1cpp.ru/bugs/show_bug.cgi?id=4238
Неужели у всех так вылизаны модули проведения, что ни у кого не возникает исключения?  Озадачен
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #25 - 31. Августа 2010 :: 05:53
Печать  
avgreen писал(а) 30. Августа 2010 :: 15:11:
Кстати о Перехватчике ...... снова напоминаю о баге, которому скоро исполнится 2 года http://www.1cpp.ru/bugs/show_bug.cgi?id=4238
Неужели у всех так вылизаны модули проведения, что ни у кого не возникает исключения?  Озадачен

Напомни, плиз, исходную ветку на форуме.
Давай в ней обсудим.
Еще было бы удобно, если бы ты валожил простую тестовую конфу (или она уже есть в исходной ветке?)
  

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: Вылет при перехвате ОбработкиПроведения
Ответ #26 - 31. Августа 2010 :: 07:12
Печать  
artbear писал(а) 31. Августа 2010 :: 05:53:
avgreen писал(а) 30. Августа 2010 :: 15:11:
Кстати о Перехватчике ...... снова напоминаю о баге, которому скоро исполнится 2 года http://www.1cpp.ru/bugs/show_bug.cgi?id=4238
Неужели у всех так вылизаны модули проведения, что ни у кого не возникает исключения?  Озадачен

Напомни, плиз, исходную ветку на форуме.
Давай в ней обсудим.

Исходных ветки аж две:
http://www.1cpp.ru/forum/YaBB.pl?num=1248167893/15
http://www.1cpp.ru/forum/YaBB.pl?num=1254820409/13
Продолжать IMHO лучше во второй ветке, т.к. в первой в основном измышления на тему "как обойти баг" и как правило все безуспешные. А по поводу "обойти" .... мое мнение именно такое http://www.1cpp.ru/forum/YaBB.pl?num=1254820409/13#11
Цитата:
Еще было бы удобно, если бы ты валожил простую тестовую конфу (или она уже есть в исходной ветке?)

Тестовой там помоему нету .... если очень нужно - могу изобразить, но в принципе весь тест - это добавление строки
Код
Выбрать все
а=10/0; 

в процедуру ОбработкаПроведения любого документа. И сразу проблема видна в полный рост!
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылет при перехвате ОбработкиПроведения
Ответ #27 - 31. Августа 2010 :: 07:48
Печать  
К сожалению, это общая системная проблема Перехватчика:
не отслеживаются исключения в оригинальных обработчиках событий.
Например, если в форме документа написать
Процедура ПриОткрытии()
     рез = 1/0;
КонецПроцедуры
установить перехват на эту форму/контекст
и выполнить
     Перехватчик=СоздатьОбъект("Перехватчик");      
     рез = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы,"ПриОткрытии");
     Сообщить("рез = "+рез);

всегда будет возвращена 1 Печаль

ЗЫ это системная проблема - у 1С по умолчанию исключения не передаются за границы модуля.
В классах 1С++ и для ВыполняемогоМодуля для обхода этого была написан спец.код.

В общем, еще подумаю.
  

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: Вылет при перехвате ОбработкиПроведения
Ответ #28 - 31. Августа 2010 :: 10:41
Печать  
Перешел в эту ветку http://www.1cpp.ru/forum/YaBB.pl?num=1254820409/15
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать