二开实现单据保存写入批号主档

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

二开实现单据保存写入批号主档

一、【问题背景】:需要批号主档里面增加自定义字段,做单据的时候把自定义字段写进批号主档,出入库单选批号时将批号主档自定义字段带出来


二、【说明】

1、单据在"保存"操作中配置有"保存并更新批号主档"服务,该通用服务无法修改,只能二开保存插件写入数据

2、按照服务的执行顺序,保存操作先执行"保存并更新批号主档"服务,后执行保存插件中的逻辑,在插件中可以拿到保存的批号内码,以此作为更新的条件


三、【二开实现】:这里以"其他入库单"为例,说明具体的二开过程

1、扩展其他入库单表头,添加"批号备注"文本字段

扩展其他入库单批号备注.webp


2、扩展"批号主档"表头,添加"备注"文本字段

扩展批号主档备注字段.webp



3、添加"保存"操作服务端插件,获取到单据的"批号备注信息"及单据体分录的批号,更新写入批号主档,代码逻辑参考附件

其他入库单保存配置插件.webp


【实现效果】

保存其他入库单_含批号及备注信息.webp


批号主档备注.webp


4、将批号主档中的自定义字段携带到出库单上

import clr
clr.AddReference('Kingdee.BOS.ServiceHelper')
from Kingdee.BOS.ServiceHelper import * 
from System import StringComparison
def DataChanged(e):
    if e.Field.Key.Equals("FLot", StringComparison.OrdinalIgnoreCase):
        orgId = 0
        materialId = 0
        lot = this.View.Model.GetValue("FLot", e.Row)
        stockOrgObj = this.View.Model.GetValue("FStockOrgId")
        if stockOrgObj is not None:
            orgId = str(stockOrgObj["Id"])
        matObj = this.View.Model.GetValue("FMaterialId", e.Row)
        if matObj is not None:
            materialId = str(matObj["msterId"])
        sqlText = "SELECT FLOTNOTE FROM T_BD_LOTMASTER WHERE FBIZTYPE='1' AND FLOTSTATUS <> '2' AND FNUMBER = '" + str(lot) + "' AND FMATERIALID = " + str(materialId) + " AND FUSEORGID = " + str(orgId)
        dyObjs = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlText)
        if dyObjs.Count > 0:
            for item in dyObjs:
                this.View.Model.SetValue("FEntryNote", item["FNOTETEXT"], e.Row)
        else:
            this.View.Model.SetValue("FEntryNote", "", e.Row)

表单插件.webp


说明:

系统预置的保存更新批号主档的服务不支持批号添加自定义字段,主要原因可能是:

1、批号主档预置的字段可以理解为后续为相关的业务逻辑服务(类似于即时库存的维度),批号主档并不会去预置涵盖各种字段(比如采购入库单中的采购价格),该服务为通用服务,可能配置在不同的业务单据(如:生产入库、采购入库、其他入库等), 动态扩展的二开字段在配置阶段无法进行获取配置

image.webp

MiscellaneousSaveExt.rar


保存操作的几个处理方法, before、 begin 、end 、after、都试过更新批号,但都不成功。保存并更新批号】也放在操作的服务端服务里, 由此推断,批号生成、更新 是在保存操作完成之后,再执行的,产生成内码反写到业务单据上。处理方案:配置一个更新批号的空操作,放在【保存】之后, 或者写个服务,放在【保存并更新批号】后面


老师,请问怎么把分录明细的自定义字段写入到批号主档呢


目前7.7版本 程序集和bin目录都找不到 system.transactions,想问下去哪里找 或者是不是新版本要引用其他的


using System.Transactions;

找不到对应程序,请问这个需要引用哪一个dell


感谢分享!

二开实现单据保存写入批号主档

一、【问题背景】:需要批号主档里面增加自定义字段,做单据的时候把自定义字段写进批号主档,出入库单选批号时将批号主档自定义字段带出来...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息