创建VendInvoiceInfoTable和VendInvoiceInfoLines的活动副本

时间:2016-01-06 14:08:34

标签: axapta dynamics-ax-2012 x++ dynamics-ax-2012-r2 dynamics-ax-2012-r3

我正在尝试按代码修改VendInvoiceInfoTable和VendInvoiceInfoLines以及一些相关数据。

我需要创建这些表的工作副本(带有ParmId集的副本),以便我可以在复制之前进行更改,就像GUI一样。

这可以使用PurchFormLetter吗?好像应该是这样。

//Create Copy
PurchFormLetter_Invoice purhFormLetter_Invoice;
//***do stuff in here?***

//Make changes
activeVendInvoiceInfoTable.MyField = "Hey I have changed";
activeVendInvoiceInfoTable.Update();

//Copy back to saved
VendInvoiceInfoTable::moveFromActiveToSaved(activeVendInvoiceInfoTable);

所以问题是如何创建我的activeVendInvoiceInfoTable

1 个答案:

答案 0 :(得分:0)

Purchformletter类用于发布发票,Packingslips,Conformations等。 我现在不准确,你想要实现什么,所以我提出了不同的解决方案。 首先,你可以看一下,AX如何处理形式发票,你可以看到,斧头在交易中发票,最后用ttsabort中止整个交易。

另一件可能符合您需求的事情是制作表格的临时副本。我写了一些更具体的代码:在临时制作普通表并修改一些数据然后再将其写回数据库。

static void Job6(Args _args)
{
    VendInvoiceInfoLine vendInvoiceInfoLine;
    VendInvoiceInfoLine vendInvoiceInfoLinetmp;
    RecId localRecId;
    ;


    select firstOnly vendInvoiceInfoLine;
    localRecId = vendInvoiceInfoLine.RecId;

    vendInvoiceInfoLinetmp.setTmp();

    vendInvoiceInfoLinetmp.data(vendInvoiceInfoLine);

    info(strFmt("Copy of vendInvoiceInfoLine %1",vendInvoiceInfoLinetmp.ItemId));

    //Modifiy whatever
    vendInvoiceInfoLinetmp.ItemId = "HelloWorld";
    vendInvoiceInfoLinetmp.insert();


    info(strFmt("Orig of vendInvoiceInfoLine %1",vendInvoiceInfoLine.ItemId));
    info(strFmt("Copy of vendInvoiceInfoLine %1",vendInvoiceInfoLinetmp.ItemId));


    //Write Back
    ttsBegin;
    select forUpdate vendInvoiceInfoLine where vendInvoiceInfoLine.RecId == localRecId;

    vendInvoiceInfoLine.data(vendInvoiceInfoLinetmp);
    vendInvoiceInfoLine.update();
    ttsCommit;

    info(strFmt("Orig of vendInvoiceInfoLine %1",vendInvoiceInfoLine.ItemId));
    info(strFmt("Copy of vendInvoiceInfoLine %1",vendInvoiceInfoLinetmp.ItemId));

}