私は使用している一連のスクリプトを相互にやりとりしています。私は、クライアント、ユーザーイベント、スイートレットスクリプトを使用して、ボタンを押すと、ベンダーによってフィルタリングされた項目のリストをポップアップ表示するボタンを作成します。レコードの作成中にベンダー別にアイテムを自動的にフィルタリングする
私は編集中にはうまくいますが、レコードの問題が発生したときに使用するとうまくいきます。作成されるレコードにはベンダーやIDがないため、ベンダーによってアイテムを取得することはできません。私がしようとしているのは、Suiteletに、保存する前に入力したベンダーフィールドから情報を取得させることです。したがって、すべてのアイテムを仕入先別にフィルタリングし、必要なアイテムを一度に追加することができます。これは可能ですか?私は情報が提出される前にそれにアクセスできますか?
下記はクライアントとスイートレットです。ユーザーイベントはスイートレットへの呼び出しなので、簡潔にするため、私はそれを省いた。
クライアントスクリプト
function addItemButtonCallback(data){
nlapiSelectNewLineItem('item');
nlapiSetCurrentLineItemValue('item', 'item', data);
nlapiCommitLineItem('inventoryitem');
}
function addItemButton() {
var id = nlapiGetFieldValue('id');
if (id != "") {
var url = nlapiResolveURL('SUITELET', 'customscript_val', 'customdeploy1') + '&poId='+id;
window.open(url, '_blank', 'width=500,height=500');
}
}
Suitelet
function suitelet(request, response){
if(request.getMethod() == 'GET') {
var form = nlapiCreateForm('Add Item');
form.addSubmitButton('Submit');
var itemfield = form.addField('custpage_val', 'select', 'Item');
var id = request.getParameter('id');
var rec = nlapiLoadRecord('purchaseorder', id);
var vend = rec.getFieldValue('entity');
var search = nlapiSearchRecord(...search parameters...);
for (result in search){
if (search[result].getValue('vendor') == vend){
itemfield.addSelectOption(search[result].id, nlapiLookupField('inventoryitem', search[result].id, 'itemid'));
}
}
response.writePage(form);
} else {
var data = request.getParameter('custpage_item');
response.write('<html><body><script>window.opener.addItemButtonCallback("'+data+'"); window.close();</script></body></html>');
}
}
私はそれをしなかったと信じられません!それは完璧に働いた。すでにダイナミックなので、あまり変更する必要はありませんでした。 'nlapiLookupField'を使ってもすべてが素早く動くが、間違いなくそれを調べるだろう。ありがとう! – VicDid