2017-02-15 4 views
0

MS Dynamics AX 2012 R2グローバルアドレス帳(GAB)内のすべての重複パーティを見つけて削除/マージする方法はありますか?MS Dynamics AX 2012 R2グローバルアドレス帳内のすべての重複パーティを検索/マージする

GABには「重複をチェック」オプションがありますが、現在選択されている1つのパーティーアイテムに対してのみ機能することがわかりました。しかし、私はすべてのレコード内を検索し、いくつかの基準に対して重複を見つける必要があります。

MS CRMには、組み込みの重複検出とマージメカニズムがあり、Dynamics AXにそのようなものが見つからないのはなぜかと思います...または間違っていますか?

それにもかかわらず、データベースの直接操作の仕組みの他に、他にどのようなオプションがありますか?

答えて

2

何か特別な開発をする必要があります。形式\Forms\DirPartyCheckDuplicateは、1人のパーティー用に設計されています。

バッキングクラス\Classes\DirPartyCheckDuplicateを使用して検索を行い、カスタムフォームを使用して結果を処理できます。

問題は、クラスがDirPartyTableレコードを受け入れ、次にqueryの重複を返すように設計されていることです。

どこでも検索したい場合は、と入力してください。重複しているものを特定すると、何かを一緒にハックすることができます。私は、重複を返す2つのDirPartyTableレコードがあるこの簡単な仕事を書いて、チェックを2回実行して結果を結合して出力しました。

static void Job3(Args _args) 
{ 
    DirPartyTable  dpt = DirPartyTable::findRec(22565431216); 
    DirPartyTable  dpt2 = DirPartyTable::findRec(22565424587); 
    Query    targetQuery; 
    Query    otherQuery; 
    QueryRun   qr; 
    DirPartyTable  dirPartyTable; 

    DirPartyCheckDuplicate partyCheckDuplicate; 

    partyCheckDuplicate = DirPartyCheckDuplicate::construct(); 
    partyCheckDuplicate.parmPartyRecord(dpt); 
    partyCheckDuplicate.parmCheckName(true); 
    partyCheckDuplicate.run(); 
    targetQuery = partyCheckDuplicate.getQuery(); 

    partyCheckDuplicate = DirPartyCheckDuplicate::construct(); 
    partyCheckDuplicate.parmPartyRecord(dpt2); 
    partyCheckDuplicate.parmCheckName(true); 
    partyCheckDuplicate.run(); 
    otherQuery = partyCheckDuplicate.getQuery(); 

    SysQuery::mergeRanges(targetQuery, otherQuery); 

    qr = new QueryRun(targetQuery); 

    while (qr.next()) 
    { 
     dirPartyTable = qr.get(tableNum(DirPartyTable)); 

     info(DirPartyTable.Name); 
    } 
} 
+0

ありがとう、これは素晴らしいアイデアです。しかし、私は識別するだけでなく、重複を削除する(私は私の質問でそれを修正する)したくない。これらのカスタムメイドのジョブでこれは可能ですか?私はこれらについて膨大な研究をしなければならないでしょう。 10000レコードをスキャンし、各レコードの重複をチェックし、10000クエリを結合し、最終的に30%重複レコードの結果を表示するためのパフォーマンス上の問題があると思いますか?どう思いますか?あなたのアプローチはまだ関連していますか、別のものを探すべきですか? – Vladislav

+0

あなたがしたいことは複雑な作業であり、 'DirPartyCheckDuplicate'クラスにあるロジックに基づいてゼロから開発する必要があります。パフォーマンス上の問題があるかもしれませんが、一度の操作である可能性があるため、問題ではありません。また、Dev/Testで最初に行うなど、削除の履歴を確認するための履歴表を作成することもできます。 –

関連する問題