分享表单分录上移下移调整分录顺序

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

分享表单分录上移下移调整分录顺序

在处理表单时,调整分录的顺序可能是一个常见的需求。通过合理地安排分录的顺序,可以提高工作效率、减少错误,并使表单更易于阅读和理解。本文将分享一些实用的方法,介绍如何使用上移和下移调整表单分录的顺序。(系统也内置了按规则重置分录顺序的操作,有兴趣的可以搜索一下) 直接上代码 ```python import clr clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.OrmEngine") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.K3.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("System.Core") from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from Kingdee.BOS.Core.Metadata.EntityElement import * from Kingdee.BOS.Util import * from Kingdee.K3.Core.MFG.EntityHelper import DataEntityExtend,SysBclExtend from Kingdee.BOS.Orm.DataEntity import DynamicObject,DynamicObjectCollection from System.Collections.Generic import * from System.ComponentModel import * from System.Linq import * def EntryBarItemClick(e): if e.BarItemKey == "tbMoveUp": ExchangeEntryRow(isMoveUp=True) elif e.BarItemKey == "tbMoveDown": ExchangeEntryRow(isMoveUp=False) else: pass def ExchangeEntryRow(isMoveUp): entryEntity = this.View.BusinessInfo.GetEntryEntity("FDetailEntity") entityDataObject = this.View.Model.GetEntityDataObject(entryEntity) dictionary = {} for r in entityDataObject: if r["Seq"] > 0: if r["Seq"] in dictionary: dictionary[r["Seq"]].append(r) else: dictionary[r["Seq"]] = [r] if len(dictionary) == 0: return selectedRows = this.View.GetControl[EntryGrid](entryEntity.Key).GetSelectedRows(); dynamicObjectItemValue = entityDataObject[selectedRows[0]]["Seq"] num = dynamicObjectItemValue - 1 if isMoveUp else dynamicObjectItemValue + 1 if num < 1 or num > len(dictionary): return value = dictionary.get(dynamicObjectItemValue) value2 = dictionary.get(num) if value == None or value2 == None: return for item in value: this.View.Model.DeleteEntryRow("FDetailEntity", entityDataObject.IndexOf(item)) dynamicObject = value[0] num2 = 0 num3 = len(value2) for i in range(num3): dynamicObject2 = value2[i] dynamicObject2["Seq"] = dynamicObjectItemValue num4 = entityDataObject.IndexOf(dynamicObject2) if i == 0: num2 = num4 elif isMoveUp: if num4 < num2: num2 = num4 elif num4 > num2: num2 = num4 num2 = num2 if isMoveUp else num2 + 1 dynamicObject3 = next((w for w in value if str(w["ParentRowId"]) == ""), None) for item2 in value: item2["Seq"] = num if dynamicObject3 != item2: this.View.Model.CreateNewEntryRow(entryEntity, num2, item2) if dynamicObject3 != None: this.View.Model.CreateNewEntryRow(entryEntity, num2, dynamicObject3) this.View.UpdateView("FDetailEntity") this.View.SetEntityFocusRow("FDetailEntity", num2) ``` 代码中FDetailEntity,Seq 根据自身表单修改。 使用方法:BOS平台进入表单分录,菜单列表 添加tbMoveUp,tbMoveDown两个按钮,分别命名上移,下移。在表单插件注册python插件 粘贴上面代码。 ![image.webp](/download/01002b4c89e83bd04dec9ea1b7c822554acf.webp)

采购入库单添加这两个按钮,操作上移下移的分录行会丢失源单类型、源单编号等关联信息,怎么破?


你好,代码中FDetailEntity,Seq 根据自身表单修改,要改成什么内容哇(小白非开发不太懂)

分享表单分录上移下移调整分录顺序

在处理表单时,调整分录的顺序可能是一个常见的需求。通过合理地安排分录的顺序,可以提高工作效率、减少错误,并使表单更易于阅读和理解。...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息