2

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 」の値を返す方法はありますか? それとも、レコード オブジェクト全体をロードすることなく、そのフィールドを動的に取得する方法はありますか?

どんな助けでも大歓迎です!

4

2 に答える 2

0

顧客住所の内部 ID を探している場合は、これを検索列に追加できます。

search.createColumn({
         name: "internalid",
         join: "shippingAddress",
         label: "Internal ID"
      })
于 2018-05-01T12:29:04.937 に答える