繁体   English   中英

Netsuite获取事务保存的搜索Java

[英]Netsuite get Transaction Saved Search Java

我正在用Java开发一个应用程序,该应用程序使用Netsuite的SuiteTalk Web服务创建报告。 我定义了一个保存交易的搜索,其中以日期为标准,并在结果中打印默认的交易列以及部门外部ID和金额总和。 我通过UI运行保存的搜索,并且得到了期望的结果,但是,当我尝试在Java代码中获取信息时,却一直得到空结果。 我尝试了以下解决方案的Java版本:

C#NetSuite WebServices:从保存的搜索中的自定义字段中获取值(ItemSearchAdvanced)

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

但是,这些都不对我有用。 当我转到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM