Netsuite では、Sales Order レコード タイプに「shipaddresslist」というフィールドが含まれています。このフィールドには、選択した顧客住所に関連付けられた顧客住所内部 ID が含まれています。
残念ながら、「 shipaddresslist」の値を取得する Sales Orders の検索列がないため、回避策を見つける必要がありました。
SuiteScript を使用して、検索結果をループし、販売注文 ID を record.Load() 関数に渡し、読み込まれたレコードで record.getValue() を呼び出すことで、このフィールドの値を取得できました。下に示された
探す:
var salesorderSearchObj = search.create({
type: "salesorder",
filters:
[
["type","anyof","SalesOrd"],
"AND",
["item.isfulfillable","is","T"],
"AND",
["status","anyof","SalesOrd:B","SalesOrd:E","SalesOrd:D"],
"AND",
["quantitycommitted","greaterthanorequalto","1"],
"AND",
["location","anyof","1","3"],
"AND",
["mainline","is","F"],
"AND",
["item.type","anyof","InvtPart"]
],
columns:
[
search.createColumn({
name: "transactionnumber",
sort: search.Sort.ASC,
label: "Transaction Number"
}),
search.createColumn({name: "entity", label: "Name"}),
search.createColumn({
name: "custcol8",
sort: search.Sort.ASC,
label: "JANコード"
}),
search.createColumn({name: "quantityuom", label: "Quantity in Transaction Units"}),
search.createColumn({name: "statusref", label: "Status"}),
search.createColumn({
name: "quantityonhand",
join: "item",
label: "On Hand"
}),
search.createColumn({
name: "isfulfillable",
join: "item",
label: "Can be Fulfilled"
}),
search.createColumn({name: "department", label: "Department"}),
search.createColumn({name: "otherrefnum", label: "PO/Cheque Number"}),
]
});
ループとレコードの読み込み:
var matches = [];
salesorderSearchObj.run().each(function(result){
var objRecord = record.load({
type: record.Type.SALES_ORDER,
id: result.id,
isDynamic: true,
});
var push = resultToObject(result);
push.addressid = objRecord.getValue({fieldId:'shipaddresslist'});
log.debug("Result:",push);
matches.push(push);
return true;
});
これはうまく機能します...検索で約 1000 件の販売注文を返しているという事実を除いて、検索を完了して結果のリスト全体を構築する前に、record.Load() が私のガバナンス ユニットを食べ尽くすことを意味します。
要するに、検索オブジェクトから直接 Sales Order レコードから「 shipaddresslist 」の値を返す方法はありますか? それとも、レコード オブジェクト全体をロードすることなく、そのフィールドを動的に取得する方法はありますか?
どんな助けでも大歓迎です!