1/31用友股份-LE支持服务业务本部产品方案--《打印问题解决方案集》建立日期:2013-07-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-05612/31文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-07-01用友NC产品支持部V1.0版本领域模块备注3/31目录打印问题解决方案集................................................................................................4一、打印-合并设置方法..........................................................................................4二、打印模板设置-多辅助核算打印......................................................................6三、打印模板设置一例-打印识别码....................................................................10四、打印模版设置-自定义变量取值无法取到问题解决....................................15五、打印模版设置-IFF函数应用举例...................................................................15六、打印模板应用-自定义变量............................................................................16七、打印模板中自定义项变量公式应用..............................................................21八、打印时只取到最后一个部门..........................................................................25九、打印页面设置的三种方法..............................................................................26十、打印-自定义纸张使用说明............................................................................28十一、操作系统自定义纸张设置..........................................................................294/31打印问题解决方案集一、打印-合并设置方法1.两种方式,方法1:是打印预览中设置;方法2:2.打印预览中选择合并打印2*1效果展示5/313.方法二:打印模板设置合并设置6/31界面二、打印模板设置-多辅助核算打印客户原需求:凭证打印是否可以通过模板设置,打印出需要的辅助核算。如科目有部门人员,在打印的时候只打印部门。目前产品提供了凭证的打印模板,模板中提供了辅助核算的打印变量,但该变量一个变量即代表了该科目的辅助核算,比如a科目有人员与部门两个辅助核算类型,那么当我们打印的时候,如果选择了辅助变量,那么系统将自动打印出a科目的所有变量,这也是符合会计要求的,因为在你做账的时候已经认为该科目要明晰到该程度。但目前有些客户,明晰仅是为了内部管理的需要,出具对外会计信息的时候不需要明晰到该程度,这种需求呢,我们一般7/31建议是通过多帐薄解决。但有些项目,客户没有购买多帐薄,希望打印的时候可以隐藏掉一些信息,我们又该怎么办呢?针对该问题,我们可以通过打印模板中自定义变量解决,但是由于该方案是没办法中的办法,所以存在一些问题,就是需要针对不同的形式设置多个模板,且公式设置也比较死。下面将举例说明,仅供大家参考1.两个辅助核算,部门在前,人员在后,凭证如下2.希望取部门,我们可以自定义变量公式如下:mid(voucher76,indexof(voucher76,"部门档案"),(indexof(voucher76,"人员档案")-2))8/31其中voucher76为辅助核算变量,indexof(voucher76,"部门档案")为取该变量部门档案开始字段的位置,indexof(voucher76,"人员档案")-2为取人员档案前两个字符的位置,mid最后截取该变量从哪个字符到哪个字符间的字符。具体模板设置如下,我们将其设置在了摘要位置,以便测试打印效果如下9/31如果仅想取人员,设置方法相同mid(voucher76,indexof(voucher76,"人员档案")-1,length(voucher76))效果如下10/31三、打印模板设置一例-打印识别码客户需求:客户在系统中的很多客商名称后面都带有一位识别码,如"统一嘉吉L"。希望在打印凭证和单据的时候把客商名称的识别码提取出来并单独打印在单据右上角。如:客商名称统一嘉吉L打印客商时显示统一嘉吉打印识别码L分析:客户的系统中存在很多客商,一部分客商是带有识别码的,还有另一部分是不带识别码的,必须区分开来。因此可以使用IFF函数,通过endwith(,)函数来判断是否带有识别码,然后进行打印,具体设置如下:11/311.增加两个自定义变量:自定义变量111,用来打印科目及辅助核算,公式设计如下:voucher79&""&iif(endwith(voucher76,"A】")+endwith(voucher76,"B】")+endwith(voucher76,"C】")+endwith(voucher76,"D】")+endwith(voucher76,"E】")+endwith(voucher76,"F】")+endwith(voucher76,"G】")+endwith(voucher76,"H】")+endwith(voucher76,"I】")+endwith(voucher76,"J】")+endwith(voucher76,"K】")+endwith(voucher76,"L】")+endwith(voucher76,"M】")+endwith(voucher76,"N】")+endwith(voucher76,"O】")+endwith(voucher76,"P】")+endwith(voucher76,"Q】")+endwith(voucher76,"R】")+endwith(voucher76,"S】")+endwith(voucher76,"T】")+endwith(voucher76,"U】")+endwith(voucher76,"V】")+endwith(voucher76,"W】")+endwith(voucher76,"X】")+endwith(voucher76,"Y】")+endwith(voucher76,"Z】")>0,left(voucher76,length(voucher76)-2)+"】",voucher76)12/31自定义变量222,用来提取客商的标识符,公式设计如下:iif(endwith(voucher76,"A】")+endwith(voucher76,"B】")+endwith(voucher76,"C】")+endwith(voucher76,"D】")+endwith(voucher76,"E】")+endwith(voucher76,"F】")+endwith(voucher76,"G】")+endwith(voucher76,"H】")+endwith(voucher76,"I】")+endwith(voucher76,"J】")+endwith(voucher76,"K】")+endwith(voucher76,"L】")+endwith(voucher76,"M】")+endwith(voucher76,"N】")+endwith(voucher76,"O】")+endwith(voucher76,"P】")+endwith(voucher76,"Q】")+endwith(voucher76,"R】")+endwith(voucher76,"S】")+endwith(voucher76,"T】")+endwith(voucher76,"U】")+endwith(voucher76,"V】")+endwith(voucher76,"W】")+endwith(voucher76,"X】")+endwith(voucher76,"Y】")+endwith(voucher76,"Z】")>0,left(right(voucher76,2),1),null)13/312.打印模板设计为了方便显示,把变量222放在“摘要”上。3.凭证打印凭证如下:14/31其中客商:上海医药不带标识符,统一嘉吉带标识符打印效果:这么设计公式有个前提:客户其他用于辅助核算的档案中没有以英文大写字母结果的档案。15/31四、打印模版设置-自定义变量取值无法取到问题解决问题背景:在项目上有时候会遇到在打印模板里用自定义变量通过GetColValue函数去库表里取数取不到的问题,原因可能有很多种,条件设置问题,返回记录入大于1等多种情况。有时候问题不好定位。其中有一种情况是大家经常遇到的,就是返回记录数大于1。造成这种情况的原因有一种就是某张单据曾经删除过后来单据号又被使用,造成库里有两条一样单据号的记录,如果不考虑dr标志,取值就有问题。现在举例避免以上问题。方案说明:修改打印模板自定义变量订单审批人的公式为e->getColValue2(so_sale,capproveid,vreceiptcode,vfirstbillcode,dr,0);capproveid->getColValue(sm_user,user_name,cuserid,e)五、打印模版设置-IFF函数应用举例应用背景:在打印过程中经常会遇到某列值根据某些条件要取不同的数据源,我们一般会用自定义变量通过公式条件来实现!下面就举一个通过iff函数让单据编号列显示不同数据的例子来了解iff函数的应用。方案说明:1、添加自定义变量源单据号16/312、在自定义变量里用iff函数根据vbillcode字段的值不同来判断是取当前单据的单据号还是取源头单据的单据号。中间应用了GetColValue函数。具体设置如下:修改为:iif(vbillcode="期初结存"||vbillcode="本月合计"||vbillcode="本年累计",vbillcode,getColValue(ia_bill_b,vsourcebillcode,vbillcode,vbillcode))六、打印模板应用-自定义变量项目问题:在现金银行模块中需要打印银行勾兑情况表,在打印模板设置中表头的账户系统提供账户名称为银行对账初始化的账户名称,是否可以将银行对账账户的对应科目科目及辅助核算显示出来,因为银行对账账户初始化那里为了银行对账单导入定义的很简单,请教如何自定义变量将对对账账户初始化中的账户名称所对应的科目及辅助核算账户名称打印为表头?17/3118/31取科目名称公式:getColValue(bd_accsubj,dispname,pk_accsubj,getColValue(gl_accountlink,pk_subject,pk_contrastaccount,getColValue(gl_contrastaccount,pk_contrastaccount,contrastaccountname,accountname)))取辅助核算公式如果有多个无法取得,如果只取银行账户,可用公式getColValue(gl_accountlink,memo,pk_contrastaccount,getColValue(gl_contrastaccount,pk_contrastaccount,contrastaccountname,accountname))变通实现19/31此文档介绍一个函数:换行-------\n项目需求:在打印中1、设置单元格属性20/312、在文字栏录入:规格\n实效日期3、在变量栏双击单元格选择变量,按照下图的形式来编辑21/314、预览后状态如下:七、打印模板中自定义项变量公式应用说明:用户在实际打印业务单据时,有时会希望按特定行号取表体某个字段值。22/31于是发布这篇案例,希望对实施以后在打印模板自定义项变量公式的应用方面有所启发和帮助。方案说明:打印模板中如何取销售出库单表体中某行的特定的金额。方案1:只希望取表体第三行金额在销售出库单的打印模板中设置公式如下:例如希望取表体第三行的金额新增销售出库单如下:23/31打印效果如下:方案2只希望某一行的金额显出来,剩下的行金额不显示。例如只希望显示第四行的金额24/31出库单如下:打印效果如下:25/31八、打印时只取到最后一个部门问题:订单执行明细表需求部门打印时只取到最后一个部门解决方案:第一步:在“客户化”“模板管理”“打印模板设置”,修改“自定义变量”,如下图所示:公式为:vdef6->getcolvalue(po_order_b,vdef6,corder_bid,corder_bid)26/31第二步:保存,可看到效果:九、打印页面设置的三种方法方法1:打印-打印设置27/31方法2:打印设置-选项-页面设置方法3:打印-预览-页面设置28/31十、打印-自定义纸张使用说明问题描述:系统中的凭证、各种账的打印可能需要用到非标准纸张,在打印这些纸张时,需要打印机支持这些自定义纸型,尤其是针式打印机,否则可能造成走纸不正常。解决方法:1.在应用服务器操作系统进行自定义纸张设置,见【操作系统自定义纸张设置】2.在客户端操作系统进行自定义纸张设置,见【操作系统自定义纸张设置】3.NC打印设置中进行自定义纸张设置,见【NC打印设置中自定义纸张设置】4.为保证设置生效,请设置后重启中间件、清除客户端缓存后使用。29/31十一、操作系统自定义纸张设置(一)设置机器1.应用服务器操作系统设置打印机自定义纸张2.客户端操作系统设置打印机自定义纸张注意:即使应用服务器没有打印机,也需要进行此设置(二)设置步骤1.在操作系统中,打开“打印机和传真”,不同的操作系统具体名称可能不同。2.在空白位置点右键,或者选择菜单“文件”,选择“服务器属性”30/313.在打印机服务器属性中,如下图所示,输入自定义纸张名称、宽度、高度,设置完后按下“保存格式”按钮,新增的纸张会显示在“所有格式”列表中。31/31(三)NC打印设置中进行自定义纸张设置经过上述步骤即增加了一种打印机支持的纸张。然后在nc中,将相应打印模板的纸张设置为自定义纸张,纸张尺寸和上面设置的尺寸相同。