# 题外话
Hi,我正在参加金蝶云社区2023年度创见者盛典。点击链接,参与投票,赢华为平板电脑和投影仪吧!
[点击直达](https://wenku.my7c.com/link/s/l04wJ)
搬运来源(C#版本):[插件事件示例代码 - OnSetBusinessInfo、OnSetLayoutInfo事件](https://wenku.my7c.com/article/20914?productLineId=1)
# 记录一下代码
``` PYTHON
#插件: 动态设置单据体列的录入顺序
#作者: 老李头(Dean)
import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Core")
from System import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.App.Data import *
#处理外观元数据
def OnSetLayoutInfo(e):
metadata = ObjectUtils.CreateCopy(this.View.OpenParameter.FormMetaData);
_BusinessInfo = metadata .BusinessInfo;
_LayoutInfo = metadata .GetLayoutInfo();
#取数量字段的外观布局对象,尺码需仿照数量外观
qtyFldApp = _LayoutInfo.GetFieldAppearance("FQty");
#取物料明细表格外观布局对象
entryApp = _LayoutInfo.GetEntityAppearance(qtyFldApp.EntityKey);
#设置字段的录入顺序
qtyFldApp.Tabindex = 1;
#对表格中的字段,重新按照TabIndex进行排序
entryApp.Layoutinfo.Sort();
#重新构建各列,以便把新加入的尺码列,也加入到表格控件中
grid = this.View.GetControl("FPOOrderEntry");
grid.SetCustomPropertyValue("AllowLayoutSetting", False);
grid.CreateDyanmicList(_LayoutInfo.GetEntityAppearance("FPOOrderEntry"));
this.View.SendDynamicFormAction(this.View);
```
# 部署
![image.webp](/download/0100eb86528cf4a74a188f20615d07c68d78.webp)
# 效果
![image.webp](/download/01003327c7232cec411bb7376de90ec8e8a5.webp)
我有一个存储了需要调整单据体字段顺序的列表。
我想将这些字段按列表里的顺序重新调整显示顺序。
我试了下,没成功,能否指导下,谢谢。
[code]
#处理外观元数据
def OnSetLayoutInfo(e):
global colList
if colList is None:
this.View.ShowMessage("colList is null")
metadata = ObjectUtils.CreateCopy(this.View.OpenParameter.FormMetaData);
_BusinessInfo = metadata .BusinessInfo;
_LayoutInfo = metadata .GetLayoutInfo();
colFldApp = _LayoutInfo.GetFieldAppearance("FQty")
entryApp = _LayoutInfo.GetEntityAppearance(colFldApp.EntityKey)
i=0
for col in colList:
this.View.GetControl(col).Tabindex = 25+i;
entryApp.Layoutinfo.Sort();
i=i+1
grid = this.View.GetControl("FEntity");
grid.SetCustomPropertyValue("AllowLayoutSetting", False);
grid.CreateDyanmicList(_LayoutInfo.GetEntityAppearance("FEntity"));
this.View.SendDynamicFormAction(this.View);
[/code]