分享表单分录上移下移调整分录顺序
在处理表单时,调整分录的顺序可能是一个常见的需求。通过合理地安排分录的顺序,可以提高工作效率、减少错误,并使表单更易于阅读和理解。本文将分享一些实用的方法,介绍如何使用上移和下移调整表单分录的顺序。(系统也内置了按规则重置分录顺序的操作,有兴趣的可以搜索一下)
直接上代码
```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 根据自身表单修改,要改成什么内容哇(小白非开发不太懂)
分享表单分录上移下移调整分录顺序
在处理表单时,调整分录的顺序可能是一个常见的需求。通过合理地安排分录的顺序,可以提高工作效率、减少错误,并使表单更易于阅读和理解。...
点击下载文档
本文2024-09-16 18:31:12发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-22671.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章