NC57,NC63-NC二開經驗總結


版主2010級市場營銷專業本科生

2013年8月入達內培訓Java相關技術

12月入職,做用友NC的二次開發工作

2015年4月離職,4中下旬入職一家互聯網金融企業

下面是做NC二開期間積累的一些常用的技術點,供NC實習生參考,不謝!

 

原 docx 文件下載 http://files.cnblogs.com/files/liaolongjun/ExNC.zip

 

 

下面是從word文檔里拷貝進來的,圖片全都沒有了。需要的可以直接下載上面鏈接的文檔。

 

 

 

NC二開經驗總結

公式相關

1.顯示公式沒執行

列表界面顯示,卡片界面不顯示:

Handler的onBoCard執行:getBillCardPanel().execHeadLoadFormulas();

Controller的isLoadCardFormula返回true

另外,字段錄入長度不夠時,列表顯示,卡片不顯示

2.帶出數據執行公式

表頭顯示公式,執行getBillCardPanel().execHeadLoadFormulas();

表體顯示公式,執行getBillCardPanel().getBillModel().execLoadFormula();

補充:上面是最簡單的方法,其它自己測試。比如,指定表體行執行公式:

// 下面的方法必須設置編輯公式 –- 用for循環效果等於上面的方法

    getBillCardPanel().execBodyFormula(i, "pk_supdoc");

UI

1.列表界面設置可多選

public ClientUI(){

         super();

         getBillListPanel().setMultiSelect(true);

}

2.查詢條件

UIDialog dlg = getQueryUI();

if(dlg.showModal() != 1) return;

INormalQuery query = (INormalQuery)dlg;

String sql = query.getWhereSql();

3.隱藏表體字段

BillData bs = getBillCardPanel().getBillData();

BillItem[] items = bs.getBillModel().getBodyItems();

for (int i = 0; i < items.length; i++) {

    items[i].setShow(false);

}

getBillCardPanel().setBillData(bs); // 必須有這一行

4.隱藏表頭字段

方法一:

billCardPanel.getHeadItem("hzdy42").getComponent().setVisible(false);

billCardPanel.getHeadItem("hzdy42").getCaptionLabel().setText("");

方法二:

billCardPanel.hideHeadItem(new String[]{"hzdy38","hzdy39","hzdy40","hzdy41","hzdy42"});

5.將AggVO顯示到單據界面上

billCardPanel.setBillValueVO(aggvo);

系統變量相關

1.單據號

前置任務:配置單據號規則

創建單據號:new HYPubBO().getBillNo(單據類型, 組織, null, null);

或者:getVbillCode(單據類型,組織);

new BillcodeGenerater ().getBillCode (單據類型, 組織,null,null);

2.主鍵

KeyGenerator.getInstance().getKey(20);

3.獲取nchome路徑

RuntimeEnv.getInstance().getNCHome();

4.系統變量

InvocationInfoProxy

WorkbenchEnvironment

ClientEnvironment

5.設置客戶端背景色

F:\NC63\AceHome\ierp\sf\themeconf.xml

模塊相關

1.添加模塊

META-INF里面必須有module.xml,Sysconfig下才能找到該模塊

2.單據類型沒有定義所屬模塊

產生這個異常的原因是:單據類型沒在添加在項目模塊里,而是在自己的模塊里,在單據類型表里:bd_billtype,把單據的systemcode改為項目模塊即可

單據動作相關

1.動作注冊

從pub_billaction表里復制其它單據的動作,修改單據類型、ID即可

2.動作代碼路徑

modules -> 單據類型所在模塊 -> META-INF -> var -> source

3.按鈕顯示

只顯示isEnabled()==true的按鈕:

int[] btnAry = ((LController) getUIManageController()).getCardButtonAry();

for (int i = 0; i < btnAry.length; i++) {         getBillUI().getButtonManager().getButton(btnAry[i]).setVisible(getBillUI().getButtonManager().getButton(btnAry[i]).isEnabled());

}

單據模版相關

1.下拉字段

數據庫里保存的是 0、1、2、3.。。。所以vo里對應Integer

getBillCardWrapper().initHeadComboBox("vname", new String[]{"A","B","C"}, true);

2.日期型字段

單據模板是日期型時,vo要為UFDate

3.日期型默認取值

                       

4.查詢所有的默認查詢條件

 

5.調用模板

 

數據庫操作相關

1. HYPubBO_Client

findColValue方法只能查詢字符型字段(因為這個方法內嵌了String強轉)

2.JdbcSession

JdbcSession session = null;

session = PersistenceManager.getInstance().getJdbcSession();

session = JdbcSessionUtil.createJdbcSession();

密碼相關

1.root密碼修改

 

補丁相關

1.如何打補丁

在modules里找到相應的模塊,將public、private、client下的代碼導出的jar包放到模塊的lib文件夾下,開發工具重新加載下即可(怎么重新加載?--重啟,再重啟,直到開發工具能加載到剛導入的jar包里的類)

運行相關

1.啟動中間件報錯

 

2.startup.bat啟動服務卡着不動

 

元數據相關

1.單據日期

 

配置文件相關

1.配置文件變量名寫錯

 

節點相關

1.打開其它節點

直接點開指定的節點,沒有數據:SFClientUtil.openFrame("ZZ0102"); // 下面的還沒測試

 

參照相關

1.表頭參照多選取值

((UIRefPane) billCardPanel.getHeadItem("hzdy41").getComponent()).getRefModel().getPkValues();

2.動態指定參照類

((UIRefPane)(getBillCardPanelWrapper().getBillCardPanel().getHeadItem("字段").getComponent())).setRefModel(參照類.class);

3.設置參照是否支持多選

((UIRefPane) editor.getBillCardPanel().getHeadItem("vpsn").getComponent()).setMultiSelectedEnabled(true);

4. 設置參照只顯示一級

 

5.參照字段實現手輸

 

6.如何知道一個字段的參照類型:

Object obj = ((UIRefPane)getBillCardPanel().getHeadItem("").getComponent()).getRefModel();

Syttem.out.println(obj);

下拉相關

1. 下拉去掉空白選項

 

預警

1.配置

 

其它

1.命名規則

 

2.表空間的概念

 

3.獲取用戶有權限的組織

 

實用方法

1.獲取表體所有頁簽名

getBillCardPanel().getBillData().getBodyTableCodes();

2.獲取表體指定行的vo

getBillModel("頁簽名").getBodyValueRowVO(rownum, className);

3.單據狀態欄打印消息

ShowStatusBarMsgUtil.showStatusBarMsg

4.獲取ts

CurTime.getCurrentTimeStampString();

5.創建主鍵

new SequenceGenerator().generate(pk_corp,num);

6. 保留小數點后2位,並“四舍五入”

new UFDouble().setScale(2, UFDouble.ROUND_HALF_UP);


免責聲明!

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



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