2017-06-16 4 views
0

J'ai essayé toutes sortes de façons différentes pour que cette recherche fonctionne correctement. J'ai même enlevé le filtre pour retourner les valeurs que je sais que la recherche renvoie. J'ai ensuite ajouté le filtre, et obtenu différents ID de projet et vérifié la recherche (via l'interface utilisateur) fait le travail correctement.NetSuite SuiteScript Rejoindre la recherche enregistrée ne pas retourner les valeurs

Il s'agit d'une recherche de type JOIN qui doit accepter un paramètre (identifiant de projet) et renvoyer deux données. C'est tout. Des idées sur pourquoi mon paramètre (filtre) ne fonctionne pas comme il le devrait?

var filter = new Array(); 
filter[0] = new nlobjSearchFilter('entityid', 'job', 'is', int_Project_ID); 

var results = nlapiSearchRecord('transaction', 'customsearch_[...]', filter, null); 

if (!isNull(results) && results.length > 0) 

Voici un lien vers les critères et les onglets de résultats de la recherche dans NetSuite.

Imgur Link

+0

Avez-vous essayé de filtrer sur 'internalid' du projet au lieu de' entityid'? – erictgrubaugh

+0

Oui. J'ai essayé les deux interchangeable pour quelques fois. Cela avait à voir avec le 'travail' dans le filtre. En outre, le fait que j'ai stocké le paramètre attendu (identifiant du projet) dans la recherche sauvegardée. Ainsi, la réponse a été de changer 'entityid' en 'internalid' et 'job' en 'jobmain' et de supprimer le paramètre de la recherche enregistrée dans l'interface utilisateur. Cela fonctionne maintenant. Mon patron a dû m'aider à comprendre cela et même il a été perplexe pendant un moment avant de trouver le «jobmain». – Finnster

Répondre

0

essayer ceci pour définir les filtres après le chargement recherche.

var filter = mySearch.filters; 
        var newfilters = []; 
        var filterss = {}; 
        filterss.name = 'department'; 
        filterss.operator = 'IS'; 
        filterss.values = dep_fil; 
        filterss.join = 'employee'; 
        filterss.summary = 'max'; 
        newfilters.push(search.createFilter(filterss)); 
        mySearch.filters = newfilters; 


var searchResults = mySearch.run().getRange({ 
        start : 0, 
        end : 500 
       }); 

vous pouvez obtenir les valeurs à l'aide

searchResult.getValue({ 
          name : 'email', 
          join : 'employee', 
          summary : 'max' 
         }); 

Il y a le type diffrent de synthèse comme max, somme, groupe, etc. Je pense que le summmary est la raison.

Notez qu'il s'agit de la méthode suitescript 2.