CRM 2013中的电话呼叫表单或其他活动表单上的自定义按钮“标记为完整和新建”

时间:2015-02-12 09:38:38

标签: button customization ribbon dynamics-crm-2013

有时需要有一个按钮,它会自动完成并创建一个新的电话,其中旧的一些数据被转移到新的,有一个解决方案。也可以在其他表单上实现此行为。

1 个答案:

答案 0 :(得分:1)

  1. http://crmvisualribbonedit.codeplex.com/

  2. 下载适用于CRM 2011/2013的可视功能区编辑器
  3. 创建电话功能区脚本,将在稍后步骤中创建的按钮中使用。

  4. WebResource Script

    1. 定义上一步中创建的脚本的以下来源。脚本标记为完成了电话呼叫并打开了一个新的电话 - 关于和描述字段通过URL发送。因此,如果网址超过2000个字符,则必须缩短网址,否则链接不起作用。
    2. function SaveAsCompleteAndNew() {
          // Attempt to save Activity and Mark it as Complete
          SaveAsCompleted();
      
          // If the form is not valid
          if (!Xrm.Page.data.getIsValid())
              return;
      
          var url = "/main.aspx?etn=phonecall&pagetype=entityrecord&extraqs=";
      
          var regardingString = "";
          var regardingValue = Xrm.Page.getAttribute("regardingobjectid").getValue();
          if (regardingValue != null) {
              regardingString += "&regarding_id=" + regardingValue[0].id;
              regardingString += "&regarding_name=" + regardingValue[0].name;
              regardingString += "&regarding_type=" + regardingValue[0].entityType;
              regardingString = encodeURIComponent(regardingString);
          }
          var descriptionValue = Xrm.Page.data.entity.attributes.get("description").getValue();
          var descriptionString = ((descriptionValue != null) ? encodeURIComponent("description=" + descriptionValue) : "");
      
          // The url length is limited to about 2k chars, otherwise the link cannot be opened. Therefore the length has to be limited.
          var maxDescriptionLength = 1970 - (url.length + regardingString.length);
      
          if (descriptionString.length > maxDescriptionLength) {
              var shortenedText = descriptionString.substr(0, maxDescriptionLength - 25);
      
              // Patt1 checks if it ends with e.g. %1 and patt2 with %. These are not allowed because they have been reduced by 
              // substr. Correct format is three chars like %20 for white space. If there are not in correct format, url does not work
              var patt1 = new RegExp("%\\d$");
              var patt2 = new RegExp("%$");
      
              if (patt1.test(shortenedText))
                  shortenedText = shortenedText.substr(0, shortenedText.length - 3);
              else if (patt2.test(shortenedText))
                  shortenedText = shortenedText.substr(0, shortenedText.length - 2);
      
              descriptionString = shortenedText + encodeURIComponent("\n...shortened...");
          }
      
          var extraqsEncoded = descriptionString + regardingString;
      
          window.open(url + extraqsEncoded);
      }
      
      1. 运行 CRM 2011/2013的可视功能区编辑器,连接到CRM实例,选择“电话呼叫”实体,然后通过“新建”按钮功能添加一个新按钮“完成并新建”。在详细信息标签上定义以下设置:
      2. Details Tab

        注意:如您所见,还定义了图标。将这些图标作为Web资源加载到CRM。

        1. 选择操作标签,然后在“完成并按钮”的点击命令中定义应执行的操作。作为函数名称,使用与步骤3中定义的名称相同的名称。库应该是在步骤3中创建的脚本的路径。
        2. Action Tab

          1. 您还可以定义显示规则 - 在我们的情况下,我们只向有权写入当前电话条目的用户显示按钮,以及电话是否在打开状态(statuscode = 1)。
          2. Display Rules Tab

            1. 保存适用于CRM 2011/2013的可视功能区编辑器中的所有更改并发布它们。另外,不要忘记在CRM自定义中发布更改,否则添加的webresources不可用。