代码修改元数据(批量关闭快捷新增)原创
金蝶云社区-周立思
周立思
2人赞赏了该文章 178次浏览 未经作者许可,禁止转载编辑于2024年10月18日 12:28:47


需求

关闭基础资料快捷新增

思路

  1. 基础资料快捷新增 QuickAddNew 默认 true

  2. 快捷新增属性是页面元数据,在 FieldAp.createEditor() 源码中判断如下:

  3. if (!this.isQuickAddNew() || this.field instanceof BillTypeField) {
        editor.put("qan", false);
    }
  4. 因为默认为 true,所以页面元数据 xml 中需要 <QuickAddNew>false</QuickAddNew> 才会关闭快捷新增

实现步骤

修改设计元数据

String id = "页面标识";
String entityId = MetadataDao.getIdByNumber(id, MetaCategory.Entity);
//读取实体元数据,需要注意是 readMeta 方法,不是读取运行时元数据
EntityMetadata entityMetadata = (EntityMetadata) MetadataDao.readMeta(entityId, MetaCategory.Entity);
List<EntityItem<?>> items = entityMetadata.getItems();
List<String> basedataFields = new ArrayList<>();
items.forEach(e -> {
    if ("BasedataField".equals(e.getClass().getSimpleName())) {
        basedataFields.add(e.getKey());
    }
});

String formId = MetadataDao.getIdByNumber(id, MetaCategory.Form);
//读取页面元数据,需要注意是 readMeta 方法,不是读取运行时元数据
FormMetadata formMetadata = (FormMetadata) MetadataDao.readMeta(formId, MetaCategory.Form);
List<ControlAp<?>> controlAps = formMetadata.getItems();
controlAps.forEach(e -> {
    if (e instanceof FieldAp) {
        if (basedataFields.contains(e.getKey())) {
        //关闭快捷新增
            ((FieldAp) e).setQuickAddNew(false);
        }
    }
});
//保存页面元数据
MetadataWriter metadataWriter = new MetadataWriter(formMetadata.getModelType());
Map<String, Object> result = metadataWriter.save(formMetadata);
if (result != null) {

}

重建元数据

  1. 苍穹访问地址 + /metadata/rebuild.do?formId=表单标识

  2. 重建全部:苍穹访问地址 + /metadata/rebuildAll.do?force=true

参考资料

  1. 查看运行时元数据: https://vip.kingdee.com/link/s/ln2JO 

  2. 元数据image.png

  3. 如何查看快捷新增属性对应 QuickAddNew ,鼠标指针在标题停留 image.png

  4. 如何查看元素属性 QuickAddNew:bos-metadata-*.jar/FormItemProperty.xml  <Style Id="QuickAddNewProperty"> 如下:

  5. <Style Id="QuickAddNewProperty">
        <PropertyName>QuickAddNew</PropertyName>
        <Name>快捷新增</Name>
        <Description>基础资料/单据模糊查询无记录时显示快捷新增按钮</Description>
        <Editor>{"type":"checkbox","default":true}</Editor>
        <Hide>{"types": ["FieldAp", "EntryFieldAp","FlatFieldAp","CardEntryFieldAp"], "fieldTypes":["BasedataField","AssistantField","MaterielField","CurrencyField","UnitField","UserField","OrgField","MulBasedataField","AccountField","ItemClassField","GroupField","ParentBasedataField","RefBillField","MulHisModelBasedataField","HisModelBasedataField"], "hide":false}</Hide>
           <GroupId>3</GroupId>
           <GroupSubSeq>541</GroupSubSeq>
    </Style>
图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!