私は 4 週間以来、MS CRM 2011 を使用しています。既存の見積もりを新しい見積もりにコピーする必要があります。これを行う最良の方法はどれですか?Javascript または C# aspx ホームページを使用していますか?
これを行う方法の例を教えてもらえますか?
ありがとうございます!
トーマス
私は 4 週間以来、MS CRM 2011 を使用しています。既存の見積もりを新しい見積もりにコピーする必要があります。これを行う最良の方法はどれですか?Javascript または C# aspx ホームページを使用していますか?
これを行う方法の例を教えてもらえますか?
ありがとうございます!
トーマス
それを行うにはいくつかの方法があります。これが2つです。
http://www.renauddumont.be/en/2011/crm-2011-passing-field-values-to-a-form-using-url-parameters
http://msdn.microsoft.com/en-us/library/gg334436.aspx
http://msdn.microsoft.com/en-us/library/gg334375.aspx
連絡先については、以前にこれを実装しました。私の要件は、URL初期化方法に最適です。見積もりにもこのテクニックの利点がわかります。この方法については、私もその方法を説明しているGarethTuckerのブログエントリをお勧めします。
Garethの投稿のいくつかの要素を使用しましたが、終了スクリプトをもう少しコンパクトなものに分解しました。基本的に、JavaScriptを使用して特定のフィールドの値を取得し、それらをクエリ文字列パラメーターとして特別に形成されたCRMフォームURLに配置します。このURLは、クエリ文字列パラメータを解凍し、渡した値を新しい形式で対応するフィールドに割り当てます。 これは、アイテムを開いていて、そのクローンを作成し、ユーザーが編集できるように新しいフォームを開いたままにしておきたい場合に最適です。
Webリソースとして追加されたこのスクリプトを、お問い合わせフォームのリボンから呼び出すことになりました。ガレスは、これを行う方法もうまく説明しています。
// Register this namespace to avoid collision with other scripts that may
// run within this form
Type.registerNamespace("BF.Contact");
// Create a function that will be called by a ribbon button.
BF.Contact.Clone = function() {
var extRaqs = "";
// ownerid
extRaqs += "&ownerid=" + Xrm.Page.getAttribute("ownerid").getValue()[0].id;
extRaqs += "&owneridname=" + Xrm.Page.getAttribute("ownerid").getValue()[0].name;
extRaqs += "&owneridtype=systemuser";
extRaqs += BF.Contact.Clone.GetValue("address1_line1");
extRaqs += BF.Contact.Clone.GetValue("address1_line2");
extRaqs += BF.Contact.Clone.GetValue("address1_city");
extRaqs += BF.Contact.Clone.GetValue("address1_postalcode");
extRaqs += BF.Contact.Clone.GetValue("mobilephone");
extRaqs += BF.Contact.Clone.GetValue("telephone1");
extRaqs += BF.Contact.Clone.GetValue("telephone2");
extRaqs += BF.Contact.Clone.GetValue("fax");
extRaqs += BF.Contact.Clone.GetValue("emailaddress1");
extRaqs += BF.Contact.Clone.GetValue("address1_county");
extRaqs += "&donotsendmm=1"
var newURL = Xrm.Page.context.getServerUrl() + "/main.aspx?etn=contact&pagetype=entityrecord&extraqs=";
newURL += encodeURIComponent(extRaqs);
window.open(newURL , "_blank", "width=900px,height=600px,resizable=1");
}
BF.Contact.Clone.GetValue = function(attributename) {
var _att = Xrm.Page.getAttribute(attributename);
var _val = "";
if (_att == null || _att.getValue() == null ) {
return "";
}
if (_att.getFormat() == "date") {
_val = _att.getValue().format("MM/dd/yyyy");
} else {
_val = _att.getValue();
}
return "&" + attributename + "=" + _val;
}
いくつかの欠点:
多数のアイテムを複製できるようにする場合、これを行うための非常に迅速な方法は、複製するエンティティを対象とするワークフローまたはダイアログを作成することです。ワークフローで、対象となるタイプの新しいアイテムを作成します。新しく作成されたアイテムのプロパティは、要件に応じて設定できます。デフォルトで静的な値にするか、複製されたアイテムの値を入力するか、ワークフローで許可されているその他の値を入力します。主な欠点の1つは、フォームをユーザーに提示できないことです。