Axapta 创建VendInvoiceInfoTable和VendInvoiceInfoLines的活动副本
我试图通过代码修改VendInvoiceInfoTable和VendInvoiceInfoLines以及一些相关数据 我需要创建这些表的工作副本(一个带有ParmId集的副本),这样我就可以在复制回之前进行更改,就像GUI那样 使用PurchFormLetter是否可以实现这一点?似乎应该如此Axapta 创建VendInvoiceInfoTable和VendInvoiceInfoLines的活动副本,axapta,dynamics-ax-2012,x++,dynamics-ax-2012-r2,dynamics-ax-2012-r3,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 change
//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
?Purchformletter类用于过账发票、装箱单、确认等。
我现在不知道你想要实现什么,所以我提供了不同的解决方案。
首先,您可以看看AX如何处理形式发票,在这里您可以看到,AX在事务中发布发票,最后使用TTSAport中止整个事务
另一件可能适合您的需要的事情是制作表的临时副本。我编写了一些更具体的代码:在那里,我将一个普通表设为临时表,并修改一些数据,然后将其重新处理并写入数据库
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));
}
我试图复制标准,就像在使用时填充ParmId一样,取自PurchParmUpdate。查看VendInvoiceInfoTable和VendInvoiceInfoLine的标准表单使用PurchFormLetter框架完成所有操作。例如,请参见名为表单SalesFormLEtter_ApprovalJournal的VendEditInvoice表单。如果未设置ParmId,则用户可能会打开发票并覆盖我们的更改。