1

In Dynamics 365 for operations I am trying to use a post-event handler of the init() form method from LedgerTransVoucher to find tableId of:

element.args().dataset()

There is a big switch statement in the method that i want to extend with one more case. What i have done so far is just creating an extension class but i don't really know how to get the data from the extended method

[ExtensionOf(formStr(LedgerTransVoucher))]
final class LedgerTransVoucher_Extension
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="args"></param>
    [PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr  (LedgerTransVoucher, init))]
    public static void LedgerTransVoucher_Post_init(XppPrePostArgs args)
    {
        TableId sourceTable;

        //sourceTable = element.args().dataset();
        //if(sourceTable == tableNum(myTable))
        //{
        //    do something here
        //}
    }
}

to call:

sourceTable = element.args().dataset();

of course doesn't work but i wan't to know if i can somehow retrieve the data from the extended method.

This can be done very easily with customization but i want to do everything i can to use extensions instead.

Any ideas or possible workarounds?

Aliaksandr Maksimau
  • 2,251
  • 12
  • 21
AlexanderTh
  • 39
  • 1
  • 4

1 Answers1

1

You can try something like this:

[PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr  (LedgerTransVoucher, init))]
public static void LedgerTransVoucher_Post_init(XppPrePostArgs args)
{
    TableId sourceTable;
    FormRun element;

    element = args.getThis();
    sourceTable = element.args().dataset();

    if(sourceTable == tableNum(myTable))
    {
        do something here
    }
}

or

[FormEventHandler(formStr(LedgerTransVoucher), FormEventType::Initialized)]
public static void LedgerTransVoucher_OnInitialized(xFormRun sender, FormEventArgs e)
{
    if(sender.args().dataset() == tableNum(myTable))
    {
        do something here
    }
}
Aliaksandr Maksimau
  • 2,251
  • 12
  • 21