У меня есть кнопка в записи заказа на поставку, которая выполняет сохраненный поисковый запрос для текущей записи, а затем использует модуль http для отправки этих данных через POST на URL-адрес. Затем этот URL отправляет данные, отправленные обратно, как часть подтверждения успеха. Идея с сохраненным поиском состоит в том, чтобы создать объект javascript, который содержит все данные, которые я хочу получить из заказа на покупку (основной список и подсписок элементов с подзаписями), а затем использовать JSON.stringify
для создания полезной нагрузки JSON для http POST. Я не могу сделать это с currentRecord
, потому что, если вы проверите его, он содержит только внутренний идентификатор. Это также избавило бы меня от необходимости писать много кода, чтобы вручную создать строку JSON из currentRecord
.
К сожалению, я не совсем понимаю, как указывать имена столбцов в динамически создаваемом сохраненном поиске. Иногда мне кажется, что имена столбцов взяты из браузера записей NetSuite, а иногда скрипт выдает ошибку (столбец не найден), если я использую имя столбца из браузера записей NetSuite (например, currencysymbol
).
Я также не уверен, как указать столбцы, которые появляются в подсписках или подзаписи в подсписках. Я пытался использовать item.itemtype
, но это дало мне ошибку в столбце not found. Просто item
завершается успешно, но я не уверен, действительно ли это было успешно, так как трудно декодировать возвращаемый результат после JSON.stringify
(это добавляет много обратных слешей). Использование console.log
(по какой-то причине я ничего не получаю при использовании NetSuite log.audit
) также довольно сложно, хотя похоже, что он возвращает массив из 5 строк. Так что использование item
может быть успешным. Я говорю вроде как, потому что у меня есть 3 строки элементов, и он возвращает 5 строк массива.
Поэтому в основном я хотел бы знать, где можно найти имена столбцов, которые будут использоваться в NetSuite для сохраненного поиска; а также как указать имена столбцов подсписков и имена столбцов подзаписей подсписков в сохраненном поиске.
/**
* @NApiVersion 2.0
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/ui/dialog', 'N/currentRecord', 'N/record', 'N/url', 'N/http', 'N/search'], function (dialog, rec, record, url, http, s) {
function pageInit(context) {
// All client scripts need at least one dummy function.
} // pageInit
function onButtonClick() {
var currentRecord = rec.get();
// Create a saved search dynamically.
var rs = s.create({
type: s.Type.PURCHASE_ORDER,
filters: [
["mainline", s.Operator.IS, "F"], "and",
["internalid", s.Operator.IS, currentRecord.id]
],
columns: [
"internalid",
"currency",
{
name: "item",
sort: s.Sort.ASC // DESC
}
]
});
var myPostDataObj = rs.run().getRange(0, 1000);
console.log(myPostDataObj);
var headers = {
'Content-Type': 'application/json; charset=utf-8',
};
http.post.promise({
url: 'http://httpbin.org:80/post',
body: JSON.stringify(myPostDataObj),
headers: headers
})
.then(function(response){
console.log('SUCCESS: ' + JSON.stringify(response));
})
.catch(function onRejected(reason) {
console.log('ERROR: ' + JSON.stringify(reason));
})
}
return {
pageInit: pageInit,
onButtonClick: onButtonClick
};
}); // Define