Netsuite 获取交易保存搜索 Java
Netsuite get Transaction Saved Search Java
我正在 java 制作一个应用程序,它使用 Netsuite 的 SuiteTalk Web 服务来创建报告。我定义了一个交易保存搜索,我在其中使用日期作为条件,并在结果中打印默认交易列加上部门外部 ID 和金额总和。我 运行 通过 UI 保存的搜索,我得到了我期望的结果,但是,当我尝试在我的 java 代码中获取信息时,我总是得到空结果。我已经尝试了以下解决方案的 java 版本:
但是,none 这对我有用。当我转到我的 Netsuite UI 上的列表->搜索->保存的搜索菜单时,我可以在设置过滤器 "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());
}
}
使用方法 1 和方法 2,我无法获得结果(我打印 "null")。第三种方法向我打印了 16 个保存的搜索,但是,none 打印的搜索对应于我创建的搜索。当我通过 UI 查看保存的搜索列表时,我看到存在 21 个非私人保存的搜索,其中 4 个是我创建的。在打印的 16 份报告中,一份对应于私人保存的搜索。
所以,我不明白为什么我无法获取我保存的搜索结果以及决定是否可以通过任何方法访问报告的因素。通过 API 获得我的 savedSearch 的任何帮助将不胜感激。另外,任何人都可以解释 Netsuite 如何确定通过任何 "get" 方法显示哪些已保存的搜索?
谢谢!
我解决了。我使用的 ID "customsearchreport" 是一个 UI ID。我必须为我的报告使用 InternalID。此外,我还可以使用 getSavedSearch() 方法打印我保存的搜索 ID,方法是在我保存的搜索的 "Audience" 部分中选择 "All company members" 复选框。
我解决了
在第二个脚本之前,我们必须像这样增加页数限制:
SearchPreferences sp = new SearchPreferences();
sp.pageSize = 1000;
_service.searchPreferences = sp;
SubsidiarySearch subsidiarySrch = new SubsidiarySearch();
SearchResult srchResult = _service.search(subsidiarySrch);
我正在 java 制作一个应用程序,它使用 Netsuite 的 SuiteTalk Web 服务来创建报告。我定义了一个交易保存搜索,我在其中使用日期作为条件,并在结果中打印默认交易列加上部门外部 ID 和金额总和。我 运行 通过 UI 保存的搜索,我得到了我期望的结果,但是,当我尝试在我的 java 代码中获取信息时,我总是得到空结果。我已经尝试了以下解决方案的 java 版本:
但是,none 这对我有用。当我转到我的 Netsuite UI 上的列表->搜索->保存的搜索菜单时,我可以在设置过滤器 "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());
}
}
使用方法 1 和方法 2,我无法获得结果(我打印 "null")。第三种方法向我打印了 16 个保存的搜索,但是,none 打印的搜索对应于我创建的搜索。当我通过 UI 查看保存的搜索列表时,我看到存在 21 个非私人保存的搜索,其中 4 个是我创建的。在打印的 16 份报告中,一份对应于私人保存的搜索。
所以,我不明白为什么我无法获取我保存的搜索结果以及决定是否可以通过任何方法访问报告的因素。通过 API 获得我的 savedSearch 的任何帮助将不胜感激。另外,任何人都可以解释 Netsuite 如何确定通过任何 "get" 方法显示哪些已保存的搜索?
谢谢!
我解决了。我使用的 ID "customsearchreport" 是一个 UI ID。我必须为我的报告使用 InternalID。此外,我还可以使用 getSavedSearch() 方法打印我保存的搜索 ID,方法是在我保存的搜索的 "Audience" 部分中选择 "All company members" 复选框。
我解决了
在第二个脚本之前,我们必须像这样增加页数限制:
SearchPreferences sp = new SearchPreferences();
sp.pageSize = 1000;
_service.searchPreferences = sp;
SubsidiarySearch subsidiarySrch = new SubsidiarySearch();
SearchResult srchResult = _service.search(subsidiarySrch);