0

それぞれ 1 つのフォームを持つ 4 ~ 5 個のカスタム エンティティがあります。たとえば、最初のエンティティ「予約画面」には 1 つのフォームがあり、入力後、ユーザーは次のエンティティに移動し、そのフォームに入力し、次のフォームに入力します。

最初の予約画面で割り当てられる予約番号に基づいてアップロードされる前に入力されたフォームに基づいて、進行中のフォームにいくつかの情報を取得する必要があります。

たとえば、予約画面フォームには次のものがあります。

名、姓、予約番号 (一意の ID) およびその他の情報...次のフォームで一意の ID を入力し、最初のフォームから名前フィールドまたはその他の情報を自動入力するオプションが必要です。

ワークフローまたは Java スクリプトでこれを行うことができますか? ワークフローは非同期であるため、Java スクリプトを使用したいと思います。

これどうやってするの?

上記のライブラリといくつかの検索を使用して、これを思いつきました

function retrieveRecord(id, odataSetName, successCallback, errorCallback) {

   var context = Xrm.Page.context;

   var serverUrl = context.getServerUrl();

   var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";



   //Asynchronous AJAX function to Retrieve a CRM record using OData

   $.ajax({

   type: "GET",

   contentType: "application/json; charset=utf-8",

   datatype: "json",

   url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",

   beforeSend: function (XMLHttpRequest) {

       //Specifying this header ensures that the results will be returned as JSON.            

       XMLHttpRequest.setRequestHeader("Accept", "application/json");

   },

   success: function (data, textStatus, XmlHttpRequest) {

       if (successCallback) {

           successCallback(data.d, textStatus, XmlHttpRequest);

       }

   },

   error: function (XmlHttpRequest, textStatus, errorThrown) {

       if (errorCallback)

           errorCallback(XmlHttpRequest, textStatus, errorThrown);

       else

           errorHandler(XmlHttpRequest, textStatus, errorThrown);

   }

});

}

しかし、これは取得呼び出しを設定する唯一の方法ですよね?

json2jquery 1.4.1.minライブラリを追加しました。

これで、入力したいフォームの ONLOAD イベントにこれを追加しました。フォームに予約番号を追加するときに (これは、テキスト フィールドの ON CHANGE イベントになると思います)、メイン フォーム、つまり予約画面から名、姓、ミドル ネーム、SSN 番号を取得する必要があります。 ..

どうすればいいですか?

私の最終的なコードですが、フォームフィールドに値を設定していません function getContactDetails() { var lookUpObjectValue = Xrm.Page.getAttribute("inmate_lookupbookingscree").getValue(); if ((lookUpObjectValue != null)) { var lookuptextvalue = lookUpObjectValue[0].name;

    var lookupid = lookUpObjectValue[0].id;
    //alert(lookupid);


var serverUrl = Xrm.Page.context.getServerUrl();

//The XRM OData end-point
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";


//var odataSetName = "ContactSet";

var odataSelect = serverUrl + ODATA_ENDPOINT + "/" + "(guid'" + lookupid + "')";

//alert(odataSelect);

$.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: odataSelect,
    beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
    success: function (data, textStatus, XmlHttpRequest) {

         var result_contact= data.d;

        //alert(result_contact.AccountNumber);
                    //replace the fields with the fields on your entity
                    Xrm.Page.getAttribute("inmate_firstname").setValue(result_contact.inmate_firstname);
                    Xrm.Page.getAttribute("inmate_lastname").setValue(result_contact.inmate_lastname);



    },
    error: function (XmlHttpRequest, textStatus, errorThrown) { alert('OData Select Failed: ' + odataSelect); }
});

}

}

4

3 に答える 3

1

これらの形(実体)の間には関係があると思います。その場合、最初の画面から 2 番目の画面に値を取得できます。カスタマイズ | システムをカスタマイズし、エンティティを選択し、関係を選択し、タイプ (ドロップダウンリスト) でマッピング可能を選択し、関連エンティティを選択して、最後にマッピングを選択します。ここで、ソース フィールドとターゲット フィールドの間のマッピングを作成できます。

于 2013-08-02T21:04:58.567 に答える
0

CRMは実際にはフォーム間で流暢に機能しないため、あなたが何をしているのかを再考してみます.

代わりに、メインの「予約エンティティ」を作成し、連絡先などにリンクします (したがって、姓と名を入力する必要がある場合は、連絡先検索をクリックして「新規」を選択します)、他のフォームに関連する 1 つの基本フォームを作成します。 .

また、CRM 2013 (Orion) にもプロセス関連のフォームがあり、有益である可能性があるため調査します。

フォーム間でデータを渡したい場合は、フォーム間の関係が必要になるため、javascript を使用します。このような良いサンプルが山ほどあります。 http://crmscape.blogspot.com.au/2011/03/crm-2011-odata-json-and-crm-forms.html

于 2013-08-04T23:29:32.757 に答える