Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Axapta 创建VendInvoiceInfoTable和VendInvoiceInfoLines的活动副本_Axapta_Dynamics Ax 2012_X++_Dynamics Ax 2012 R2_Dynamics Ax 2012 R3 - Fatal编程技术网

Axapta 创建VendInvoiceInfoTable和VendInvoiceInfoLines的活动副本

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

我试图通过代码修改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

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,则用户可能会打开发票并覆盖我们的更改。