Netsuite获取事务保存搜索Java

时间:2016-02-05 07:03:20

标签: java web-services search transactions netsuite

我正在java中创建一个使用Netsuite的SuiteTalk Web服务创建报告的应用程序。我定义了一个事务保存搜索,我在其中使用日期作为标准,我在结果中打印默认的事务列加上部门外部ID和金额的总和。我通过UI运行保存的搜索,我得到了我期待的东西,但是,当我尝试在我的java代码中获取信息时,我一直得到null结果。我已经尝试了以下解决方案的java版本:

C# NetSuite WebServices: Get value from custom field in saved search (ItemSearchAdvanced)

http://www.anyforum.in/question/web-service/netsuite/How-to-get-data-from-saved-search-through-webservice-request/345

然而,这些都不适用于我。当我进入我的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如何通过任何“获取”方法确定哪些保存的搜索出现?

谢谢!

2 个答案:

答案 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);