我正在尝试按代码修改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
?
答案 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));
}