Переключение на Главную Страницу Страницы: 1 2 [3] 4 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр... (число прочтений - 16573 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #30 - 18. Августа 2012 :: 19:27
Печать  
Тебе тип этого надобно ?
http://infostart.ru/public/14645/
http://infostart.ru/public/14651/

Токма в самой 1с-ине ?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #31 - 20. Августа 2012 :: 07:01
Печать  
(30) Ага, типа того...
« Последняя редакция: 20. Августа 2012 :: 08:15 - alyuev »  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #32 - 20. Августа 2012 :: 08:10
Печать  
(29) Идея понятно. Пока не выходит реализация.

Пишу в Public_Vars():
Код
Выбрать все
		|Public Obj1S 


Далее в Public_Service() в самом конце:
Код
Выбрать все
		|Set Obj1S 	= GetObject("""+м_Система.Сериализовать(Контекст)+""")
 


м_Система = СоздатьОбъект("Система"); //вызов в Инит()

В Public_Func() в конце Function Message() делаю вызвов своей процедуры :
Код
Выбрать все
	|	Obj1S.LLL() 


Код
Выбрать все
Процедура LLL()
	Сообщить("Поймали");
КонецПроцедуры 


(Экспорт для LLL() тоже пробовал)

И ничего.... "Поймали" не выводится.

Завершаю так:

Код
Выбрать все
Процедура ПриЗакрытии()
	ScrptCtrl.AddCode("Obj1S = """"");
	м_Система = "";
КонецПроцедуры
 




  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #33 - 21. Августа 2012 :: 06:05
Печать  
Исправь
Код
Выбрать все
Private oldFunc1 


на
Код
Выбрать все
Public oldFunc1 

  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #34 - 21. Августа 2012 :: 08:22
Печать  
Исправил, не помогло.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #35 - 21. Августа 2012 :: 10:09
Печать  
Вот "рабочий" вариант. В кавычках, т.к. у меня какие-то траблы с передачей Контекста в скрипт. Если просто открыть и закрыть обработку, на 5-6 м открытии 1С-ка вылетает.
Пробовал поиграть с Контекстом просто на голом примере, без всяких перехватов - тоже самое.
Попробуй у себя, может у меня проблема с версией 1С++.
  

Hook_Mes_002.ert ( 9 KB | Загрузки )
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #36 - 21. Августа 2012 :: 10:44
Печать  
Ага. Работает.

Ты убрал строку
Код
Выбрать все
|	Wrap.Message Hex(ecx) 

 

Без неё и у меня заработало.

И у меня тоже вылеты после раз так 15-и открытий-закрытий.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #37 - 21. Августа 2012 :: 10:51
Печать  
Буду думать, что еще можно сделать.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #38 - 21. Августа 2012 :: 11:17
Печать  
chessman писал(а) 21. Августа 2012 :: 10:09:
Вот "рабочий" вариант. В кавычках, т.к. у меня какие-то траблы с передачей Контекста в скрипт.

Если сериализация не работает, почему не юзаете "штатный" путь для вызова метода контекста ?
находим номер метода pCont->FindProc, далее CallProc с передачей номера метода и необходимых параметров?
  

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


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #39 - 21. Августа 2012 :: 11:22
Печать  
Если мы скрипт будем запускать в классе - передача Контекста в скрипт там тоже подойдет? Чтобы потом из скрипта вызвать какой-то метод Класса?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #40 - 21. Августа 2012 :: 11:54
Печать  
artbear писал(а) 21. Августа 2012 :: 11:17:
chessman писал(а) 21. Августа 2012 :: 10:09:
Вот "рабочий" вариант. В кавычках, т.к. у меня какие-то траблы с передачей Контекста в скрипт.

Если сериализация не работает, почему не юзаете "штатный" путь для вызова метода контекста ?
находим номер метода pCont->FindProc, далее CallProc с передачей номера метода и необходимых параметров?


Бяда Улыбка в том, что в срипт контекст не передать, будет ругань на тип переменной.
У меня есть обходной вариант -можно поправить на лету blang, тогда можно получить указатель на CBLContext в виде числа, передать его в скрипт и далее, как ты сказал.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #41 - 21. Августа 2012 :: 12:25
Печать  
chessman писал(а) 21. Августа 2012 :: 11:54:
artbear писал(а) 21. Августа 2012 :: 11:17:
chessman писал(а) 21. Августа 2012 :: 10:09:
Вот "рабочий" вариант. В кавычках, т.к. у меня какие-то траблы с передачей Контекста в скрипт.

Если сериализация не работает, почему не юзаете "штатный" путь для вызова метода контекста ?
находим номер метода pCont->FindProc, далее CallProc с передачей номера метода и необходимых параметров?


Бяда Улыбка в том, что в срипт контекст не передать, будет ругань на тип переменной.
У меня есть обходной вариант -можно поправить на лету blang, тогда можно получить указатель на CBLContext в виде числа, передать его в скрипт и далее, как ты сказал.

Да, лучше такой метод использовать, чтобы все было "штатно".
  

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



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #42 - 22. Августа 2012 :: 20:13
Печать  
Вариант с исправлением blang и вызовом функции из срипта "стандартым" образом.

  

Hook_Mes_003.ert ( 9 KB | Загрузки )
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #43 - 05. Сентября 2012 :: 12:39
Печать  
Работает. И даже не падает. Но. Чтобы работал перехват - нужна запущенная обработка. Т.к. функция Test ищется в текущем контексте. Что в итоге не есть интересно.

Попробовал сделать это всё в классе. Не работает. Т.к. класс себе инициализировался - и привет. Пробовал передать контекст как Контекст и как Сам(Контекст). На Сам() - вообще валится 1С.

Реализовать в глобальнике тоже не получается - Контекста-то нет.

Может есть какой-то способ вызвать вызвать процедуру, объявленную как экспорт? Без передачи Контекста. Тогда можно этот скрипт запустить в глобальнике. И пусть себе перехватывает в Экспортную процедуру.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик для Сообщить(), Предупреждение(), Вопрос() и пр...
Ответ #44 - 05. Сентября 2012 :: 12:46
Печать  
Хотя сам по себе перехват в классе работает. Во всяком случае Сообщить() и Состояние() скрипт перехватывает. (Состояние перехватывает, если, конечно, убрать из скрипта строки по вызову функции Контекста).

А из скриптов вообще можно вызывать глобальные Процедуры/Функции?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 
ОтправитьПечать