2

Dynamics AX 2012 に、HcmWorker テーブルと HcmEmployment テーブル (とりわけ) で構成される AOT クエリがあります。私の問題は、(SSRS ではなく) レポートを作成するとき、またはこのクエリを使用するときに、HcmEmployment で有効な時間状態を持つ従業員のみを取得することです。

現在雇用されていない場合でも、このテーブルにレコードがあるすべての従業員を一度だけ取得したいと考えています。最適な解決策は、HcmEmployment から現在の雇用のレコードを取得することです (存在する場合)。そうでない場合は、開始日が「今」より前の最後のレコードを取得します。ただし、最後の開始日と結合するソリューションを受け入れることができます。

使用するたびにコードを追加する必要のないソリューション (つまり、AOT クエリで解決する) を希望します。

コードからのクエリで validTimeStateDateTimeRange プロパティを設定しようとしましたが、従業員が複数の雇用を持っている場合、重複した行が発生しました。

HcmEmployment データソースを ExistsJoin と firstOnly に設定すると、ビューでは機能しますが、レポートでは機能しません (レコードはまだ重複しています) :( ユーザーが DefaultDimension でフィルタリングできる必要があるため、レポートでこのビューを使用することはオプションではありませんHcm雇用から。

どうすればこの問題を解決できますか?

4

2 に答える 2

4

私は自分の問題を「解決」しました...

ExistsJoin何らかの理由で、レポートはAOT クエリからプロパティ ( ) を正しく継承しませんでした。レポートにクエリを再度ドロップした後、いくつかのコンパイルとクエリinitメソッドの次のコードを実行すると、機能します:)重複レコードはもうありません!

this.query().validTimeStateDateTimeRange(DateTimeUtil::minValue(), 
                                         DateTimeUtil::maxValue());
于 2012-04-25T07:42:51.383 に答える
0

私が見ているように、競合するオプションがあります。

現在雇用されていなくても、このテーブルにレコードがあるすべての従業員を取得したいと考えています。

と:

ユーザーは、HcmEmployment から DefaultDimension でフィルタリングできる必要があります。

ユーザーが雇用をフィルタリングする場合、雇用が選択されていない場合、従業員は印刷されるべきですか?

あなたがおそらく望むもの:

  • フィルタリングしない場合はHcmEmployment、そのデータ ソースを無効にします (プロパティEnabled)。

  • フィルタリングするHcmEmployment場合は、存在する結合を使用します。

どちらの場合も、独立した選択によって maxof(ValidFrom)、maxof(ValidTo) を見つけます。

この回答を見て、コードでクエリ プロパティを編集する方法を確認してください。

または、 へのクエリがある場合とない場合の 2 つのレポートを作成しますHcmEmployment

于 2012-04-24T12:19:20.207 に答える