2012-06-21 97 views

回答

1

您不能將C/AL代碼直接在RTC報告 - 而不是你應該使用DataItems後面的觸發器在「經典」的客戶端/開發環境,因爲這個代碼是常見經典和RTC報告,並在報告在任一環境中運行時執行。

要使用類似的例子;

Vendor - OnAfterGetRecord() 
---------------------------- 

... 

IF Vendor."Phone No." = '' THEN BEGIN 
    Vendor."Phone No." := NewPhoneNo; 
    Vendor.MODIFY; 
END; 

... 

您可能要設置在報告本身隱藏打印對話框,以及申請表以下屬性(假設你不想要應用的過濾器):

UseReqForm := FALSE; 
ProcessingOnly := TRUE; 

另一個需要注意的重要一點是坐在後面的代碼僅用於Classic報表,並且如果在RTC中運行(這可能會解釋意外的結果)將不會執行。

+0

你有這樣做的任何示例代碼? – Makara

+0

請參閱修改我的答案。這取決於您需要進行哪些修改,以及要修改的記錄類型。如果您有任何示例代碼,請將其附加到您的問題以獲得更具體的答案:) –

2

您可以在您的報表觸發器中放置代碼。

下面是一個簡單的代碼示例,可以放入引用Customer表的Customer數據項的OnAfterGetRecord觸發器中。

IF Customer.Name[1] = 'A' THEN BEGIN 
    Customer.Name[1] := 'B'; 
    Customer.MODIFY; 
END 

上面的代碼改變任何客戶的名稱的第一個字符包括在與上殼體「A」爲大寫「B」開始的報告。

只有這個功能和沒有打印輸出的完整報告可以從pastebin中找到: Simple Dynamics Nav Report Sample

您可以將粘貼的全部內容複製到文本文件中,並將其作爲文本導入到Nav中。

當心,但是,這樣做將取代以前的任何報告,50000這個例子的ID沒有任何額外的警告或提示。導入爲文本的報告需要在Nav中以編譯的形式保存,然後才能運行它。