AlexanderTh
AlexanderTh

Reputation: 39

Is it possible to get element.args() from an extended method in Dynamics 365 for operations

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?

Upvotes: 1

Views: 6920

Answers (1)

Aliaksandr Maksimau
Aliaksandr Maksimau

Reputation: 2281

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
    }
}

Upvotes: 1

Related Questions