You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署NetSuite合并发票PDF脚本时遇类型转换错误求助

NetSuite SuiteScript 1.0 报错:无法将发票编号转换为Integer

错误信息

System UNEXPECTED_ERROR    8/22/2023   5:04 pm -System-    Cannot convert INVH8437 to java.lang.Integer (SYSTEM_LIBS$NSAPI$sys#758); ID: llmso2pi1v9yvv4a21klp

INVH8437为搜索返回的首个发票编号

问题代码

function sendSevaredentEmails(){
    var sResult = new Array();
    sResult = nlapiSearchRecord('transaction','customsearch1899'); //load an existing transaction saved search or create a search
    var xml = "<?xml version=\"1.0\"?>\n<!DOCTYPE pdf PUBLIC \"-//big.faceless.org//report\" \"report-1.1.dtd\">\n";
    xml += "<pdfset>";
    for (var i = 0; sResult != null && i < sResult.length; i++) {
        var sColumns = sResult[i].getAllColumns();
        //generate invoice printout
        var pdfFile = nlapiPrintRecord('TRANSACTION', sResult[i].getValue(sColumns[0]),'PDF');
        //set target folder in file cabinet
        pdfFile.setFolder(483765);
        //Set Available without login to true
        pdfFile.setIsOnline(true);
        //store file in cabinet
        var fileID = nlapiSubmitFile(pdfFile);
        // load the file to get its URL
        var fileURL = nlapiLoadFile(fileID).getURL();
        var pdf_fileURL = nlapiEscapeXML(fileURL);
        xml += "<pdf src='"+ pdf_fileURL +"'/'&gt;";
    }
    xml += "</pdfset>";
    var consolidatedPDF = nlapiXMLToPDF(xml);
    nlapiSendEmail('-5', 'rspector@blackstoneind.com', "Subject", 'Body', null, null, null, consolidatedPDF);
}

问题原因

  • nlapiPrintRecord的第二个参数要求传入交易的内部ID(整数类型),但当前代码中sResult[i].getValue(sColumns[0])获取的是发票编号(字符串类型,如INVH8437),导致类型转换失败。
  • 额外问题:XML拼接时的<pdf>标签闭合错误,写成了'/'&gt;,会导致后续nlapiXMLToPDF生成合并PDF失败。

解决方案

1. 替换内部ID获取方式

直接使用搜索结果对象的getId()方法获取交易内部ID,无需依赖搜索列顺序:

var transactionId = sResult[i].getId();

这个方法返回的是记录的内部ID(整数),完全符合nlapiPrintRecord的参数要求。

2. 修正XML标签错误

将错误的闭合标签'/'&gt;改为正确的</pdf>:

xml += "<pdf src='"+ pdf_fileURL +"'></pdf>";

3. 可选:验证搜索结果字段

如果坚持使用搜索列获取内部ID,需确保已保存搜索customsearch1899中包含「内部ID」字段,且在代码中正确定位该列。

修正后的完整代码

function sendSevaredentEmails(){
    var sResult = nlapiSearchRecord('transaction','customsearch1899'); //load an existing transaction saved search or create a search
    if (!sResult || sResult.length === 0) return; // 空结果直接退出,避免循环报错
    
    var xml = "<?xml version=\"1.0\"?>\n<!DOCTYPE pdf PUBLIC \"-//big.faceless.org//report\" \"report-1.1.dtd\">\n";
    xml += "<pdfset>";
    
    for (var i = 0; i < sResult.length; i++) {
        // 获取交易内部ID(关键修正)
        var transactionId = sResult[i].getId();
        // 生成发票PDF
        var pdfFile = nlapiPrintRecord('TRANSACTION', transactionId, 'PDF');
        
        // 设置文件柜存储参数
        pdfFile.setFolder(483765);
        pdfFile.setIsOnline(true);
        
        // 保存文件并获取URL
        var fileID = nlapiSubmitFile(pdfFile);
        var fileURL = nlapiLoadFile(fileID).getURL();
        var pdf_fileURL = nlapiEscapeXML(fileURL);
        
        // 修正XML标签闭合
        xml += "<pdf src='"+ pdf_fileURL +"'></pdf>";
    }
    
    xml += "</pdfset>";
    var consolidatedPDF = nlapiXMLToPDF(xml);
    nlapiSendEmail('-5', 'rspector@blackstoneind.com', "Consolidated Invoices", 'Please find attached consolidated invoices.', null, null, null, consolidatedPDF);
}

内容的提问来源于stack exchange,提问作者Rob Spector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:48:12