0

現在、JSを実行するCRMのバージョンを決定する方法は2つあります。アドレスは似ていますが、オンラインかオンプレミスかによって異なります。私はそれらを統合しようとしましたが、以下のコードが示すように、それはまだ変数に依存しています。より優れたソリューション(組織データ用のサービスへの適切なURLを選択するソリューション)は何でしょうか?

var isOnLine = true;
var organizationName = Xrm.Page.context.getOrgUniqueName();
var organizationUrl 
  = "http" + (isOnLine ? "s" : "") + "://" 
  + parent.window.location.host 
  + (isOnLine ? "" : "/" + organizationName)
  + "/XRMServices/2011/OrganizationData.svc";

何よりも、何かを呼び出してサービスのURLを取得する方法が欲しいです(ただし、何がわかりません)。それが不可能な場合は、現在実行されているスクリプトがオンラインインストールとオンプレミスインストールのどちらで展開されているかを検出する方法を提案したいと思います。

メソッド(使用可能な場合)がバージョンとは無関係に機能すること(または、少なくとも、現在実行されているバージョンがifステートメントを使用してチェックすること)も重要です。

4

2 に答える 2

1

このサンプルをご覧になることをお勧めします:サンプル:JavaScriptでRESTエンドポイントを使用して作成、取得、更新、削除します

特に:

sample_ / Scripts /SDK.REST.jsWebリソース用のRESTEndpoint を使用して非同期データ操作を簡素化する再利用可能な汎用ライブラリ。

特に、このようにREST OrganizationDataエンドポイントを効果的に構築する最初のいくつかの関数(ここではいくつかの手順を省略しているので、サンプルコードを確認してください)。

Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
于 2012-12-11T08:42:09.880 に答える
1
  1. 私はparent.window.location.hostを使用しません(サポートされているかどうかさえわかりません)。
  2. オンラインバージョンかオンプレミスかを無視して、 organizationNameを取得します(不必要に)。
  3. オンプレミスがセキュリティで保護されたHTTPに設定されている場合(または他のフラグが必要な場合)、呼び出しは失敗します。
  4. 私の提案は、CRM 2011に焦点を当てることです(古いバージョン4はRESTではなくSOAPを使用しています)。
  5. 実際のOrganizationDataサービスでは、以下の関数を使用できます(または行を埋め込むだけです)。
function getOrganizationDataService(){
  return Xrm.Page.context.getServerUrl() 
    + "/XRMServices/2011/OrganizationData.svc";
}
于 2012-12-11T11:42:00.347 に答える