账簿批量打印和导出的实现
(创建时间:2009年11月15日 19:31:00)
Jangogo : 
通过新增加的功能页面 bprintledger.asp 实现批量打印和导出。
该功能页面先一次性取出所有要处理的科目,组成一个数组任务队列,通过循环来调入相应的账簿,账簿页面加载完成后立即进行打印或者导出,打印或者导出完成后,回调 bprintledger 的doNext()函数,这样就可以处理下一个任务。

相应的相关的所有账簿的页面都要更改两处地方:

第一处: 账簿加载后立即调用 打印或者导出功能
 
  1. /*function tplRev(xD,isSaveToDB){  
  2.   .....  
  3.     
  4.   //原来的内容  
  5.   if(Const.acid){  
  6.      acid=Const.acid;  
  7.     UI.run("buildLedger();");  
  8.   }  
  9. */  
  10. //更改为以下内容,(通过Const.acid可以定位到这里)   
  11. if(Const.acid){   
  12.    acid=Const.acid;   
  13.    if(Const.isNext==true){//批量打印或导出   
  14.     buildLedger();   
  15.         printme(true);   
  16.    }else{   
  17.        UI.run("buildLedger();");   
  18.    }   
  19.  }  
第二处:更改printme函数,让打印或者导出完成后回调父页面的doNext()
 
  1. /*function printme(iStep){  
  2.    ......  
  3.   //原来的内容  
  4.   //=====开始打印===========  
  5.     //BodyDiv,HeaderElement,FooterElement,ObjPageSetup  
  6.     var ps=eval("ps_=" + $("hList").childNodes[0].getAttribute("pagesetup"));  
  7.     //try{  
  8.       LPrinter.preview($("xBody"),$("hList"),null,ps);  
  9.     //}catch(ex){}  
  10.     UI.hidewaitform();   
  11. */  
  12. //更改为以下内容(通过定位printme函数可以找到这里)   
  13. var ps=eval("ps_=" + $("hList").childNodes[0].getAttribute("pagesetup"));   
  14. if(Const.isNext==true){ //批量打印或导出   
  15.    if(Const.NPT==''){ //打印   
  16.          ps.printer=Const.NPN;//设置打印机名称   
  17.          ps.noprintersel=1;   
  18.                   ps.nopreview=1;   
  19.                   LPrinter.preview($("xBody"),$("hList"),null,ps);   
  20.        }else{//导出到Const.NPT   
  21.                  _doExp(Const.NPT,"唯一的标志前缀"+Const.acid,"xls");   //唯一的标志前缀必须唯一字母或单词,以免和其他账簿导出的文件名重复
  22.        }   
  23.        try//进行下一个   
  24.          window.parent.doNext();   
  25.        }catch(ex){}   
  26. }else{   
  27.       LPrinter.preview($("xBody"),$("hList"),null,ps);   
  28.       UI.hidewaitform();    
  29. }  
特殊地:
1.科目明细账ledgersub 因为采用多个iframe来显示多个账页,上述的功能更改稍有变化,请参考该页里面的相应两处位置的JS代码
2.往来辅助核算的明细账ledgerdep因为需要多两个Const参数: lname和bianliangid(拼音“变量ID”之意),上述代码也有所不同,请参考该页的对应JS代码
文档中心