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

套打.二开案例.自定义记录打印次数

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

套打.二开案例.自定义记录打印次数

【场景】自定义记录打印次数 【案例】采购订单,列表和单据,记录打印次数 <0>对象、单据、模板打印次数表 ```sql --ksql /****** 对象、单据、模板打印次数记录表 ******/ /****** 表结构 ******/ IF NOT EXISTS (SELECT 1 FROM KSQL_USERTABLES WHERE KSQL_TABNAME = 'T_Test_NotePrintRecord') CREATE TABLE T_Test_NotePrintRecord ( FID VARCHAR(36) DEFAULT ' ' NOT NULL, FOBJECTID VARCHAR(50) DEFAULT ' ' NOT NULL, FINTERID VARCHAR(50) DEFAULT ' ' NOT NULL, FTEMPTELAEID NVARCHAR(50) DEFAULT ' ' NOT NULL, FCOUNT INT DEFAULT 0 NOT NULL ); /****** 索引 ******/ IF NOT EXISTS (SELECT 1 FROM KSQL_INDEXES WHERE KSQL_INDNAME = 'IDX_Test_NotePrintRecord') CREATE INDEX IDX_Test_NotePrintRecord ON T_Test_NotePrintRecord ( FOBJECTID, FINTERID, FTEMPTELAEID); /****** 主键 ******/ IF EXISTS (SELECT 1 FROM KSQL_USERTABLES WHERE KSQL_TABNAME = 'T_Test_NotePrintRecord') EXEC p_AlterPK 'PK_Test_NotePrintRecord', 'T_Test_NotePrintRecord', 'FID', '1'; /****** 锁记录 ******/ INSERT T_Test_NotePrintRecord(FID) Values('LOCK') ``` <1>表单插件、列表插件 ![`E7G4ZMFRPLEGAYK0.webp](/download/0100da2bafc0805841269bf8fc6b425792da.webp) ```csharp using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.Metadata; using System; using System.Collections.Generic; using System.Transactions; namespace DynamicFormPlugIn.NotePrint { public class NotePrintRecordHandler { private readonly AbstractDynamicFormPlugIn PlugIn; public NotePrintRecordHandler(AbstractDynamicFormPlugIn plugIn) { PlugIn = plugIn; } public void Execute(BeforeNotePrintEventArgs e) { //<0>把预览界面的打印取消,预览界面的打印目前无法插件干预 e.ShowPreviewButton = false; //<1> 仅针对打印操作记录 if (!IsPrintOp(e.PrintType)) return; var templateBillCntMap = GetPrintBillSet(e, PlugIn.View.BillBusinessInfo); if(!UpdatePrintCount(templateBillCntMap)) { e.Cancel = true; } //<2>如果需要控制次数,可针对不满足的取消打印 //e.Cancel = true; } /// /// 是否打印操作 /// /// <param name="printType"></param> /// <returns></returns> private static bool IsPrintOp(string printType) { if (printType == null) return false; const string print = "print"; const string PrintMerge = "PrintMerge"; if (string.Equals(printType, print, StringComparison.OrdinalIgnoreCase) || string.Equals(printType, PrintMerge, StringComparison.OrdinalIgnoreCase)) return true; return false; } /// /// 获取 模板、单据内码的打印次数 /// /// <param name="e"></param> /// <param name="billBusinessInfo"></param> /// <returns></returns> private static Dictionary<string, Dictionary<string, int>> GetPrintBillSet(BeforeNotePrintEventArgs e, BusinessInfo billBusinessInfo) { string curFormId = billBusinessInfo.GetForm().Id; Dictionary<string, Dictionary<string, int>> templateBillCntMap = new Dictionary<string, Dictionary<string, int>>(); foreach (var printJob in e.PrintJobs) { if (printJob == null || printJob.PrintJobItems == null) continue; //不是当前表单的任务不处理,理论上应该都是相同表单的,但是有可能二开会指向其他表单 if (!string.Equals(printJob.FormId, curFormId)) continue; foreach (var printJobItem in printJob.PrintJobItems) { if (printJobItem == null) continue; //任务中包含单据内码和模板ID,这里只需要记录单据内码 if (!templateBillCntMap.ContainsKey(printJobItem.TemplateId)) { templateBillCntMap[printJobItem.TemplateId] = new Dictionary<string, int>(); } if (!templateBillCntMap[printJobItem.TemplateId].ContainsKey(printJobItem.BillId)) { templateBillCntMap[printJobItem.TemplateId][printJobItem.BillId] = 1; } else { templateBillCntMap[printJobItem.TemplateId][printJobItem.BillId] += 1; } } } return templateBillCntMap; } /// /// 更新模板打印次数 /// /// <param name="templateBillCntMap"></param>

套打.二开案例.自定义记录打印次数

【场景】自定义记录打印次数【案例】采购订单,列表和单据,记录打印次数<0>对象、单据、模板打印次数表```sql--ksql/****** 对象、单据、...
点击下载文档文档为doc格式

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

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