PLM.二开案例,自定义调整BOM变更字段(PT-151002及以往版本适用)

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

PLM.二开案例,自定义调整BOM变更字段(PT-151002及以往版本适用)

【应用场景】

设计变更单BOM变更界面字段需自定义调整


* 补丁版本PT-151005 [8.2.0.20231109]中已新增支持BOM变更界面用户列配置,可以不再需要此开发方案



【实现说明】

BOM变更界面字段为动态加载,字段按默认顺序加载,暂时无法通过配置调整或适用用户布局方案。如果需要自定义调整字段布局,需要通过插件二开实现。


实现原理:

标准插件在页面渲染前动态加载了配置列,需要再调整需要通过继承标准插件重写OnSetLayoutInfo方法,在已动态渲染的列信息上再次调整并刷新页面显示。



【实现步骤】

<1>编写表单插件,继承标准的BOM变更插件StructureChangeForm。 


你可能需要引用以下组件:


示例代码:

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.K3.PLM.STD.Business.PlugIn.EngineeringChange;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ISV.EChangeForm.Common.BusinessEntity
{

    public class EChangeForm: StructureChangeForm
    {
        private Dictionary<string, int> CustomIndex = new Dictionary<string, int>()
        {
            {"FIsSelect",0},
            {"FItemType",1},
            {"FBomObject",2},
            {"FBomName",3},
            {"FSyncErpMode",4},
            {"FSyncErpTime",5},
            {"FSlaveEntrySeq",6},
            {"FSlaveMat",7},
            {"FSlave_FName",8},
            {"FSlave_FSpecification",9},
            {"FSlave_FModel",10},
            {"FSlave_FBASEUNITID",11},
            {"FBOMNUMBER",12},
            {"FSubBom",13},
            {"FRadix",14},
            {"FWaste",15},
            {"FSUBEFFECTIVEDATE",16},
            {"FSUBEXPIRYDATE",17},
            {"FISSKIP",18},
            {"FMATERIALTYPE",19},
            {"FIsKeyItem",20},
            {"FReplacePolicy",21},
            {"FReplacePriority",22},
            {"FReplaceType",23},
            {"FMRPPriority",24},
            {"FNetDemandrate",25},
            {"FSubstituteCode",26},
            {"FSubstituteName",27},
            {"FAsssemblyPosition",28},
            {"FAddPOS_FAsssemblyPosition",29},
            {"FDelPOS_FAsssemblyPosition",30},
            {"FTempPOS_FAsssemblyPosition",31},
            {"FMainMat",32},
            {"FMain_FName",33},
            {"FMain_FBASEUNITID",34}
        };

        public override void OnSetLayoutInfo(SetLayoutInfoArgs e)
        {
            base.OnSetLayoutInfo(e); //调用Base 获取标准动态加载的动态列Layout
            LayoutInfo _layoutInfo = e.LayoutInfo;

            //* 原理:通过调整LayoutInfo自定义字段展示 
            //* 注意:标准插件中未对TabInde进行规整,默认按照动态列集合赋予顺序。
            //       如果需要二开调整,请完整考虑所有可见字段的顺序,而非单独调整某个字段
            //       本示例中简单的硬编码了测试系统中所有字段编码与索引,请根据各自系统的业务与字段配置自行调整。
            EntityAppearance listAppearance = _layoutInfo.GetEntityAppearance(strentity);
            foreach (var listApp in listAppearance.Entity.Fields)
            {
                var app = _layoutInfo.GetFieldAppearance(listApp.Key);
                if (CustomIndex.ContainsKey(listApp.Key))
                {
                    app.Tabindex = CustomIndex[listApp.Key];
                }
            }
           
            listAppearance.Layoutinfo.Sort(); //根据索引排序
           
            //动态更新显示
            EntryGrid grid = this.View.GetControl<EntryGrid>(strentity);
            grid.SetAllowLayoutSetting(false);
            grid.CreateDyanmicList(listAppearance, new Dictionary<object, object>() { { "primaryKey", "FROWID" } });
            this.View.SendDynamicFormAction(this.View);
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

<3>BOSIDE扩展应BOM变更单,注册二开插件并取消标准插件,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,验证结果


【参考资料】

【汇总】星空PLM二开指南(持续更新...) (kingdee.com)



PLM.二开案例,自定义调整BOM变更字段(PT-151002及以往版本适用)

【应用场景】设计变更单BOM变更界面字段需自定义调整* 补丁版本PT-151005 [8.2.0.20231109]中已新增支持BOM变更界面用户列配置,可以不再...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息