2017-08-25 166 views
-2

因此,我正在尝试为动态CRM 2016中的功能区按钮编写javascript代码,该代码将从活动潜在客户窗口中可以看到的潜在客户列表中获取电话号码。Dynamics CRM 2016 Javascript for eachach不支持

然而,当我尝试运行它,我得到一个错误,告诉我

enter image description here

我踏入我的代码(我调试),我看到这个错误

enter image description here

这是我正在使用的代码。

function updateSelected(SelectedControlSelectedItemIds, SelectedEntityTypeName) { 
      // this should iterate through the list 
      SelectedControlSelectedItemIds.forEach(
      function (selected, index) { 
       //this should get the id and name of the selected lead 
       getPhoneNumber(selected, SelectedEntityTypeName); 
      }); 

    } 
    //I should have the lead ID and Name here, but it is returning null 
    function getPhoneNumber(id, entityName) { 
     var query = "telephone1"; 
     Sdk.WebApi.retrieveRecord(id, entityName, query, "", 
     function (result) { 
      var telephone1 = result.telephone1; 
      // I'm trying to capture the number and display it via alert. 
      alert(telephone1); 
     }, 
     function (error) { 
      alert(error); 
     }) 
    } 

任何帮助表示赞赏。

+0

您确定没有在Ribbon Workbench中混淆参数吗?我认为你只需选择实体名称作为第一个参数,选择ID作为第二个参数。应该很容易调试 - SelectedControlSelectedItemIds是什么类型? –

+0

我相信SelectedControlSelectedItemIds是一个字符串。 –

+0

如果它是一个字符串,那么你必须已经混淆了你的参数 –

回答

0

你有什么是一个JavaScript错误。在js中,你只能在数组上使用forEach。 SelectedControlSelectedItemIds是一个不是数组的对象。

要循环一个对象,可以执行以下操作。

for (var key in SelectedControlSelectedItemIds){ 
 
    if(SelectedControlSelectedItemIds.hasOwnProperty(key)){ 
 
     getPhoneNumber(SelectedControlSelectedItemIds[key], SelectedEntityTypeName) 
 
    } 
 
}

0

好了,所以我想它了。我有帮助,所以我拒绝充分信任。首先,我不得不下载SDK.WEBAPI。

然后我必须将webAPI添加到Ribbon Tool Bench中的Javascript Actions中。

然后,我不得不创建一个函数来去除周围的

SelectedControlSelectedItemIds 

括号首先,我不得不使用API​​使用forEach方法,以便为它工作。

这些是对我的代码的修订。

function removeBraces(str) { 
    str = str.replace(/[{}]/g, ""); 
    return str; 
} 


function updateSelected(SelectedControlSelectedItemIds, SelectedEntityTypeName) { 

//alert(SelectedEntityTypeName); 
SelectedControlSelectedItemIds.forEach(
     function (selected, index) { 

     getPhoneNumber(removeBraces(selected), SelectedEntityTypeName); 
    // alert(selected); 
     }); 
} 

function getPhoneNumber(id, entityName) { 
    var query = "telephone1"; 
    SDK.WEBAPI.retrieveRecord(id, entityName, query, "", 
    function (result) { 
    var telephone1 = result.telephone1; 
    formatted = telephone1.replace(/[-)(]/g,''); 
    dialready = "1" + formatted; 
    withcolon = dialready.replace(/(.{1})/g,"$1:") 
    number = telephone1;  


    if (Xrm.Page.context.getUserName() == "Jerry Ryback") { 
        url = "http://111.222.333.444/cgi-bin/api-send_key"; 
       } else if(Xrm.Page.context.getUserName() == "Frank Jane") { 
           url = "http://222.333.444.555/cgi-bin/api-send_key"; 
          } 
        else if(Xrm.Page.context.getUserName() == "Bob Gilfred"){ 
           url = "http://333.444.555.666/cgi-bin/api-send_key"; 
          }   
        else if(Xrm.Page.context.getUserName() == "Cheryl Bradley"){ 
           url = "http://444.555.666.777/cgi-bin/api-send_key"; 
          }    
        else if(Xrm.Page.context.getUserName() == "Bill Dunny"){ 
           url = "http://555.666.777.888/cgi-bin/api-send_key"; 
          } 


if (url != "") { 
        var params = "passcode=admin&keys=" + withcolon + "SEND"; 
        var http = new XMLHttpRequest(); 

        http.open("GET", url + "?" + params, true); 
        http.onreadystatechange = function() { 
         if (http.readyState == 4 && http.status == 200) { 
          alert(http.responseText); 
         } 
        } 
        http.send(null); 
       } 

}, 
    function (error) { 
    // alert(error); 
    }) 


} 

为了详细说明,一旦我成功获取数字,我删除括号,破折号和空格。然后,我在开头添加一个“1”。最后,我在每个数字之间插入冒号。然后,我创建一个HTTP命令并将它发送给正在使用CRM的人的办公室电话。用户eval和HTTP消息是我的代码。我向你们展示了所有这些,因为这是一次很好的学习体验,而这一功能的确增加了功能。

我希望你们中的一些人觉得这很有用。

感谢您的帮助。

相关问题