2016-09-08 6 views
1

Ich mache eine Netsuite-Suche, aber die Filter filtern nicht wirklich? Das Objekt "budgetimport" enthält 314 Elemente. Unabhängig davon, wie ich die Suche filtern möchte, werden alle 314 Elemente jedes Mal zurückgegeben.Netsuite Suchfilter funktioniert nicht

Was vermisse ich/mache ich falsch?

Vielen Dank im Voraus.

P.S. Während ich hier bin: Was ist der "beste" Weg, um den Wert in der Spalte "Betrag" aus der Suche zu erhalten? (Es soll nur ein Element aus der Suche zurückgegeben werden, aber was ist, wenn es mehr?)

//add search columns 
var columns = []; 
columns.push(new nlobjSearchColumn('year')); 
columns.push(new nlobjSearchColumn('department')); 
columns.push(new nlobjSearchColumn('account')); 
columns.push(new nlobjSearchColumn('amount')); 

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('year', null, 'anyof', 'FY 2007', null)); 
filters.push(new nlobjSearchFilter('department', null, 'anyof', 'Bass', null)); 
filters.push(new nlobjSearchFilter('account', null, 'anyof', 'Administration Expenses', null)); 

//execute the search 
var search = nlapiSearchRecord('budgetimport', null, filters, columns); 

Antwort

2

Nach viel Spiel und viel Frustration liegt das Problem beim "Nicht-Standard" -Objekt in NetSuite, so dass "normale" Methoden nicht zutreffen.

Um das budgetimport-Objekt zu filtern, müssen Sie "formulatext" verwenden und festlegen, dass Sie darauf filtern, z.

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('formulatext', null, 'is', fiscalyear).setFormula('{Year}')); //NOTE : Capital 'Y' in Year 
filters.push(new nlobjSearchFilter('formulatext', null, 'is', costcentre).setFormula('{department}')); 
0

Es sieht aus wie das Problem mit diesem Satztyp ist. Ich konnte im Records-Browser nichts finden, daher bin ich mir nicht sicher, was die erlaubten Filter sind. Das Problem besteht darin, dass diese Felder nicht gefiltert werden. Wenn Sie einen Filter für internalid hinzufügen und die internaid eines der Datensätze eingeben, wird gefiltert (siehe unten). Ich würde vorschlagen, einen Fall mit NetSuite darüber zu senden, wie es scheint, ein Defekt mit diesem Datensatz zu sein.

filters.push(new nlobjSearchFilter('internalid',null,'is','12345')); 
+0

Danke für die Informationen, W3bguy. Ich habe ein bisschen mehr Zeit mit der Arbeit an dem Problem verbracht und habe vielleicht eine Art von Arbeitsumgebung, die funktionieren könnte ...? * Kreuze Finger * Ich habe eine Nachricht an Netsuite gesendet fragen, warum 'Internalid' in einem Filterzustand funktioniert, aber es scheint, dass nichts anderes tut ?! Ich warte auf eine nützliche Antwort. – Bellamy

0

Ich glaube nicht, dass dieser RecordType volle scripting/savedsearch Unterstützung in NetSuite bekommt.

Ich habe die folgenden Zeilen in Ihrem Skript in dem NetSuite Debugger den savedsearch zu speichern. Dieser Teil hat jedoch Fehler beim Versuch, es zu bearbeiten, funktioniert. Höchstwahrscheinlich kein vollständig unterstützter Datensatztyp.

//var search = nlapiSearchRecord('budgetimport', null, filters, columns); 
var search = nlapiCreateSearch('budgetimport', filters, columns); 
var searchId = search.saveSearch('BudgetImport_SEARCH', 'customsearch_budgetimport_search'); 

Halten Sie uns auf dem Laufenden, wenn NetSuite Ihnen eine Antwort gibt.

0

Der Grund, warum die Filter funktionieren nicht der ff Gründe sein könnten:

  • Sie Text als Filterwerte
  • der internen ID statt verwenden
  • Sie nicht vorbei Array wenn Sie Verwendung auch Bestimmungen haften Betreiber
  • , gibt es keine Notwendigkeit, null passiert zuletzt param
1

versucht Paarung anyof Operator mit der internen IDs statt.

Beispiel:

filters.push(new nlobjSearchFilter('year', null, 'anyof', *internal id of 'FY 2007'*, null)); 
0

dies hier erwähnt nicht sehen, aber ich in dieser Ausgabe lief, als ich auf einem meiner Skripte den anderen Tag arbeitete:

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('year', null, 'anyof', 'FY 2007', null)); 
filters.push(new nlobjSearchFilter('department', null, 'anyof', 'Bass', null)); 
filters.push(new nlobjSearchFilter('account', null, 'anyof', 'Administration Expenses', null)); 

alle Wenn diese Felder sind Auswahlfelder aus Listen (custom oder nicht) stammten, dann müssen Sie Referenzierung den Feldwertes durch interne ID (ich sage „Notwendigkeit“, wie das ist, was ich zu filtern, um richtig mit dem Preis zu tun hatte) sein .

So anstelle von „GJ 2007“, seine internen ID im Zusammenhang mit der übergeordneten Liste.

Um die interne ID des Werts zu finden, nach dem Sie zu filtern versuchen, können Sie eine gespeicherte Suche erstellen, die den Wert zusammen mit der internen ID auflistet. Dies kann über jeden übergeordneten Datensatz des Auswahlfelds erfolgen.(Dies ist eine Methode, die ich verwenden musste, um die interne ID des Preisniveaus zu finden, da ich das nirgendwo anders in unserem System finden konnte).

Wenn es sich um eine benutzerdefinierte Liste handelt, navigieren Sie zur Seite mit den benutzerdefinierten Listen, suchen Sie die Liste und identifizieren Sie die interne ID für den Wert, nach dem Sie filtern möchten.