Как манипулировать XML с помощью suitescript? - PullRequest
0 голосов
/ 25 января 2019

У меня проблема с 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 голосов
/ 25 января 2019

Похоже, вы просто пытаетесь получить последовательный источник порядкового номера.Подход xml выглядит излишним.

Вы можете легко загрузить текстовый файл, извлечь номер и переписать файл.(см. N / file в справке для этого)

Однако вы также можете определить пользовательскую запись, которая имеет целочисленное поле.Вы должны прочитать целочисленное значение, записать его и записать обновленное значение.Довольно просто сделать и имеет лучшую производительность.

0 голосов
/ 25 января 2019

Я не уверен, если есть способ обновить существующий файл в картотеке, я бы использовал следующий подход:

  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. Наконец, создайте новый xml-файл с xmlString в качестве содержимого.

Поскольку новый идентификатор файла XML будет динамически (удалять / создавать), параметр идентификатора папки будет полезен, чтобы узнать, какой файл загрузить.

Надеюсь, это имеет смысл для вас. удачи!

...