私はしばらくこの問題に取り組んできましたが、コミュニティの誰かが解決策を提供してくれることを願っています。
SharePoint ドキュメント ライブラリの [エクスプローラーで開く] ボタンと同じロジックを持つボタンを CRM アカウント フォームに配置する必要があります。ユーザーがこのボタンにアクセスし、必要なアカウントのフォルダーを Windows エクスプローラーで開くには、ユーザーが数回クリックする必要があるため、ロジックが必要です。
- フォームのナビゲーションで [ドキュメント] をクリックして、SP 統合を開きます。
- SP ビューでドキュメントをクリックします
- ライブラリをクリック
- [エクスプローラーで開く] ボタンをクリックします。
CRM は SharePoint と統合されており、フォルダーを Windows エクスプローラーで開くと、次のサンプル リンクが表示されます。
http://{sharepoint}/CRM/7F9F72A1-4591-E011-AC6C-00155D773703/ドキュメント/
GUID 7F9F72A1-4591-E011-AC6C-00155D773703 は CRM のアカウント ID です。
私の調査から、これを実現する JavaScript 関数は 、Sharepoint の sp.js のNavigateHttpFolderであることがわかりました。
この関数と、このリンクWeb フォルダの動作についてから 、次の関数を完成させました。
var httpFolderDiv = document.createElement("SPAN");
function NavigateToFolder() {
document.body.appendChild(httpFolderDiv);
httpFolderDiv.onreadystatechange = NavigateToFolder;
httpFolderDiv.id = "navDiv";
httpFolderDiv.addBehavior("#default#httpFolder");
if (httpFolderDiv.readyState == "complete") {
httpFolderDiv.onreadystatechange = null;
var link = "";
var account = "";
var accountid = "";
var id = Xrm.Page.data.entity.getId().replace("{", "").replace("}", "");
link = "http://{sharepoint}/CRM/" + id + "/Documents/";
try {
httpFolderDiv.navigateFrame(link, "_blank");
} catch (c) {
alert(c.toString());
}
}
}
この関数は、Windows エクスプローラーで SharePoint からフォルダーを開きますが、そのフォルダーのみが以前に SharePoint から直接開かれた場合にのみ制限があります。コードに欠けているロジックは、共有ポイントのようにフォルダーのマッピングを行わないことだと思います。
このフォルダはネットワーク ドライブとして手動でマップできることは承知していますが、Web フォルダを使用して WebDAV サーバーを接続していますが、これはすべてのクライアントで行う必要があるため、うまくいきません。
SPから完全なロジックを取得するか、javascriptからコンソールコマンドを実行して、上記の関数でフォルダーを開く前にフォルダーをマップすることで、これをどのように達成できますか。