0

私は現在、CRM 2011を使用しながら学習していますが、これは役立つ例になると思いました。javascript関数では、すべてのサブジェクトエンティティレコードを取得してクライアントにキャッシュする必要があります。また、それらを階層内にキャッシュする必要があります。これを行う最善の方法は、各サブジェクトレコードをそのIDと親IDとともに返すことです。これにより、JavaScriptでクライアント側の構造を構築できます。

CRMの経験がある人は、このクエリをどのようにコーディングする必要があるかについて何か提案がありますか?データの処理は問題ありませんが、必要な結果を返す方法がわかりません。

ありがとう

4

2 に答える 2

2

ODataサービスを使用することが、クライアント側のjavascriptで必要な情報を返すための最良の方法であることがわかりました:CRM 2011、OData入門

于 2012-10-03T13:08:54.683 に答える
1

あなたの答えはおそらくうまくいくでしょう、しかしtbhは私にはあまりにも多くのクリックがありました。

これが私が最終的にそれをした方法です。cacheSubjectsは主な機能です。

var sgc_subjectCache = [];
var sgc_subjectCacheCount = 0;

function cacheSubjectsCallback(data) {
    // update subjects
    // loop through retrieved subjects and add to cache
    for( i=0; i < data.length; i++ )
    {
        var subject = data[i];
        subject.Root = subject.Title;
        // var subjectid = subject.SubjectId;
        sgc_subjectCache.push( subject );
        sgc_subjectCacheCount += 1;
    }
}    

function cacheSubjectsComplete() {
    // now update title with ancestors
    var done = false;
    while(done==false)
    {
        done = true;
        // outer loop
        var len = sgc_subjectCache.length;
        for( var i=0; i < len-1; i++ )
        {
            subject = sgc_subjectCache[ i ];
            // inner loop
            for( var j=0; j < len-1; j++ )
            {
                subject2 = sgc_subjectCache[ j ];
                if( subject.ParentSubject.Id === subject2.SubjectId )
                {
                    // found the parent
                    var newTitle = subject2.Title + ' : ' + subject.Title;
                    sgc_subjectCache[ i ].Title = newTitle;
                    sgc_subjectCache[ i ].Root = subject2.Root;
                    sgc_subjectCache[ i ].ParentSubject.Id = subject2.ParentSubject.Id;
                    done = false; // more to do
                }
            }
        }
    }

}

function cacheSubjects() {
    sgc_subjectCache = [];
    var options = "$select=Title,SubjectId,ParentSubject";
    SDK.REST.retrieveMultipleRecords("Subject", options, cacheSubjectsCallback, function(error) {
        alert( error );
    }, cacheSubjectsComplete);
}
于 2012-10-08T11:33:48.273 に答える