Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Подмена процедуры модуля формы (число прочтений - 6714 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #15 - 20. Декабря 2010 :: 09:51
Печать  
А как сделан вызов глобальной процедуры?
Может вместо нее просто сделать вызов процедуры из контекста класса "DWX.Перехватчик"?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Подмена процедуры модуля формы
Ответ #16 - 20. Декабря 2010 :: 09:56
Печать  
CaBaT писал(а) 20. Декабря 2010 :: 09:51:
А как сделан вызов глобальной процедуры?


в скрипте вызывается CBLModule::CallAsFunc


CaBaT писал(а) 20. Декабря 2010 :: 09:51:
А Может вместо нее просто сделать вызов процедуры из контекста класса "DWX.Перехватчик"?


Можно и так сделать, но тогда придется задействовать еще один класс DWX.Blang - иначе я в скрипт не смогу передать контекст класса Круглые глаза

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #17 - 20. Декабря 2010 :: 10:16
Печать  
Дело ясное, что дело темное.. Улыбка
Текущий вариант вполне приемлем, попробую погонять, потестировать..
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Подмена процедуры модуля формы
Ответ #18 - 21. Декабря 2010 :: 15:47
Печать  
Сегодня решил проверить работу класса на работе и упс...ничего не работает...стал разбираться, нашел 2 ошибки
Если тебе еще актуально могу выложить обновление
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #19 - 22. Декабря 2010 :: 07:00
Печать  
Актуально, просто пока руки не доходят испытать в деле.
Предварительно хотел сделать класс, которому передается управление из глобальной процедуры, а уже через него по подписке происходит подмена модулей.

Подумалось мне тут, что получается, что по сути эта задача - дублирование функционала turbomd, но я его попробовал тут как то на досуге - что то не взлетело у меня, падала 1С-на..
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Подмена процедуры модуля формы
Ответ #20 - 22. Декабря 2010 :: 07:06
Печать  
CaBaT писал(а) 22. Декабря 2010 :: 07:00:
Актуально, просто пока руки не доходят испытать в деле.
Предварительно хотел сделать класс, которому передается управление из глобальной процедуры, а уже через него по подписке происходит подмена модулей.

Подумалось мне тут, что получается, что по сути эта задача - дублирование функционала turbomd, но я его попробовал тут как то на досуге - что то не взлетело у меня, падала 1С-на..


Ничего не падает с турбомд.
Ты видать не правильной версией пользуешься.
ЗЫ: работает годами на всех базах у меня.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #21 - 22. Декабря 2010 :: 07:25
Печать  
Eprst писал(а) 22. Декабря 2010 :: 07:06:
Ничего не падает с турбомд.
Ты видать не правильной версией пользуешься.
ЗЫ: работает годами на всех базах у меня.

Да вроде использовал рекомендованную..
(брал здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1160630298)

Возможно из-за того, что у меня icpp версии 3.0.1.25 до сих пор используется..
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Подмена процедуры модуля формы
Ответ #22 - 22. Декабря 2010 :: 07:26
Печать  
Не, это не из-за 1сpp, работало и на более ранних версий.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Подмена процедуры модуля формы
Ответ #23 - 22. Декабря 2010 :: 07:29
Печать  
CaBaT писал(а) 22. Декабря 2010 :: 07:00:
Предварительно хотел сделать класс, которому передается управление из глобальной процедуры.


Поддерживаю.

CaBaT писал(а) 22. Декабря 2010 :: 07:00:
а уже через него по подписке происходит подмена модулей.


А кто будет подписываться на это?
И даже если это сделать, я не вижу смысла, если включен TurboBL, то встроенный в MD модуль компилируется всего 1 раз,
а тогда в чем смысл подписки?

CaBaT писал(а) 22. Декабря 2010 :: 07:00:
Подумалось мне тут, что получается, что по сути эта задача - дублирование функционала turbomd, но я его попробовал тут как то на досуге - что то не взлетело у меня, падала 1С-на..


В общем-то ты прав....и все-таки у dwx есть свои плюсы: открытый код скрипта; одна компонента, на основе которой, можно соорудить кучу классов, заменяющих отдельные dll-ки.
В общем, хозяин-барин.
  

DWX_Hook_v1_1.zip ( 5 KB | Загрузки )
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #24 - 22. Декабря 2010 :: 07:30
Печать  
Eprst писал(а) 22. Декабря 2010 :: 07:26:
Не, это не из-за 1сpp, работало и на более ранних версий.

Ну х.з..
Возможно это из-за того, что я пытался менять файл модуля сначала на новый, а потом обратно на старый, а в turbomd вроде как проверка - не читать модуль из текста, если дата не менялась.
Может из-за того, что дата назад ушла его колбасит..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #25 - 22. Декабря 2010 :: 07:36
Печать  
chessman писал(а) 22. Декабря 2010 :: 07:29:
А кто будет подписываться на это?
И даже если это сделать, я не вижу смысла, если включен TurboBL, то встроенный в MD модуль компилируется всего 1 раз,
а тогда в чем смысл подписки?

Ну мне видится такая схема:
Допустим, мне надо (возможно временно) подменить какую-нибудь функцию/процедуру в модуле формы документа/справочника.

Схема такая:
1. Создается класс - обработчик подмены, или функционал включается в состав другого вспомогательного класса
2. Этот класс подписывается на событие компиляции модулей
3. При возникновении события, если объект нужного нам типа - подменяем модуль

Такиv образом у нас получается система "Диспетчер -> Обработчики", каждый для своего типа объектов/контекстов.

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



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Подмена процедуры модуля формы
Ответ #26 - 22. Декабря 2010 :: 07:50
Печать  
Ну, про "временно", я тебя предупредил.

Т.е. у тебя будет глобальная переменная  Менеджер событий, которая из "ПриКомпиляцииМодуля" будет вызывать "ПослатьСобытие", как-то так?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #27 - 22. Декабря 2010 :: 08:30
Печать  
Ну как то так Улыбка
А какие проблемы с "временно"?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Подмена процедуры модуля формы
Ответ #28 - 22. Декабря 2010 :: 08:42
Печать  
CaBaT писал(а) 22. Декабря 2010 :: 08:30:
Ну как то так Улыбка
А какие проблемы с "временно"?


если включен TurboBL, то встроенный в MD модуль компилируется всего 1 раз, т.е. до компиляции он доедет только 1 раз
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Подмена процедуры модуля формы
Ответ #29 - 22. Декабря 2010 :: 09:05
Печать  
Не, у меня все классы во внешних обработках
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать