0

私は 4 週間以来、MS CRM 2011 を使用しています。既存の見積もりを新しい見積もりにコピーする必要があります。これを行う最良の方法はどれですか?Javascript または C# aspx ホームページを使用していますか?

これを行う方法の例を教えてもらえますか?

ありがとうございます!

トーマス

4

1 に答える 1

0

それを行うにはいくつかの方法があります。これが2つです。

URLの初期化

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. クローンを作成するアイテムのフォームを開いている場合にのみ、実際に機能します。
  2. 一度に1つのアイテムのみが機能します。
  3. URLには制限があり、非常に大きなエンティティ/フィールドの場合、すべてのものを複製できるわけではありません。

ワークフロー/ダイアログ

多数のアイテムを複製できるようにする場合、これを行うための非常に迅速な方法は、複製するエンティティを対象とするワークフローまたはダイアログを作成することです。ワークフローで、対象となるタイプの新しいアイテムを作成します。新しく作成されたアイテムのプロパティは、要件に応じて設定できます。デフォルトで静的な値にするか、複製されたアイテムの値を入力するか、ワークフローで許可されているその他の値を入力します。主な欠点の1つは、フォームをユーザーに提示できないことです。

于 2013-01-21T18:44:15.500 に答える