如何使用Suitescript操作xml?

时间:2019-01-25 11:38:45

标签: xml netsuite suitescript2.0

我对SuiteScript 2.0有问题:

在报价记录中,我有一个按钮来创建SOLICITACAO DE OF(制造请求),并且此文档有其自己的编号,与报价编号不同,我当时正在考虑使用xml来保存编号,并且每次我需要生成一个新文档时,我都会生成一个新编号,因此我将在用户事件脚本中运行以下代码:

function getOfNumber(){
  var xmlFileContents = file.load({id:1474}).getContents();
  var xmlDocument = xml.Parser.fromString({text:xmlFileContents});
  var solicitacaoOfNode = xml.XPath.select({
    node : xmlDocument,
    xpath : '//SOLICITACAO_OF'
  });
  var currentOfNumber = solicitacaoOfNode[0].firstChild.nextSibling.textContent;
  log.debug({title:"Xml Content",details:currentOfNumber});
}

运行此代码时,它将返回给我当前的编号,直到将其用作我在另一个函数中创建的文档的文档编号。直到这里还可以,但是现在,我需要在此数字上加1并将其保存在xml中,以便下次此函数在另一条记录中运行时。

但是我不知道如何编辑该xml,有人可以帮我吗?我在查看模块上的帮助中心时,发现了很多N / xml函数,我不知道该如何使用。

这是我的xml文件:

<?xml version="1.0"?>
<SOLICITACAO_OF>
    <Current_number>8866</Current_number>
</SOLICITACAO_OF>

2 个答案:

答案 0 :(得分:1)

我不确定是否有办法更新文件柜上的现有文件,我将遵循的方法是:

  1. 定义一个特定的文件夹来存储此xml文件。为此,请创建一个参数。
  2. 从此文件夹加载文件(单个)。
  3. 按照您当前的逻辑getOfNumber()
  4. 您的xml内容非常简单,您可以使用新的Current_number轻松地再次将其生成为字符串。

    currentOfNumber = parseInt(currentOfNumber)++;
    var xmlString = '<?xml version="1.0"?>';
    xmlString += '<SOLICITACAO_OF>';
    xmlString += '<Current_number>'+ currentOfNumber+'</Current_number>';
    xmlString += '</SOLICITACAO_OF>';
    
  

  1. 然后创建一个从文件柜中删除当前xml文件的函数
  2. 最后以xmlString作为内容创建新的xml文件。

由于新的xml文件ID将动态(删除/创建),因此文件夹id参数将很容易知道要加载哪个文件。

希望这对您有意义。祝好运!

答案 1 :(得分:0)

听起来您只是想为序列号提供一致的来源。 xml方法似乎有些矫kill过正。

您可以轻松地加载一个文本文件,提取数字并重写该文件。 (请参阅帮助中的N /文件)

但是,您也可以定义具有整数字段的自定义记录。您将读取整数值并记录下来,然后写回更新的值。相当简单,性能更好。