我正在java中创建一个使用Netsuite的SuiteTalk Web服务创建报告的应用程序。我定义了一个事务保存搜索,我在其中使用日期作为标准,我在结果中打印默认的事务列加上部门外部ID和金额的总和。我通过UI运行保存的搜索,我得到了我期待的东西,但是,当我尝试在我的java代码中获取信息时,我一直得到null结果。我已经尝试了以下解决方案的java版本:
C# NetSuite WebServices: Get value from custom field in saved search (ItemSearchAdvanced)
然而,这些都不适用于我。当我进入我的Netsuite UI上的Lists-> Search-> Saved Searches菜单时,当我设置过滤器“General”和“Transaction”时,我能够看到我保存的搜索。但是,我无法通过API检索它的信息。
这是我用来尝试获取已保存搜索数据的代码:
public void printReport() throws ExceededUsageLimitFault, UnexpectedErrorFault, InvalidSessionFault, ExceededRecordCountFault, RemoteException, UnsupportedEncodingException, SOAPException{
//METHOD 1: Transaction Search
TransactionSearchAdvanced sr = new TransactionSearchAdvanced();
//"customsearchreport" is the IF of my saved search
sr.setSavedSearchId("customsearchreport");
SearchResult res = _port.search(sr);
System.out.println(res.getTotalRecords());
//METHOD 2: Item search
ItemSearchAdvanced isa = new ItemSearchAdvanced();
isa.setSavedSearchId("customsearchreport");
SearchResult resp = _port.search(isa);
System.out.println(resp.getTotalRecords());
//METHOD 3: General saved search
GetSavedSearchRecord gssr= new GetSavedSearchRecord();
//I set the record type as "transaction" as I created a transaction saved search.
gssr.setSearchType(SearchRecordType.transaction);
GetSavedSearchResult gssre = _port.getSavedSearch(gssr);
System.out.println("Saved Search status: "+ gssre.getStatus().isIsSuccess());
RecordRefList srl = gssre.getRecordRefList();
RecordRef[] rr = srl.getRecordRef();
System.out.println("RecordRef[] size: " + rr.length);
for (int i = 0; i < rr.length; i++) {
RecordRef rref = rr[i];
System.out.println("External ID: " + rref.getExternalId());
System.out.println("Internal ID: "+ rref.getInternalId());
System.out.println("Name: "+ rref.getName());
}
}
使用METHODS 1和2,我无法获得结果(我打印“null”)。第三种方法打印出16个已保存的搜索,但是,没有打印的搜索对应于我创建的搜索。当我通过UI检查保存的搜索列表时,我发现有21个非私人保存的搜索,4个由我创建。从打印的16个报告中,一个对应于私人保存的搜索。
所以,我不知道为什么我无法获取保存的搜索结果,以及决定是否可以通过任何方法访问报告的原因。任何有助于获得我的已保存搜索的API的帮助将不胜感激。此外,任何人都可以解释Netsuite如何通过任何“获取”方法确定哪些保存的搜索出现?
谢谢!
答案 0 :(得分:2)
我解决了。 ID&#34; customsearchreport&#34;我使用的是一个UI ID。我必须使用InternalID作为我的报告。此外,通过选择&#34;所有公司成员&#34;我可以使用getSavedSearch()方法打印我保存的搜索ID。在我的观众&#34;观众&#34;我保存的搜索部分。
答案 1 :(得分:0)
我解决了他们
在第二个脚本之前,我们必须增加页数限制,如下所示:
SearchPreferences sp = new SearchPreferences();
sp.pageSize = 1000;
_service.searchPreferences = sp;
SubsidiarySearch subsidiarySrch = new SubsidiarySearch();
SearchResult srchResult = _service.search(subsidiarySrch);