ドキュメントのインポートは、4D View Proで作業する際の一般的なタスクです。しかし、これらのドキュメントにカスタム関数が含まれている場合、印刷や保存のようなアクションを実行する前に、すべての計算がいつ完了したかを判断するのは難しいことです。これを解決するために、4D 20 R9は、インポートコマンドのコールバック式が、すべてのカスタム関数が完全に処理された後にのみ実行されるようにしました。この改善により、インポートされた4D View Proドキュメントを操作する際のコントロールと信頼性が向上しました。
更新されたインポートコマンド
以下のインポートコマンドは、すべてのカスタム関数が応答するまでコールバックが実行されないことを保証します:
例えば、多くのカスタム関数を含む大きなドキュメントをオフスクリーンエリアにロードし、すべての計算が終了するのを待ってからエクスポートする場合、次のようなクラスを設定する必要があります:
property pdfPath : Text
property autoQuit:=False
Class constructor($pdfPath : Text)
This.pdfPath:=$pdfPath
// This function is called on each event for the offscreen area
Function onEvent
Case of
: (FORM Event.code=On VP Ready)
var $largeDocument4VP:="c:\\tmp\\mylargedocument.sjs"
// Exports document in PDF called at the end of the import
var $callback:=Formula(VP EXPORT DOCUMENT(This.area;\
This.pdfPath; {formula: Formula(ACCEPT)}))
// Document import with recalculation of all the formulas
VP IMPORT DOCUMENT(This.area; $largeDocument4VP;\
{formula: $callback; sjsOptions: {fullRecalc: True}})
: (FORM Event.code=On URL Loading Error)
CANCEL
End case
のようにクラスを設定し、それをオフスクリーン領域で呼び出す必要があります:
// Creation of the offscreen parameter object to init the offscreen area
$offScreenParameter:=cs.OffScreenParameterClass.new($pdfPath)
// Creation of the offscreen area
VP Run offscreen area($offScreenParameter)
VPフラッシュ・コマンドの更新
また、非同期計算の終了を待つメカニズムを VP FLUSH COMMAND.インポートと同じように、計算の終了時に呼び出される数式をパラメータとして追加できるようになりました。
例えば、プログラミングによってカスタム関数の呼び出しをいくつか追加し、その計算を待ってドキュメントをエクスポートするような場合です:
// Adds an asynchronous calculation
VP SET FORMULA(VP Cell($area; 1; 2); "my4DFunction(1)")
// Waits for the calculation to finish and exports the document
VP FLUSH COMMANDS("ViewProArea"; Formula(VP EXPORT DOCUMENT("ViewProarea"; "c:\\tmp\\vpflush.xlsx")))
まとめ
このアップデートにより、カスタム関数を使用した4D View Proのインポート処理が簡素化され、すべての計算が完了した場合のみ、ドキュメントの印刷、保存、処理が簡単になりました。