业务流程.常见问题.批号字段的携带和反写

Field:基础资料内码
Field _Text:编码 | | 主档和文本 | 存储编码/文本值
Field:0(即使录入基础资料也不存储内码)
Field _Text:编码/文本值 | | 仅文本 | 存储文本值
Field:0
Field _Text:文本值 |   【步骤1】配置操作调用服务[保存并更新批号主档] [批号主档服务](https://vip.kingdee.com/article/444554826739954944?channel_level=%E9%87%91%E8%9D%B6%E4%BA%91%E7%A4%BE%E5%8C%BA%7C%E6%90%9C%E7%B4%A2%7C%E5%AE%98%E6%96%B9%E7%9F%A5%E8%AF%86&productLineId=1&isKnowledge=2)   最终更新了 主档和文本型 的 内码值 【步骤2】批号字段的字段映射携带  | 上游字段类型 | 下游字段类型 | 映射逻辑 | | -------- | -------- | ----------| | 仅主档 | 仅主档 | 内码和文本| | | 主档和文本| 内码和文本| | | 仅文本| 内码和文本 | | 主档和文本(有内码) | 仅主档 | 内码和文本 | | | 主档和文本| 内码和文本| | | 仅文本| 内码和文本 | | 主档和文本(无内码) | 仅主档 | 空| | | 主档和文本|空 | | | 仅文本| 空| | 仅文本 | 仅主档 |空| | | 主档和文本|空 | | | 仅文本| 空| 字段映射逻辑:仅取决于上游是否有内码,有的话上游有什么携带什么(有文本就携带文本,有内码就携带内码);不关注字段类型 业务场景:如果启用了[保存并更新批号主档],那么就会携带到下游;如果是普通的主档和文本,就无法携带 【步骤3】批号字段的反写  | 下游字段类型 | 上游字段类型 | 映射逻辑 | | -------- | -------- | ----------| | 仅主档 | 仅主档 | 内码和文本| | | 主档和文本| 不支持| | | 仅文本| 不支持 | | 仅文本 | 仅主档 |不支持| | | 主档和文本| 文本| | | 仅文本| 文本| | 主档和文本(无内码) | 仅主档 | 不支持| | | 主档和文本| 文本 | | | 仅文本| 文本| | 主档和文本(有内码) | 仅主档 | 不支持 | | | 主档和文本| 文本| | | 仅文本| 文本 | 反写逻辑: (0)仅主档反写,必须上下游匹配才能反写,反写内码和文本;如果上下游其中一个为仅主档,另外一个不满足,则会反写报错 (1)主档与文本,反写时仅会反写文本; 反写实现的逻辑:根据表达式计算得到反写值,与表达式逻辑一致 | 表达式逻辑 | 批号字段类型 | 计算逻辑 | | -------- | -------- | ----------| | 取值 | 仅主档 | 基础资料数据包结构| | | 仅文本 | 文本| | | 主档与文本(无内码) | 文本| | | 主档与文本(有内码) | 文本|   如果需要针对数据库进行批号字段反写(不关注批号字段的类型),则按照以下逻辑开发处理:    ```csharp using Kingdee.BOS.BusinessEntity.BusinessFlow; using Kingdee.BOS.Core.BusinessFlow.PlugIn; using Kingdee.BOS.Core.BusinessFlow.PlugIn.Args; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Orm.DataEntity; using System.Collections.Generic; namespace DynamicFormPlugIn.WriteBack { [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("反写批号")] public class WriteBackPlugIn_LotField : AbstractBusinessFlowServicePlugIn { /// <summary> /// 是否干预反写 /// </summary> private bool needHandle = false; /// <summary> /// 需要干预的反写规则 /// </summary> private static List<string> HandleRuleIds = new List<string>() { "6fc87432-bef5-4744-bab2-b83ba93357f5" }; /// <summary> /// 下游单 批号字段 /// </summary> private LotField targetLotField; /// <summary> /// 上游单 批号字段 /// </summary> private LotField srcLotField; /// <summary> /// 反写前事件,判断当前反写规则是否需要干预 /// </summary> /// <param name="e"></param> public override void BeforeWriteBack(BeforeWriteBackEventArgs e) { needHandle = false; if (!HandleRuleIds.Contains(e.Rule.Id)) return; targetLotField = this.BusinessInfo.GetField(e.Rule.Formula) as LotField; srcLotField = e.SourceBusinessInfo.GetField(e.Rule.SourceCommitFieldKey) as LotField; if (targetLotField != null && srcLotField != null) { needHandle = true; } } public override void AfterC
业务流程.常见问题.批号字段的携带和反写
【场景】批号字段的携带和反写【步骤0】界面录入的批号字段逻辑[批号字段 同 基础资料文本](https://vip.kingdee.com/article/1277346663...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



