导入数据常见问题汇总
说明:
本汇总贴根据各项目顾问、实施老师和客户老师反馈问题持续更新。
1. 导入数据是如何分批执行的?
答:参考文档《导入过程中分批执行策略说明》
2. 为什么Excel中单头的编码填写的是同一个,导入时错误信息为单据编码重复,什么情况下才能识别为同一张单据?
答:当模板的A2单元格不包含SplitEntry参数时,如果相邻两行单据单头数据存在,单头的字段需要完全一致才会视作是同一张单据。
3. 基础资料字段导入失败的原因是什么?
答:参考文档《基础资料字段导入失败分析》
4. 导入基础资料字段提示在系统中不存在或者没有使用权限的原因是什么?
答:参考文档《导入基础资料提示信息分析方案说明》
5. 导入校验基础资料开关未打开,依旧能导入基础数据的原因是什么?
答:基础资料没有设置组织隔离,导入数据只按编码/名称查询匹配字段导入 。
6. 受控基础资料A包含一个受控基础资料B字段,导入A时,为什么未按照组织隔离策略判断B基础资料的使用权限?
答:可能的原因:
1)5.0版本路径: 配置工具-系统参数-公共参数-引入参数配置-【引入数据时校验基础资料权限】未开启
6.0版本路径: 公共设置-系统参数-公共参数-引入参数配置-【引入数据时校验基础资料权限】未开启
6.0以上版本路径:公共设置-系统参数-公共参数-导入参数配置-【导入数据时校验基础资料权限】未开启
2) 基础资料A未配置主业务组织
3) 基础资料B设置了使用组织(当前设置使用组织会导致导入时管控策略失效,修复版本正在测试中)
解决方案:
请先确认基础资料A及其引用的基础资料字段B是否均在管控策略中。
如确定,请将基础资料A设置主业务组织,且将基础资料B的使用组织移除(后续版本更新后可正常使用)。
7. 使用列表布局时,为什么导入过程中获取的单据标识是布局中单据的标识而不是布局的标识?
答:导入过程中,单据标识是通过当前页面pageId初始化FormView对象获取的。如需使用布局的标识,请在导入插件BatchImportPlugin中重写getBillFormId方法。
8. 导入弹窗提示“导入异常“,错误信息包含“NotOfficeXmlFileException”关键字样是什么原因?
答:请检查当前环境是否存在office加密软件,默认将Excel文件进行了加密(大部分客户内网安全软件可能存在此策略),一般而言,加密后的文件坐下角存在加锁小图标。
9. 辅助资料导入为什么提示权限异常或未查询到对应辅助资料?
答:请检查在单据设计器中给辅助资料字段设置的辅助资料类别是否正确。
10. 导入时Excel填写的组织是A,为什么导入失败,提示组织B不存在?
答:表单插件重写了afterCreateNewData方法,该方法将组织A替换成组织B,如上面所述,导入是模拟保存,在导入过程中会模拟创建单据实体,触发该方法。建议按照实际业务场景判断导入是否需要进入该方法(BillModel.isFromImport)。
11. 为什么整个环境的导入导出不可用?
答:检查monitor中容器appids配置,是否存在独立部署的导入导出节点imp-exp 且节点存在问题。
12. 预置的模板总有一些奇怪的问题,例如:打开为什么会报错?是否必录开关为什么没有开启?等等问题
答:检查预置模板的数据是否有问题,是否参照平台生成的模板数据来预置的,有没有严格按先单据头,再单据体,最后再子单据体的顺序去排列模板等等。
13. 更新导入时,提示“数据替换规则唯一值存在重复数据”是什么原因?如何解决?
答:
1)原因:
提示“数据替换规则唯一值存在重复数据”的原因是根据匹配字段找到多条数据,系统不知道更新哪条数据,
2)有两种方法可以解决:
方法一:打开导入模板的内码是否导入按钮,然后使用这个导入模板导入数据,更新导入时,数据替换唯一值选择内码;
方法二:数据替换唯一值增加一个字段名,是的匹配的数据值只能找到一条对应数据,例如选择字段名是公司+产地,列表已有数据中公司+产品的字段值为金蝶+深圳的数据只有一条时,就能导入,若数据中的值包含多条重复数据,建议采用方法一,确保系统找到精准的数据导入。
14. 在单据列表界面做导入或导出时,弹出的选择模板界面看不到预置导入导出模板的原因是什么?
答:出现这种问题的原因是在模板选择界面加载模板时,通过过滤条件匹配模板数据时,没有匹配到预置模板。要通过以下几点进行排查:
1)模板对应的业务对象是否符合当前单据;
2)模板的类型是否符合当前操作类型;例:“按导入模板导出”的操作打开的选择模板弹弹窗中的模板类型都是导入模板。
3)检查模板的使用状态是否为可用,禁用和未设置使用状态的模板会被过滤掉;
4)检查模板的适用范围是否为当前用户可用;
5)检查当前用户是否在当前组织下是否设置了相关的数据规则;
15. 在导入时,① Excel文件中只录入了单据体数据没有录入单据头数据,无法导入数据;② Excel文件中录入了单据头数据,但是单据体中存在空行,空行下面的单据体数据也无法导入的原因是什么?
答:不录入单据头数据,只录入单据体数据,认为是一个无效的单据。父单据体字段不录入数据,子单据体录入数据,认为是一个无效的单据体,所以无法导入。单据头、单据体、子单据体都是有对应关系的,录入单据体数据必须要录入单据头数据。
16. 导入模板中的导入参数是什么?具体是怎么使用的?
答:参考文档《导入模板参数说明》
17. 导入时如果单据体是树形单据体,如何做到生成的id是带层次的呢 ?后台需要怎么做?导入模板又需要做哪些配置?
答:树形单据体的每一行都会有自己的id和pid(父行的id)用这种记录方式表示层级关系。模板中正常配置树形单据体字段的打开导入开关,导入之前需要把id和pid生成并写到excel文件再导入。如果不录入id和pid的话,就会被认为是同一级别的单据体行,不会有层级区分。
18. 更新导入时的选择内码作为匹配唯一值是如何使用的?
答:内码是指单据的唯一标识,一张单据只有一个内码。单据体也存在内码,但是不能作为单据的唯一标识,因为一张单据可以存在多个单据体数据。所以在匹配时会按照单据的内码作为匹配条件来更新数据。具体操作步骤可参考文档《添加新数据、更新已有数据、更新已有数据并添加新数据使用说明》
19. 单据导入如何调整导入的分录数限制?
答:5.0版本路径:【配置工具】→【参数配置】→【单据参数】→【引入引出参数配置】→【引入分录限制】
6.0版本路径:【公共设置】→【参数配置】→【单据参数】→【引入引出参数配置】→【引入分录限制】
6.0以上版本路径:【公共设置】→【参数配置】→【单据参数】→【导入导出参数配置】→【导入分录限制】
注:此处的分录数是单据中所有分录及其子分录的累加值。
20. 如何处理导入导出提示堆栈报错,报错内容为java.lang.NoClassDefoundError:Could not initialize class org.apache.poi.xxx ?
答:请参考文档《导入导出poi报错处理步骤》
21.业务对象按模板导出时,基础资料字段(如"客户")在设计器中选择的引用属性为分录或子分录字段(如“账户信息”),为什么在模板的导出属性中不能作为可选项?
答:如A单存在“客户”字段时,其“账户信息”可能存在多条分录数据,不能确定导出的“客户”字段为哪条分录的数据。所以不支持基础资料配置分录或子分录字段为引用属性时作为模板导出属性的可选项。
22.如何将导入方式默认设置为【更新导入】?
答:可以通过重写导入插件中的getDefaultImportType方法,设置默认的导入方式。详见《导入导出插件总览》
23.如何将导入方式默认为【更新导入】,且其他方式不可选择?
答:可以通过重写导入插件中的方法getDefaultImportType,设置默认的导入方式,再通过重写getDefaultLockUIs方法,将其余两种方式设置为不可点击。详见《导入导出插件总览》
24.标准导入默认存在三种导入方式供选择,如何在导入起始的界面中将其中两种方式移除?
答:该场景较为特殊,未提供标准方法操作。如有此需求,可按照如下代码操作(重写导入插件setContext方法)
/** * 设置导入页面显示 * * @param rc rc * @param ctx ctx * @param startArgs startArgs * @return BatchImportPlugin */ @Override public BatchImportPlugin setContext(RequestContext rc, ImportContext ctx, List<String> startArgs) { try { Field view = ctx.getClass().getDeclaredField("view"); ReflectionUtils.makeAccessible(view); try { IFormView formView = (FormView) view.get(ctx); formView.setVisible(false, "radiofield", "radiofield1"); } catch (IllegalAccessException e) { LOGGER.error(e.getMessage()); } } catch (NoSuchFieldException e) { LOGGER.error(e.getMessage()); } return super.setContext(rc, ctx, startArgs); }
25.导入模板是按照标准模板录入数据上传的,为什么还是“提示数据模板格式错误,请上传正确格式的数据模板”?
答:当确认模板文件没有问题时,建议检查文件服务器相关配置(可测试上传、下载附件功能是否正常),如无法确定,可在monitor中查询是否有异常日志,搜索方式如下图,根据日志信息排查文件相关问题。
26.单据更新导入不触发业务规则,为什么?
答:更新导入时,单元格未填值的字段,系统认为应该以数据库中已有的数据为准,即用户在Excel中未填值的字段,不一定在数据库中无值,此时通过业务规则将用户实际未填写的值更改是不合理的。如有类似需求,建议现场增加导入插件,在插件方法中做值计算、替换处理。
27.二开在单据的标准保存操作中添加了插件,插件中存在删除单据的逻辑,导入时提示“数据未保存成功,并且没有返回错误信息,请联系管理员排查业务插件”,这种情况需要如何处理?
答:导入存在逻辑:调用页面保存操作时,会对动态对象的内码做记录,如果保存操作执行完后的结果中不包含对应的内码,将认定该数据持久化失败,记录如问题中的错误信息。如业务确实存在在保存中删除数据的特殊场景,建议重写导入插件中的save方法,自行做数据的转换及入库逻辑。
28.按导入模板导出的小数,在Excel中其精度值与数据库一致,但是按导出模板导出的小数,在Excel中的精度值与单据设计器中的精度一致,这是基于什么考虑设计的?
答:导入模板展示数据库精度原因是设计器第一次保存小数字段时,将会在数据库中创建当前精度的数值字段,后续再到设计器中修改小数字段精度时,只会对系统展示生效,数据库中的精度是不变的。导入时,取数据库精度是保证【按导入模板导出】等功能时,客户的历史数据精度正确(方便用户在excel中进行合计等操作),也需要让客户导入的数据,能按照数据库中实际的精度入库。
30.导入数据的时候,提示有字段未填写,但是excel中对应字段实际上填写了值,是什么原因?
答:导入过程会受业务插件和业务规则的影响,请业务检查插件和业务规则是否将字段值置空。
导入数据常见问题汇总
本文2024-09-23 00:35:48发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140481.html