[英]Netsuite get Transaction Saved Search Java
我正在用Java开发一个应用程序,该应用程序使用Netsuite的SuiteTalk Web服务创建报告。 我定义了一个保存交易的搜索,其中以日期为标准,并在结果中打印默认的交易列以及部门外部ID和金额总和。 我通过UI运行保存的搜索,并且得到了期望的结果,但是,当我尝试在Java代码中获取信息时,却一直得到空结果。 我尝试了以下解决方案的Java版本:
C#NetSuite WebServices:从保存的搜索中的自定义字段中获取值(ItemSearchAdvanced)
但是,这些都不对我有用。 当我转到Netsuite UI上的“列表”->“搜索”->“保存的搜索”菜单时,在过滤器“常规”和“交易”中进行设置后,便可以看到保存的搜索。 但是,我无法通过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());
}
}
使用方法1和方法2,我无法获得结果(我打印“ null”)。 第三种方法为我打印了16个保存的搜索,但是,没有一个打印的搜索与我创建的搜索相对应。 通过UI检查保存的搜索列表时,我发现存在21个非私有保存的搜索,其中4个是我创建的。 在打印的16个报告中,一个对应于私有保存的搜索。
因此,我不明白为什么无法获得保存的搜索结果,以及如何确定是否可以通过任何方法访问报告的原因。 通过API获取我的saveSearch的任何帮助将不胜感激。 另外,有人可以解释Netsuite如何通过任何“获取”方法确定哪些已保存的搜索吗?
谢谢!
我解决了 我使用的ID“ customsearchreport”是一个UI ID。 我必须为报告使用InternalID。 另外,通过选择已保存搜索的“受众群体”部分中的“所有公司成员”复选框,我可以使用getSavedSearch()方法打印已保存的搜索ID。
我解决了
在第二个脚本之前,我们必须增加页数限制,如下所示:
SearchPreferences sp = new SearchPreferences();
sp.pageSize = 1000;
_service.searchPreferences = sp;
SubsidiarySearch subsidiarySrch = new SubsidiarySearch();
SearchResult srchResult = _service.search(subsidiarySrch);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.