金蝶EAS BOS二次開發_F7控件的查詢


簡介

業務單元A中用到業務單元B中的數據,即在業務單元A中建立一個[數據來源]-[基礎資料類別]的F7字段,基礎資料為業務單元B的名稱,顯示字段為名稱。

 

在業務單元A的[業務單元EditUI]中(一般是在JAVA透視圖-com.kingdee.eas.custom.業務單元A.basedata.client中)的onLoad方法(代碼中任意地方右鍵-源代碼-覆蓋/實現方法,上右圖)中添加如下代碼:

第一種

 // 商戶的銷售市場控件設置查詢信息
        String queryInfoStr = "com.kingdee.eas.custom.業務單元A.basedata.app.業務單元BQuery";
        this.prmt業務單元B.setQueryInfo(queryInfoStr);
        
        EntityViewInfo evi = new EntityViewInfo(); // 實體視圖信息
        FilterInfo fi = new FilterInfo();// 過濾信息
        FilterItemCollection fc = fi.getFilterItems();// 過濾信息組信息
        
        // 過濾信息項信息(作廢狀態為普通的值1)
        FilterItemInfo fii1 = new FilterItemInfo("DeletedStatus", DeletedStatusEnum.NORMAL_VALUE);
        fc.add(fii1);
        
        // 過濾信息項信息(公司組織單位的ID包含為控件取來的值)
        // 通過控件取公司組織單位對象
        CompanyOrgUnitInfo companyInfo = (CompanyOrgUnitInfo)this.prmtFICompany.getValue();
        FilterItemInfo fii2 = new FilterItemInfo("FICOMPANY.ID", companyInfo.getId().toString(), CompareType.INCLUDE);
        fc.add(fii2);
        
        // 實體視圖信息設置
        evi.setFilter(fi);
        
        // 商戶的銷售市場控件上設置新的實體視圖信息
        this.prmtSellMarket.setEntityViewInfo(evi);
        this.prmtSellMarket.getQueryAgent().resetRuntimeEntityView();// 重新加載

第二種

        CompanyOrgUnitInfo companyInfo = (CompanyOrgUnitInfo)this.prmtFICompany.getValue();
        UtilClass.setF7(this.prmt業務單元B,
            " DeletedStatus = " + DeletedStatusEnum.NORMAL_VALUE + " AND FICOMPANY.ID IN ('"
                + companyInfo.getId().toString() + "')",
            "com.kingdee.eas.custom.butcher.basedata.app.業務單元BQuery",
            "$number$",
            "$name$",
            "$number$");
/**
     * 設置F7
     * 
     * @param F7Name F7名稱
     * @param ConditionSQL 過濾條件SQL(如果輸入值不等於"",則添加條件) 例 " fbilltypestatr = '1' and (entrys.id is null or entrys.seq = 1)"
     * @param Query 屬性 例:"com.kingdee.eas.cmt.basedata.app.OperatorOrgQuery"
     * @param EditFrmat 屬性 例:"$number$"
     * @param DisplayFormat 屬性 例:"$name$"
     * @param CommitFormat 屬性 例:"$number$"
     * @throws BOSException
     */
    public static void setF7(KDBizPromptBox F7Name, String ConditionSQL, String Query, String EditFrmat,
        String DisplayFormat, String CommitFormat)
    {
        // 添加分錄過濾條件
        try
        {
            EntityViewInfo view = new EntityViewInfo();
            if (ConditionSQL != "")
            {
                view.setFilter(ConditionSQL);
            }
            // 設置F7屬性
            F7Name.setQueryInfo(Query);// 關聯Query
            F7Name.setEditFormat(EditFrmat);// 編輯樣式
            F7Name.setDisplayFormat(DisplayFormat);// 展現樣式
            F7Name.setCommitFormat(CommitFormat);// 提交樣式
            F7Name.setEntityViewInfo(view);
            F7Name.setEnabledMultiSelection(false);
        }
        catch (Exception e)
        {
            alert2("F7[" + F7Name + "]初始化出錯,請聯系管理員!", e.getMessage());
        }
    }

這時候我在業務單元A中打開對應業務單元B中選項時,會根據條件篩選信息(即執行一次SQL查詢后的結果)。

我這個是在業務單元A中選業務單元B中的值時,會踢出業務單元B中已經作廢的條目。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM