AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.03.2021, 19:15   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
RegisterOverrideMethod was called twice for the same object for method 'leave'. You can only override a method once per instance.
Привет всем.

Коллеги, кто-нибудь встречался с такой ошибкой
"RegisterOverrideMethod was called twice for the same object for method 'leave'. You can only override a method once per instance."
по русски
"RegisterOverrideMethod вызван дважды для одного и того же объекта для метода "leave". Возможно только однократное переопределение метода для одного экземпляра."

Она появляется если для одного контрола дважды вызвать RegisterOverrideMethod, что очень неудобно.
Пишу некий функционал, который добавляет свой обработчик для ряда контролов на SysSetupFormRun. Соответсвенно, если в коде уже был вызван RegisterOverrideMethod то получаю ошибку.

Можно это как-то обойти ?

Или как можно поймать и обработать вызов leave метода для произвольного контрола на форме.

Может есть какой-то способ приделать своего слушателя, который бы вызывался на leave контрола для любой формы?

Axapta 2012 R3
Старый 10.03.2021, 19:32   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Привет всем.

Коллеги, кто-нибудь встречался с такой ошибкой
"RegisterOverrideMethod was called twice for the same object for method 'leave'. You can only override a method once per instance."
по русски
"RegisterOverrideMethod вызван дважды для одного и того же объекта для метода "leave". Возможно только однократное переопределение метода для одного экземпляра."

Она появляется если для одного контрола дважды вызвать RegisterOverrideMethod, что очень неудобно.
Пишу некий функционал, который добавляет свой обработчик для ряда контролов на SysSetupFormRun. Соответсвенно, если в коде уже был вызван RegisterOverrideMethod то получаю ошибку.

Можно это как-то обойти ?

Или как можно поймать и обработать вызов leave метода для произвольного контрола на форме.

Может есть какой-то способ приделать своего слушателя, который бы вызывался на leave контрола для любой формы?

Axapta 2012 R3
Добрый день!
Встречался с этим (правда в D365FO). Обойти не смог . Но речь шла о lookup / jumpRef / modified-методах
__________________
Возможно сделать все. Вопрос времени
Старый 10.03.2021, 20:10   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А сделать что-нибудь типа EventHandler-а как для X++ классов возможно ?
Сомневаюсь конечно.
FormControl - это системный объект.
Но вдруг...
Старый 10.03.2021, 20:20   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
А сделать что-нибудь типа EventHandler-а как для X++ классов возможно ?
Сомневаюсь конечно.
FormControl - это системный объект.
Но вдруг...
Дело в том, что в D365FO все EventHandler-ы и прочие технологии расширений "идут лесом", если сделан registerOverride. Собственно - я так и столкнулся с этим - попытался добавить свой код в modified и убедился, что ни CoC, ни EventHandler-ы с этим не справляются. Потом увидел в коде registerOverride и решил сделать registerOverride на себя Снова не получилось уже из-за той же ошибки, которую Вы описали. Я уже не помню как вышел из положения, но помню, что пришлось с этим смириться и переносить логику в другое место (полагаю, что на validateWrite / write-методы).

Полагаю, что в AX2012 идейно система похожим образом работает
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Logger (10).
Старый 10.03.2021, 20:22   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ох.
Еще одна дырявая абстракция.
Теги
registeroverridemethod

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
d365technext: Form Data Source Field Method Override D365FO Blog bot DAX Blogs 0 02.11.2018 14:11
d365technext: Form Data Source Method override COC D365FO Blog bot DAX Blogs 0 02.11.2018 14:11
ievgensaxblog: D365FOE. How to override form data source field lookup method. Blog bot DAX Blogs 0 10.01.2018 05:11
ошибка в AIF syl DAX: Программирование 14 20.08.2015 15:25
На заметку: RunBase->Override->validate "The method override has an incorrect number of parameters." IKA DAX: Программирование 1 02.09.2014 09:57

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:29.