Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netsuite获取保存的事务搜索Java_Java_Web Services_Search_Transactions_Netsuite - Fatal编程技术网

Netsuite获取保存的事务搜索Java

Netsuite获取保存的事务搜索Java,java,web-services,search,transactions,netsuite,Java,Web Services,Search,Transactions,Netsuite,我正在用java制作一个应用程序,它使用Netsuite的SuiteTalk web服务创建报告。我定义了一个交易保存搜索,其中我使用日期作为条件,并在结果中打印默认交易列加上部门外部ID和金额总和。我通过UI运行保存的搜索,得到了我期望的结果,但是,当我试图在java代码中获取信息时,我总是得到空结果。我尝试了以下解决方案的java版本: 然而,所有这些对我都不起作用。当我进入Netsuite UI上的列表->搜索->保存的搜索菜单时,当我在过滤器“常规”和“事务”中设置时,我能够看到保存

我正在用java制作一个应用程序,它使用Netsuite的SuiteTalk web服务创建报告。我定义了一个交易保存搜索,其中我使用日期作为条件,并在结果中打印默认交易列加上部门外部ID和金额总和。我通过UI运行保存的搜索,得到了我期望的结果,但是,当我试图在java代码中获取信息时,我总是得到空结果。我尝试了以下解决方案的java版本:

然而,所有这些对我都不起作用。当我进入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());
        }


    }
public void printReport()引发ExceedDusageLimitFault、意外错误、InvalidSessionFault、ExceedRecordCountFault、RemoteException、UnsupportedEncodingException、SOAPException{
//方法1:交易搜索
TransactionSearchAdvanced sr=新TransactionSearchAdvanced();
//“customsearchreport”是我保存的搜索的IF
高级setSavedSearchId(“客户搜索报告”);
SearchResult=_port.search(sr);
System.out.println(res.getTotalRecords());
//方法2:项目搜索
ItemSearchAdvanced isa=新的ItemSearchAdvanced();
isa.setSavedSearchId(“客户搜索报告”);
searchresp=_端口搜索(isa);
System.out.println(resp.getTotalRecords());
//方法3:一般保存搜索
GetSavedSearchRecord gssr=new GetSavedSearchRecord();
//在创建事务保存搜索时,我将记录类型设置为“事务”。
gssr.setSearchType(SearchRecordType.transaction);
GetSavedSearchResult gssre=_port.getSavedSearch(gssr);
System.out.println(“保存的搜索状态:+gssre.getStatus().isissucess());
RecordRefList srl=gssre.getRecordRefList();
RecordRef[]rr=srl.getRecordRef();
System.out.println(“RecordRef[]大小:+rr.length”);
对于(int i=0;i
对于方法1和2,我无法获得结果(我打印“null”)。第三种方法为我打印16个已保存的搜索,但是,没有一个打印的搜索与我创建的搜索相对应。当我通过UI检查保存的搜索列表时,我看到存在21个非私有保存的搜索,4个是我创建的。在打印的16份报告中,有一份对应于私人保存的搜索

所以,我不明白为什么我不能得到我保存的搜索结果,以及什么决定了一个报表是否可以通过任何方法访问。如果您能通过API帮助我获取savedSearch,我们将不胜感激。另外,有人能解释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);

res.getStatus()
返回什么?res.getStatus()返回true,因为搜索成功执行。这很奇怪,因为每当我获取
res.getStatus().isissAccess()==true
,那么
res.getTotalRecords()
总是返回一个有效的整数对象(即使它是0),而不是null。这是正确的。当我尝试遍历记录时,得到了空对象。很抱歉给您带来不便。