私はNetSuiteとSuiteTalkで1年未満しか作業していません。保存された検索を活用する基本的な検索と高度な検索の例を見つけましたが、結果セットの基準と選択された列を使用して高度な検索を最初から実行する方法の例が見つかりませんでした。だから私は例を求めている。SuiteTalk詳細検索の例
0
A
答えて
1
NetSuiteからダウンロード可能なNSClientERPプロジェクトで提供されているサンプルをレビューしました。ここに簡単な例があります。
service.searchPreferences = new SearchPreferences();
service.searchPreferences.bodyFieldsOnly = true;
service.searchPreferences.returnSearchColumns = true;
TransactionSearchAdvanced customSearch = new TransactionSearchAdvanced()
{
columns = new TransactionSearchRow()
{
basic = new TransactionSearchRowBasic()
{
dateCreated = new SearchColumnDateField[] { new SearchColumnDateField() }
, tranDate = new SearchColumnDateField[] { new SearchColumnDateField() }
, type = new SearchColumnEnumSelectField[] { new SearchColumnEnumSelectField() }
, tranId = new SearchColumnStringField[] { new SearchColumnStringField() }
, internalId = new SearchColumnSelectField[] { new SearchColumnSelectField() }
, entity = new SearchColumnSelectField[] { new SearchColumnSelectField() }
, item = new SearchColumnSelectField[] { new SearchColumnSelectField() }
, lastModifiedDate = new SearchColumnDateField[] { new SearchColumnDateField() }
}
, itemJoin = new ItemSearchRowBasic()
{
itemId = new SearchColumnStringField[] { new SearchColumnStringField() }
}
}
,
criteria = new TransactionSearch()
{
basic = new TransactionSearchBasic()
{
type = new SearchEnumMultiSelectField()
{
@operator = SearchEnumMultiSelectFieldOperator.anyOf
, operatorSpecified = true
, searchValue = new string[] {
"_salesOrder"
}
}
, lastModifiedDate = new SearchDateField()
{
@operator = SearchDateFieldOperator.onOrAfter
, operatorSpecified = true
, searchValue = DateTime.Now.AddDays(-3)
, searchValueSpecified = true
}
}
}
};
Console.WriteLine("Querying NetSuite");
SearchResult searchResult = service.search(customSearch);
Console.WriteLine("Query Results: " + searchResult.totalRecords.ToString());
int total = searchResult.totalRecords;
int updated = 0;
bool searchMore = false;
Console.WriteLine("\nThe search() operation for transaction was run successfully.");
Console.WriteLine("\n Total Records = " + searchResult.totalRecords);
Console.WriteLine(" Total Pages = " + searchResult.totalPages);
Console.WriteLine(" Page Size = " + searchResult.pageSize);
Console.WriteLine(" Current Page Index = " + searchResult.pageIndex);
Console.WriteLine("\n\nHit Enter to list results");
Console.ReadLine();
SearchRow[] records = searchResult.searchRowList;
if (records != null)
{
for (int i = 0, j = (searchResult.pageIndex - 1) * searchResult.pageSize; i < records.Length; i++, j++)
{
TransactionSearchRow transactionRow = (TransactionSearchRow) records[i];
TransactionSearchRowBasic transactionRowBasic = transactionRow.basic;
ItemSearchRowBasic itemRowBasic = transactionRow.itemJoin;
Console.WriteLine(
"\n Transaction Return Columns Row[" + j + "]: " +
"\n internalId=" + transactionRowBasic.internalId[0].searchValue.internalId +
"\n tranId=" + transactionRowBasic.tranId[0].searchValue +
"\n type=" + transactionRowBasic.type[0].searchValue +
(transactionRowBasic.entity == null ? "" : ("\n customer internalID=" + transactionRowBasic.entity[0].searchValue.internalId)) +
(transactionRowBasic.item == null ? "" : ("\n item=" + transactionRowBasic.item[0].searchValue.internalId)) +
(itemRowBasic == null ? "" : ("\n item.name=" + itemRowBasic.itemId[0].searchValue)) +
(transactionRowBasic.dateCreated == null ? "" : ("\n createdDate=" + transactionRowBasic.dateCreated[0].searchValue.ToString()) +
(transactionRowBasic.tranDate == null ? "" : ("\n tranDate=" + transactionRowBasic.tranDate[0].searchValue.ToString())) +
(transactionRowBasic.lastModifiedDate == null ? "" : ("\n lastModifiedDate=" + transactionRowBasic.lastModifiedDate[0].searchValue.ToString()))));
}
}
詳細検索を実行する前に、検索の設定を行うことが重要です。 returnSearchFieldsをtrueに設定しなければ、結果は得られません。また、基準と列の両方を指定する必要があります。 NSClientERPの例では、TransactionSearchAdvancedで始まる各オブジェクトはインスタンス化され、構成され、別々のコード行で子オブジェクトにリンクされました。私はこれを非常に難しいと感じました。私は、検索オブジェクト全体をインスタンス化する1行のコードを使用しています。
もう1つ注目すべきは、ItemsテーブルをSales Orderラインアイテムに結合するitemJoinです。 billingTransactionJoinのような他の結合が利用できます。これらの結合を利用することで、アイテムが表示されたときに関連テーブルにアクセスして、アイテムの表示名、在庫情報、追跡番号などを取得できます。
私は、結果をソートする方法を見つけることができませんでした。データセットを埋めて、事実の後にソートする以外に、誰かがより良い方法を持っているなら、私に知らせてください。
0
ここでは実際にページングを正しく行う例を示します。
service.searchPreferences = new SearchPreferences();
service.searchPreferences.bodyFieldsOnly = true;
service.searchPreferences.returnSearchColumns = true;
TransactionSearchAdvanced customSearch = new TransactionSearchAdvanced()
{
columns = new TransactionSearchRow()
{
basic = new TransactionSearchRowBasic()
{
dateCreated = new SearchColumnDateField[] { new SearchColumnDateField() }
,
tranDate = new SearchColumnDateField[] { new SearchColumnDateField() }
,
type = new SearchColumnEnumSelectField[] { new SearchColumnEnumSelectField() }
,
tranId = new SearchColumnStringField[] { new SearchColumnStringField() }
,
internalId = new SearchColumnSelectField[] { new SearchColumnSelectField() }
,
entity = new SearchColumnSelectField[] { new SearchColumnSelectField() }
,
item = new SearchColumnSelectField[] { new SearchColumnSelectField() }
,
lastModifiedDate = new SearchColumnDateField[] { new SearchColumnDateField() }
}
,
itemJoin = new ItemSearchRowBasic()
{
itemId = new SearchColumnStringField[] { new SearchColumnStringField() }
}
}
,
criteria = new TransactionSearch()
{
basic = new TransactionSearchBasic()
{
type = new SearchEnumMultiSelectField()
{
@operator = SearchEnumMultiSelectFieldOperator.anyOf
,
operatorSpecified = true
,
searchValue = new string[] {
"_salesOrder"
}
}
,
lastModifiedDate = new SearchDateField()
{
@operator = SearchDateFieldOperator.onOrAfter
,
operatorSpecified = true
,
searchValue = DateTime.Now.AddDays(-15)
,
searchValueSpecified = true
}
}
}
};
Console.WriteLine("Querying NetSuite");
SearchResult res = service.search(customSearch);
Console.WriteLine("\nThe advanced search completed.");
Console.WriteLine("\n Total Records = " + res.totalRecords);
Console.WriteLine(" Total Pages = " + res.totalPages);
Console.WriteLine(" Page Size = " + res.pageSize);
Console.WriteLine(" Current Page Index = " + res.pageIndex);
Console.WriteLine("\n\nHit Enter to list results");
Console.ReadLine();
while (res.searchRowList.Length > 0)
{
Console.WriteLine($"\n\nProcessing page: {res.pageIndex}");
Console.WriteLine($"Result count: {res.searchRowList.Length}");
Console.WriteLine($"\nHit enter to list page {res.pageIndex} results");
Console.ReadLine();
foreach (TransactionSearchRow transactionRow in res.searchRowList)
{
TransactionSearchRowBasic transactionRowBasic = transactionRow.basic;
ItemSearchRowBasic itemRowBasic = transactionRow.itemJoin;
Console.WriteLine(
"\n tranId=" + transactionRowBasic.tranId[0].searchValue +
(itemRowBasic == null ? "" : ("\n item.name=" + itemRowBasic.itemId[0].searchValue))
);
}
Console.WriteLine("\nQuerying NetSuite again...");
res = service.searchMore(++res.pageIndex);
}
service.logout();
Console.WriteLine("\n\nHit Enter to close this window.");
Console.ReadLine();
関連する問題
- 1. Outlookマクロの詳細検索
- 2. 詳細検索フォームとオートコンプリート
- 3. PHP Codeigniter詳細検索フィルタ
- 4. Laravel詳細検索ガイド
- 5. 詳細検索ボックスに
- 6. PHP Mysqli詳細検索(マルチオプション)
- 7. outlook詳細検索 "urn:schemas:httpmail:datereceived"
- 8. デフォルトログインでのユーザーの詳細の検索
- 9. page_stories_by_story_type&page_consumptions_by_consumption_typeのタイプ詳細を検索
- 10. 検索&修正ユーザーの詳細
- 11. 検索時の詳細ORDER BY
- 12. 検索バーの隣に「詳細検索ボタン」を追加する
- 13. Expression Engine詳細検索 - キーワード検索の問題
- 14. テーブル '詳細表示'検索後にリセット
- 15. 詳細検索を移動する - Magento
- 16. 詳細検索データを追加
- 17. サービスオペレーションの詳細な例外
- 18. 詳細WPF検証
- 19. 詳細がライトボックスにあるASP.NETマスター/詳細ページの例?
- 20. Parse.comの検索方法PHPのユーザーの詳細
- 21. Railsの複数の関連付けの詳細検索
- 22. カサンドラの検索結果の詳細を見る
- 23. Gmailスタイルの詳細検索構文の解析?
- 24. jqgridのフィールドのサイズを増やす詳細検索
- 25. SharePoint2013 - 詳細検索プロパティのカスタムメタデータで値が返されない
- 26. Mysql - 検索結果の詳細を表示
- 27. jqGridグリッドの外側にある詳細検索ボタン
- 28. 検索ディスプレイコントローラのテーブルビューから詳細コントローラをプッシュ
- 29. SQLサーバー:過去3年間を検索お客様の詳細
- 30. 詳細の日付を検索するasp.Net mvc 5