症状:EAS从低版本升级到高版本的时候,DEP增加的字段在单据编辑界面消失了,但是在动态扩展平台的控件树上还可以看到该控件。原因:经过分析,发现该控件的一个关键属性constraint消失了。导致添加到主面板的时候报空指针错误。可以去客户端日志寻找错误堆栈如下:ava.lang.NullPointerExceptionatjava.awt.Component.setBounds(Component.java:2250)atcom.kingdee.eas.ep.client.runtime.UISegmentAssembler.addToParent(UISegmentAssembler.java:592)atcom.kingdee.eas.ep.client.runtime.UISegmentAssembler.createComponent(UISegmentAssembler.java:518)atcom.kingdee.eas.ep.client.runtime.UISegmentAssembler.createComponents(UISegmentAssembler.java:239)atcom.kingdee.eas.ep.client.runtime.UISegmentAssembler.doCreate(UISegmentAssembler.java:221)atcom.kingdee.eas.ep.client.runtime.DynamicExtendService.afterInitLayout(DynamicExtendService.java:42)atcom.kingdee.eas.framework.client.NewUILifeCycleHander.fireAfterInitLayout(NewUILifeCycleHander.java:124)atcom.kingdee.eas.framework.client.CoreUI.initLayout(CoreUI.java:1682)atcom.kingdee.eas.base.uiframe.client.UIFactoryHelper.initUIObject(UIFactoryHelper.java:246)atcom.kingdee.eas.base.uiframe.client.UINewTabFactory.create(UINewTabFactory.java:110)atcom.kingdee.eas.base.uiframe.client.MainMenuTree.innerCreateUI(MainMenuTree.java:384)atcom.kingdee.eas.base.uiframe.client.MainMenuTree.passCreateUI(MainMenuTree.java:402)atcom.kingdee.eas.base.uiframe.client.MainMenuTree.createUI(MainMenuTree.java:291)atcom.kingdee.eas.base.uiframe.client.MainMenuTree.showUI(MainMenuTree.java:255)atcom.kingdee.eas.base.uiframe.client.MainMenuTree.showUI(MainMenuTree.java:302)atcom.kingdee.eas.base.uiframe.client.MenuVisitorHelper.showUIbyMenu(MenuVisitorHelper.java:212)atcom.kingdee.eas.base.myeas.client.ShortCodeSearchUI.performSearch(ShortCodeSearchUI.java:194)atcom.kingdee.eas.base.myeas.client.ShortCodeSearchUI$ListMouseAdapter.mouseClicked(ShortCodeSearchUI.java:340)atjava.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)atjava.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:252)atjava.awt.Component.processMouseEvent(Component.java:6270)atjavax.swing.JComponent.processMouseEvent(JComponent.java:3267)atjava.awt.Component.processEvent(Component.java:6032)atjava.awt.Container.processEvent(Container.java:2041)atjava.awt.Component.dispatchEventImpl(Component.java:4630)atjava.awt.Container.dispatchEventImpl(Container.java:2099)atjava.awt.Component.dispatchEvent(Component.java:4460)atjava.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)atjava.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)atjava.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)atjava.awt.Container.dispatchEventImpl(Container.java:2085)atjava.awt.Window.dispatchEventImpl(Window.java:2478)atjava.awt.Component.dispatchEvent(Component.java:4460)atjava.awt.EventQueue.dispatchEvent(EventQueue.java:599)atcom.kingdee.bos.invokecounter.RPCLogEventQueue.dispatchEvent(RPCLogEventQueue.java:176)atsun.reflect.GeneratedMethodAccessor23.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atcom.kingdee.eas.client.recorder.UserInputEventQueue.myDispatchEvent(UserInputEventQueue.java:126)atcom.kingdee.eas.client.recorder.UserInputEventQueue.dispatchEvent(UserInputEventQueue.java:59)atjava.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)atjava.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)atjava.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)atjava.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)atjava.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)atjava.awt.EventDispatchThread.run(EventDispatchThread.java:122)解决办法:给这个控件加上constraint属性。Step1:把这个方案导出来,解压缩。找到其中的T_con_DynamicMetaData文件夹。如图1:图1Step2:寻找这个单据编辑界面所对应的元数据片段,用记事本或者nodepad++打开这几个Fsegment开头的文件。找到其中有XXXXXXXEditUI的这个文件,如图2:图2Step3:找到我们的动态字段。用ctrl+F的方法,找到我们的动态字段所在的地方。万幸这个字段就在眼前。如图3:注意,要寻找true的,配置文件又两个地方,一个是字段本身的控件,另外一个是标签控件,用来放字段名和字段控件。图3Step4:在true下面加上属性13.152.270.19.0,保存后用这个文件替换解决方案的jar包里面对应的文件。这个位置是一个比较普通的位置。Step5:删除原来的方案,导入我们的新方案。即可以在编辑界面看到消失的控件。调整位置再保存即可。