【问题标题】:How to import data into CRM Dynamics 2013 when user clicks a ribbon button用户单击功能区按钮时如何将数据导入 CRM Dynamics 2013
【发布时间】:2015-11-17 08:42:55
【问题描述】:

我有一个场景,我需要将一些数据从 excel 电子表格导入到 CRM Dynamics 中,用户将单击上传功能区按钮,然后数据必须导入有问题,我知道 CRM 中的数据导入,那就是我想要构建什么,我的问题是如何构建它以便功能区触发导入,我是否构建一个 WCF 服务来执行导入,然后在功能区中的 JavaScript 上调用它,这可能吗?还是作为 Windows 服务?请协助提供更好的方法。是否可以使用 JavaScript 或 Windows 服务从 CRM 功能区按钮触发 WCF 服务。

【问题讨论】:

  • 现有数据导入有什么问题? (即为什么要重新设计它?)您单击该按钮,它会打开一个向导,该向导会触发导入过程。你想摆脱向导吗?
  • 嗨约瑟夫,我想自定义构建它的原因是在导入数据时我需要对诸如电子邮件地址等字段的数据执行数据验证,除非你说它可能使用向导执行验证。如果是你,我该如何存档?
  • 您可以通过多种方式执行验证,具体取决于验证类型。您可以通过设置规则进行重复检测 - 然后标记(在向导中)以不允许重复。您还可以在创建正在导入的记录时编写插件。您可以在插件中编写您想要的任何验证,然后您可以选择是阻止该特定记录被导入还是允许它(将插件注册为同步,然后如果您想阻止创建记录则抛出 InvalidPluginExecutionException )

标签: javascript wcf windows-services dynamics-crm-2013


【解决方案1】:

抱歉,我的回答是假的,但这是我的第一个 SO :)。 我最近完成了相同的解决方案。我通过使用ODS parser and writer 解析Excel 数据来做到这一点,然后我使用XRMServiceTolkit 更新记录。它完全是客户端解决方案。您不需要构建任何 WCF 服务或其他东西。

这是我的示例:

  1. 将 Excel 文件传递​​到对话框中;

  2. 在您传递 Excel 文件后,您需要将其数据转换为 BinaryString。对于跨浏览器支持(因此 readAsBinaryString 被贬低):

    function toBinaryString(buffer) {
        var binary = '';
        var bytes = new Uint8Array(buffer);
        var length = bytes.byteLength;
        for (var i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
        return binary;
     }
    
  3. 和解析器调用函数(使用ODS解析器):

    function handleFile(inputFile) {
        var files = inputFile.files;
        var i, f;
        for (i = 0, f = files[i]; i != files.length; ++i) {
           var reader = new FileReader();
           var name = f.name;
           reader.onload = function (e) {
               var resultLog = "";
               var data = toBinaryString(e.target.result);
               var workbook = XLSX.read(data, { type: 'binary' });
               if (workbook.Sheets.hasOwnProperty("List")) {
                   var str = workbook.Sheets["List"];
                   var rowsCount = parseInt(str["!ref"].substring(str["!ref"].indexOf(":") + 2));
                   for (var i = 2; i <= rowsCount; i++) {
                       var rowNum = i;
                       var aoName = str.hasOwnProperty("A" + i.toString()) ? str["A" + i.toString()].v : "-";
                       var aoOp = str.hasOwnProperty("B" + i.toString()) ? str["B" + i.toString()].v : "-";
                       var aoSig = str.hasOwnProperty("C" + i.toString()) ? str["C" + i.toString()].v : "-";
                       var aoStatus = str.hasOwnProperty("D" + i.toString()) ? str["D" + i.toString()].v : "-";
                       var aoComment = str.hasOwnProperty("E" + i.toString()) ? str["E" + i.toString()].v : "-";
                       var validateResult = valdateData(rowNum, aoName, aoOp, aoSig, aoStatus, aoComment);
                       resultLog += validateResult ? validateResult : submitRecord(rowNum, aoName, aoOp, aoSig, aoStatus, aoComment);
            }
        }
    };
    reader.readAsArrayBuffer(f);
    

    } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多