0

我試圖通過代碼修改VendInvoiceInfoTable和VendInvoiceInfoLines以及一些相關數據。創建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

Purchformletter Classes是用於發佈發票,包裝盒,構造等 我現在不完全是你想要達到的目標,所以我提出了不同的解決方案。 首先,您可以看看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)); 

} 
+0

我想複製標準,因爲在使用ParmId填充時,從PurchParmUpdate採取。查看VendInvoiceInfoTable和VendInvoiceInfoLine的標準表單使用PurchFormLetter框架來完成一切。請參閱VendEditInvoice窗體,例如稱爲窗體SalesFormLEtter_ApprovalJournal。如果未設置ParmId,則用戶可能會打開發票並覆蓋我們的更改。 – AnthonyBlake