Ich habe erst seit weniger als einem Jahr mit NetSuite und SuiteTalk gearbeitet. Ich habe Beispiele für grundlegende Suchen und erweiterte Suchen gefunden, die gespeicherte Suchanfragen nutzen, aber es fiel mir schwer, Beispiele dafür zu finden, wie man eine erweiterte Suche von Grund auf mit Kriterien und ausgewählten Spalten in der Ergebnismenge durchführt. Ich frage nach Beispielen.SuiteTalk Erweiterte Suche Beispiele
Antwort
Ich habe die im NSClientERP-Projekt bereitgestellten Beispiele überprüft, die von NetSuite heruntergeladen werden können. Hier ist ein vereinfachtes Beispiel.
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()))));
}
}
Es ist wichtig, dass Sie Ihre Sucheinstellungen vor der Durchführung der erweiterten Suche festlegen. Ohne returnSearchFields auf true zu setzen, habe ich keine Ergebnisse erhalten. Außerdem müssen Sie sowohl Kriterien als auch Spalten angeben. Im Beispiel NSClientERP wurde jedes mit TransactionSearchAdvanced beginnende Objekt in separaten Codezeilen instanziiert, konfiguriert und mit untergeordneten Objekten verknüpft. Ich fand das sehr schwer zu folgen. Ich verwende eine Codezeile, die das gesamte Suchobjekt instanziiert.
Eine andere Sache, die Sie beachten sollten, ist itemJoin, die die Items-Tabelle mit einer Verkaufsauftragsposition verbindet. Ihnen stehen weitere Joins zur Verfügung, z. B. billingTransactionJoin. Wenn Sie diese Joins verwenden, können Sie in verknüpfte Tabellen greifen, um beispielsweise den Anzeigenamen, die Inventarinformationen oder die Tracking-Nummern eines Artikels zu erhalten, wenn ein Artikel ausgeliefert wird.
Ich konnte keinen anderen Weg finden, die Ergebnisse zu sortieren, als einen Datensatz zu füllen und danach zu sortieren. Wenn jemand einen besseren Weg hat, lass es mich wissen.
Hier ist ein Beispiel, das das Paging tatsächlich korrekt durchführt.
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. Erweiterte ASP Routing Tutorials und Beispiele
- 2. Erweiterte Suche mit PHP
- 3. Erweiterte Suche Formular PHP
- 4. Outlook Makro Erweiterte Suche
- 5. Erweiterte Suche in Vim
- 6. Erweiterte Suche vb.net
- 7. Suche erweiterte Symbolleiste
- 8. Erweiterte binäre Suche
- 9. Erweiterte Suche PHP, MySQL
- 10. Erweiterte Suche verschieben - Magento
- 11. Sqlite erweiterte Suche
- 12. Erweiterte Suche in eckig js
- 13. Laravel 4 Erweiterte Suche Abfrage
- 14. Erweiterte Suchoption Programmatisch Sharepoint Suche
- 15. Erweiterte Site-Suche mit Google
- 16. Erweiterte Suche mit Filter - Angularjs
- 17. Deezer Erweiterte Suche funktioniert nicht
- 18. Erweiterte Suche Architektur Beratung neeeded
- 19. Suitetalk-Journaleintrag-Genehmigungsstatus
- 20. NetSuite Sandbox suitetalk Zugriff
- 21. Wie führe ich eine gespeicherte Suche nach einem Suchtyp von "gespeicherte Suche" in Netsuite SuiteTalk aus
- 22. Real World Beispiele für erweiterte OOP-Funktionen für PHP
- 23. NetSuite benutzerdefinierte Datensatzsuche SuiteTalk mit C#
- 24. NetSuite SuiteTalk - abrufen Wert Zeichenfolge Von „SearchColumnSelectCustomField“
- 25. Wordpress Erweiterte Suche, mit Baum und Filtern und Live-Suche
- 26. CRM 2011 Erweiterte Suche - Fetch XML - Import für überarbeitete Suche
- 27. Erweiterte Suche Verwendung der Paginierung in Codeigniator
- 28. Erweiterte Suche Navigation innerhalb der Website
- 29. Erweiterte Suche - verknüpfte zugehörig mit OR
- 30. Alfresco 5.0C erweiterte Suche Schleuder Suchparametern Get