Eu tenho uma funcionalidade de extrato bancário altamente personalizada. A lógica de transferência começa com a chamada do Controlador, o controlador se estende de SysOperationServiceController. No método principal do controlador, tenho este trecho de código:
public static void main(Args args)
{
BankStatementTransferController_SI controller;
controller = BankStatementTransferController_SI::newFromArgs(args);
controller.buildQuery();
controller.startOperation();
controller.refreshCallerRecord();
}
E eu sou capaz de depurar isso, até o método startOperation. A lógica principal é executada em outra classe, essa classe se estende de RunBaseBatch. Ambas as classes têm a propriedade "RunOn" definida como "Chamado de". Eu defino pontos de interrupção em ambas as classes, mas após controller.BuildQuery() o processo termina e não para em nenhum ponto de interrupção.
A questão é como depurar essa classe?
Primeiro, tente ir em Ferramentas>Opções>Opções do desenvolvedor e, em seguida, desmarque
Execute business operations in CIL
e veja se isso permite que seus pontos de interrupção sejam atingidos.Se isso não funcionar, use o Visual Studio com as ferramentas de estúdio visual do AX instaladas, que podem ser instaladas usando o instalador do AX e anexadas ao arquivo
Ax32Serv.exe
. Em seguida, você coloca um ponto de interrupção em um objeto AOT de dentro do Visual Studio usando as ferramentas AX VS. Ver:https://learn.microsoft.com/en-us/dynamicsax-2012/developer/debugging-in-microsoft-dynamics-ax-2012
https://learn.microsoft.com/en-us/dynamicsax-2012/developer/debugging-managed-code-in-microsoft-dynamics-ax
Em seguida, sua depuração real é executada usando o Visual Studio e não o depurador AX .