![]() |
#1 |
Участник
|
Lookup на standalone поле на extension
D365
Есть форма-далог(EcoResProductCreate) Мне надо на нее добавить контрол, что открывает список NumberSequence , отфильтрованный по определенному критирию. (по потом надо генерировать номер продукта в зависимости от выбранной NumberSeq) Я добавила контрол MyControl типа String. На нем: Lookup Button = Always AutoDeclaration = Yes EDT: NumberSequenceCode В коде формы пишу класс X++: [control("String")] class MyControl { public void lookup() { ..... } } А визуально метод не отображается в списке методов моего контрола. Но у меня ощущение, что так нельзя. Нужно обязательно через eventHandler делать лукап. Это так? Не нахожу онлайн правила, когда можно пуками писать, а когда только через eventHandler Если оно есть, тыкните носом, где это описано, пожалуйста |
|
![]() |
#2 |
Участник
|
MS давно строит архитектуру Аксапты так, чтобы изолировать кастомизации от коробки.
Современная реализация (365) частично решает эту проблему через event driven design (https://learn.microsoft.com/en-us/dy...v-events-in-al). Использование event handler - рекомендованный подход, best practice, но не обязательный. Ознакомьтесь: https://dynamics365musings.com/overr...ethod-in-d365/ Что касается точек останова, здесь важны детали, в контексте GUI - по моему, это особенности движка. |
|
![]() |
#3 |
Участник
|
Спасибо. Я задолбалась и переписала на event handler. Все работает. Но не понмиаю, почему онлайн много примеров, где именно метод lookup пишут (может, копируют примеры из предыдущих версий? либо именно в extension не работает лукап даже на своих контролах ) Докуметация микрософта молчит. best practice каких-либо для D365 вообще не нахожу.
Кстати, Re event handler (безотносительно lookup) тоже все не так понятно. Много споров использовать COC или event handler(где оба варианта возможны) .Обычно советуется COC Вы используете везде event handler ? |
|
![]() |
#4 |
Administrator
|
COC более понятен для чтения и удобен для программирования, поскольку выполнение находится в текущем контексте формы. EventHanlder в этом плане - это вызов статического метода, в котором форма доступна как объект, но как бы "снаружи". Поэтому организовать размещение кода в EventHandler с возможностью повторного вызова сложнее, чем через СОС
Ну и COC всегда требует вызов next, в отличие от EventHandler. В целом - обе технологии применимы, но с т.з. организации разработки - для использования любой технологии нужно определить какие-то внутренние правила для целей последующего анализа кода, т.к. технически размещать код можно где угодно, а вот позже искать эти размещения гораздо сложнее (например, один разработчик написал код с использованием EventHandler, а другой - через COC. А третий в init формы через registeroverride вообще третье место использовал - вот и пойди разберись - что в итоге срабатывает)
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
d365 |
|
|