簡體   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