表单插件干预导入基础资料取数

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

表单插件干预导入基础资料取数

# 1 前言 导入过程将触发单据的表单插件,可以通过注册表单插件的方式来干预导入的基础资料字段取数。 # 2 业务场景 在导入基础资料类型的数据时,需要根据内码、编码或名称来获取到唯一的基础资料数据。但是当根据编码或名称查到多个结果时,这条数据就会导入失败,可以通过表单插件进行干预需要导入的基础资料。 # 3 实现方案 在表单设计器中注册插件继承表单插件基类kd.bos.entity.plugin.AbstractDataModelPlugin后重写queryImportBasedata()方法,设置正确的id即可。 ## 代码示例 ``` /** * 自定义导入的基础资料 * 例:某张单据存在一个为“物料”的基础资料,在导入时根据物料的名称得到多条数据,筛选出符合自定义条件的数据(以筛选电风扇为例) **/ public class CustomizeBaseDataImport extends AbstractBillPlugIn { public static final String MATERIEL = "materielfield"; @Override public void queryImportBasedata(QueryImportBasedataEventArgs e) { Map<BasedataItem, List<Object>> searchResult = e.getSearchResult(); for (Map.Entry<BasedataItem, List<Object>> baseDataItemListEntry : searchResult.entrySet()) { BasedataItem basedataItem = baseDataItemListEntry.getKey(); if (basedataItem.getFieldKey().equals(MATERIEL)) {//判断当前基础资料是否为 物料 //遍历物料的内码,根据内码拿到物料的数据包,选择长度为 20 的 电风扇 for (int i = 0;i < baseDataItemListEntry.getValue().size();i++){ DynamicObject dyn = BusinessDataServiceHelper.loadSingle(baseDataItemListEntry.getValue().get(i), basedataItem.getEntityNumber()); if(dyn.getLong("length") == 20){ baseDataItemListEntry.setValue(Collections.singletonList(baseDataItemListEntry.getValue().get(i)));//设置物料id } } } } } } ``` ## 插件注册 ![1.webp](/download/0100cf200c6aabca4469829ba31f7bad86b7.webp) ## 效果展示 **需要导入的数据:** ![2.webp](/download/0100cb26823f32e644c687c0f32236026018.webp) **物料名称为“电风扇”的数据:** ![3.webp](/download/0100a001dc231480483da16b69c2ecd84b0a.webp) **未设置插件时导入结果:** ![4.webp](/download/0100f09ac7bf58e14a7e86978db15de820ca.webp) **设置插件后导入结果:** ![5.webp](/download/0100ff2f15fb8c924d82a20b4adbe419bc90.webp)

表单插件干预导入基础资料取数

# 1 前言导入过程将触发单据的表单插件,可以通过注册表单插件的方式来干预导入的基础资料字段取数。# 2 业务场景在导入基础资料类型的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息