Axapta 是否可以从Dynamics 365中的扩展方法获取element.args()以进行操作

Axapta 是否可以从Dynamics 365中的扩展方法获取element.args()以进行操作,axapta,x++,dynamics-365-operations,dynamics-ax7,Axapta,X++,Dynamics 365 Operations,Dynamics Ax7,在Dynamics 365 for operations中,我试图使用LedgerTransCredential中init()form方法的post事件处理程序来查找以下表格ID: element.args().dataset() 在这个方法中有一个很大的switch语句,我想用另外一个例子来扩展它。 到目前为止,我所做的只是创建一个扩展类,但我真的不知道如何从扩展方法中获取数据 [ExtensionOf(formStr(LedgerTransVoucher))] final class Led

在Dynamics 365 for operations中,我试图使用LedgerTransCredential中init()form方法的post事件处理程序来查找以下表格ID:

element.args().dataset()

在这个方法中有一个很大的switch语句,我想用另外一个例子来扩展它。 到目前为止,我所做的只是创建一个扩展类,但我真的不知道如何从扩展方法中获取数据

[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
        //}
    }
}
[扩展(formStr(账本交易凭证))]
最终类分类帐事务凭证扩展
{
/// 
///
/// 
/// 
[PostHandlerFor(formStr(LedgertTransferCouncil),formMethodStr(LedgertTransferCouncil,init))]
公共静态无效账本TransferToucher\u Post\u init(XppPrePostArgs args)
{
TableId源表;
//sourceTable=element.args().dataset();
//if(sourceTable==tableNum(myTable))
//{
//在这里做点什么
//}
}
}
致电:

sourceTable=element.args().dataset()

当然不起作用,但我不想知道是否可以从扩展方法中检索数据

这可以通过定制很容易地完成,但我想尽我所能使用扩展


有什么想法或可能的解决方法吗?

您可以尝试以下方法:

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

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