环思产品论坛

标题: 如何在环思软件中实现单据自动打印 [打印本页]

作者: mengxiangduo    时间: 2014-12-31 14:07
标题: 如何在环思软件中实现单据自动打印
本帖最后由 mengxiangduo 于 2014-12-31 16:05 编辑

原理:通过刷新“打印任务表”中的任务,来实现单据的打印,打印到某台打印机,需要报表设计时,进行指定。
1、通过TIIP的“自动打印任务”模块(需要运行TIIP后,启动开始打印),与“打印服务”同用时,此模块只用来设计报表和指定打印机。
2、通过“打印控制台程序”,配置后,无需启动TIIP,即可随Windows自动启动,刷新打印任务。

单据自动打印配置步骤:
一、创建表:
1、打印任务表:pbBillReportTask.sql
2、打印历史表:pbBillReportHistory.sql

二、升级插件【29703】自动打印任务到数据库:(当前所属于产品ID为:11)
菜单、及相应脚本,可以DIP中打包生成,此模块在TIIP中,主要用来设计报表和指定打印机。


三、注册任务接口过程:EXEC dbo.sppbRegisterBillReportTask
@sBillNo NVARCHAR(25)  --单据号
,@iBillTypeId INT      --单据类型ID
,@sCreator NVARCHAR(20)  --创建人
,@sPrintName NVARCHAR(100) =NULL  --指定打印机名称
,@sFileName NVARCHAR(1000) =NULL  --指定打印某个文件名(带上路径)
,@sReportSQL NTEXT =NULL  --指定报表SQL
,@upbReportFormatDtlGUID UNIQUEIDENTIFIER = NULL  --指定报表格式
,@iQtyINT = 1  -- 指定打印份数


四、找台电脑或服务器,来注册打印服务,并执行打印。
1、打印服务程序:ReportSer.exe,后台运行。
2、打印控制程序:ReportConsole.exe, 前台运行,通过些模块配置服务,依次配置即可。
3、当配置完成后,“未知”按钮,会变成“开始”,点“开始”即自动执行打印任务的刷新,“停止”则不执行打印任务。


其他说明:
1.通过表的pbBillType.iIden字段来注册单据,即单据类型ID.(Generate Iden的表及过程,另行下载.)
2.注册任务如:EXEC sppbRegisterBillReportTask @sBillNo,@iBillTypeID,@sCreator
3.打开“自动打印任务”,可以刷新出注册的单据,在此通过单据号来画报表(SQL自行写在报表中)。
4.需要点“开始打印”,按钮才会执行打印,后面是刷新单据的时间间隔。
5.不需要打印的,可以通过 “自动打印管理” 删除。
6.报表中,指定打印机的方法:(与安装的打印机名称对应即可,装打印机命名时:可以是IP地址,可以是1#,2#随意.)
begin
  if SameText(<Label."sEquipmentNo">,'01') then
    begin
      Report.PrintOptions.Printer := '192.168.5.160';
      Report.SelectPrinter;         
    end
    else if SameText(<Label."sEquipmentNo">,'02') then
    begin
      Report.PrintOptions.Printer := '\\192.168.5.103\HS-701';
      Report.SelectPrinter;                                                        
    end;   
end.

7.如需对现有的单据模块,为每个单据号设定一个报表格式,可以在DELPHI单据模块中,引有pbReportTaskMenuUnt单元,放置一个按钮来注册报表格式,需要创建表(pbBillReportDefine.sql):
例://有传入报表的单据类型ID时
if trim(sRegisteReportBillTypeID) <> '' then
  btnRegisteReport.DropDownMenu := TpbReportTaskMenu.ResultTaskMenu(Self, sRegisteReportBillTypeID, GetBillNo, 0)
else
  btnRegisteReport.DropDownMenu := TpbReportTaskMenu.ResultTaskMenu(Self, '1004', GetBillNo, 0);


作者: mengxiangduo    时间: 2016-4-14 14:03
推荐在注册打印时,直接通过条件得到打印机名,在Exec dbo.sppbRegisterBillReportTask注册时带入,不在要报表代码中写。




欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) Powered by Discuz! X3.2