电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

#星空云诊所#:云诊所-星空深入解析套打二开实现所能解决的一些场景

来源:金蝶云社区作者:金蝶2024-09-165

#星空云诊所#:云诊所-星空深入解析套打二开实现所能解决的一些场景

报表及打印是二开中需求最旺盛的,因为几乎每家客户即使标准交互,但报表及打印说不定都会有二开需求,目前有很多开发人员咨询复杂打印的实现,比如有些单据提列表中很多客户希望能打印出相关一些明细内容,有很多如果完全通过配置可能实现不了,那只有通过二开套打插件来实现各种复杂场景,下面就针对套打中如果具体实现进行详细解析,并针对可以干预地方做重点解析,希望能帮助更多开发小伙伴。

一、套打模板一定是针对具体某个要打印的套打模板,套打模板在制作时,数据源需要指向某个单据体,注意打印时需要选择对套打模板。

二、 对于批量打印,注意最好分页,否则预览时可能会出不来。

    1. 打印里分页的实现代码如下:

      

 //单据内码

            //单据内码所有分录内码

            int pageindex = this.View.GetEntryState("F_batchprintlist").CurrentPageIndex;

            int rows = this.View.GetEntryState("F_batchprintlist").PageRows;

           // int pagecount = this.View.Model.GetEntryRowCount("F_batchprintlist") / rows;

            var num = this.View.Model.GetEntryRowCount("F_batchprintlist");//得到记录总数

            var totalPage = 0;

            var pageSize = rows;//一页显示pageSize条记录

            //计算总页数

            if (num / pageSize > Convert.ToInt32(num / pageSize))

            {

                totalPage = Convert.ToInt32(num / pageSize) + 1;

            }

            else

            {

                totalPage = Convert.ToInt32(num / pageSize);

            }

            //当前页数

            var currentPage = pageindex+1;

            //获取当前页第一条、最后一条记录的行号

            int startRow = (currentPage - 1) * pageSize + 1;

            int endRow = currentPage * pageSize;

            endRow = (endRow > num) ? num : endRow;

      2.    批量套打实现具体过程:

             

  List<PrintJob> jobs = new List<PrintJob>();

            for (int i = startRow-1; i < endRow; i++)

            {

                currrecordkey = this.View.Model.GetEntryPKValue("F_batchprintlist", i).ToString();

                PrintJobItem print = new PrintJobItem();

                print.BillId = this.View.Model.GetPKValue().ToString();

                print.FormId = this.View.BillBusinessInfo.GetForm().Id;//业务对象ID

                print.TemplateId = GetSingleNoteID();//套打模板

                List<string> lst = new List<string>();

                lst.Add(currrecordkey);

                print.SelectedEtyIds = lst;

                List<PrintJobItem> printlist = new List<PrintJobItem>();

                printlist.Add(print);


                PrintJob pJob = new PrintJob();

                pJob.Id = Guid.NewGuid().ToString();

                pJob.FormId = this.View.BillBusinessInfo.GetForm().Id;

                pJob.PrintJobItems = printlist;

                jobs.Add(pJob);

            }


            string key = Guid.NewGuid().ToString();

            this.View.Session[key] = jobs;


            JSONObject jsonObj = new JSONObject();

            jsonObj.Put("pageID", this.View.PageId);

            jsonObj.Put("printJobId", key);

            jsonObj.Put("action", "preview");


            string action = JSAction.printPreview;

            jsonObj.Put("printerAddress", "");//可以指定打印机地址也可以不指定.

            this.View.AddAction(action, jsonObj);

         注意:必须要获取套打模板,获取套打模板方法:

       

  /// 获取账表套打设置的模板ID

        /// </summary>

        /// <returns></returns>

        public string GetSingleNoteID()

        {

            var templateID = string.Empty;


            if (this.SettingInfo != null)

            {

                foreach (Dictionary<string, object> obj in this.SettingInfo)

       

#星空云诊所#:云诊所-星空深入解析套打二开实现所能解决的一些场景

报表及打印是二开中需求最旺盛的,因为几乎每家客户即使标准交互,但报表及打印说不定都会有二开需求,目前有很多开发人员咨询复杂打印的实...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信