Axapta 如何从AX 2012零售POS中的代码在屏幕上加载交易

Axapta 如何从AX 2012零售POS中的代码在屏幕上加载交易,axapta,dynamics-ax-2012,dynamics-ax-2012-r2,Axapta,Dynamics Ax 2012,Dynamics Ax 2012 R2,我们要求在显示日记帐屏幕上为用户提供复制交易按钮,点击此按钮将在主POS屏幕上加载所选交易的准确信息,出纳可以进行投标和结算 我在表单上创建了一个按钮,在按钮的单击事件中,我使用以下代码加载并启动了事务对象: if (gridView1.SelectedRowsCount > 0) { DataRow Row = gridView1.GetDataRow(gridView1.GetSelectedRows()[0]);

我们要求在
显示日记帐
屏幕上为用户提供
复制交易
按钮,点击此按钮将在主POS屏幕上加载所选交易的准确信息,出纳可以进行投标和结算

我在表单上创建了一个按钮,在按钮的单击事件中,我使用以下代码加载并启动了事务对象:

 if (gridView1.SelectedRowsCount > 0)
            {
                DataRow Row = gridView1.GetDataRow(gridView1.GetSelectedRows()[0]);
                selectedTransactionId = (string)Row["TRANSACTIONID"];
                selectedStoreId = (string)Row["STORE"];
                selectedTerminalId = (string)Row["TERMINAL"];

                PosTransaction transaction = LoadTransaction(selectedTransactionId, selectedStoreId, selectedTerminalId);


            }
this.Application.BusinessLogic.SuspendRetrieveSystem.SuspendTransaction(transaction);
this.Application.BusinessLogic.SuspendRetrieveSystem.RetrieveTransaction(transaction.TransactionId);
现在我找不到将此事务加载到主屏幕的方法,我已尝试设置
this.posTransaction=transaction但它不起作用

然后我尝试挂起事务并检索挂起的事务,我可以通过以下代码成功挂起事务:

 if (gridView1.SelectedRowsCount > 0)
            {
                DataRow Row = gridView1.GetDataRow(gridView1.GetSelectedRows()[0]);
                selectedTransactionId = (string)Row["TRANSACTIONID"];
                selectedStoreId = (string)Row["STORE"];
                selectedTerminalId = (string)Row["TERMINAL"];

                PosTransaction transaction = LoadTransaction(selectedTransactionId, selectedStoreId, selectedTerminalId);


            }
this.Application.BusinessLogic.SuspendRetrieveSystem.SuspendTransaction(transaction);
this.Application.BusinessLogic.SuspendRetrieveSystem.RetrieveTransaction(transaction.TransactionId);
但无法使用以下代码检索此事务:

 if (gridView1.SelectedRowsCount > 0)
            {
                DataRow Row = gridView1.GetDataRow(gridView1.GetSelectedRows()[0]);
                selectedTransactionId = (string)Row["TRANSACTIONID"];
                selectedStoreId = (string)Row["STORE"];
                selectedTerminalId = (string)Row["TERMINAL"];

                PosTransaction transaction = LoadTransaction(selectedTransactionId, selectedStoreId, selectedTerminalId);


            }
this.Application.BusinessLogic.SuspendRetrieveSystem.SuspendTransaction(transaction);
this.Application.BusinessLogic.SuspendRetrieveSystem.RetrieveTransaction(transaction.TransactionId);
我知道我可以逐个读取项目并将其添加到交易中,但如果对交易应用了折扣,或者交易是忠诚交易,那么我必须重新加载准确的交易。

您尝试过吗

if (!string.IsNullOrEmpty(this.selectedTransactionId)) {
    application.RunOperation(PosisOperations.RecallTransaction, this.selectedTransactionId);
}