0

我正在尝试通过代码修改 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的?

4

1 回答 1

0

Purchformletter 类用于张贴发票、装箱单、确认信息等。我现在不完全了解您想要实现的目标,因此我提供了不同的解决方案。首先你可以看一下,AX 如何处理形式发票,在那里你可以看到,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));

}
于 2016-01-07T12:14:06.130 回答