MS CRM 2011复制报价

时间:2013-01-21 12:04:51

标签: dynamics-crm-2011

我将在4周后使用MS CRM 2011。我必须将现有的引用复制到新的引用中。 哪种方式最好的方法呢?使用Javascript或C#aspx主页?

有些人能举例说明如何做到这一点吗?

先谢谢!

托马斯

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。这是两个。

网址初始化

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初始化方法。我也可以看到这种技术的优势。对于这种方法,我也建议Gareth Tucker's blog entry描述如何做到这一点。

我使用了Gareth帖子的几个元素,但是我把我的结尾剧本分解成了一些更紧凑的东西。实质上,您使用javascript来提取特定字段的值,并将它们作为查询字符串参数排列到特殊格式的CRM表单URL中。此URL解包查询字符串参数,并以新形式为您传递的值分配相应的字段。 当您打开一个项目并且想要克隆它并让新表单保持打开以供用户编辑时,这非常有用。

我最终调用了这个脚本,该脚本是作为Web资源添加的,来自Contact表单功能区。 Gareth也很好地解释了如何做到这一点。

// 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. 一次只能处理一项。
  3. 网址有限制,对于非常大的实体/字段,并非所有内容都可以克隆。
  4. 工作流程/对话框

    如果您希望能够克隆许多项目,那么快速执行此操作的方法是创建一个针对要克隆的实体的工作流程或对话框。在工作流程中,创建目标类型的新项目。新创建的项目的属性可以设置为您的要求。将它们默认为静态值,使用克隆项中的值或工作流允许的任何其他值填充它们。一个主要缺点是向用户呈现表单将不可用。