B端产品中,为什么批量导入功能很重要?
B端产品的重要价值是提高企业的办公效率,在企业的日常工作中批量录入数据的场景很多,所以批量导入是b端设计中很重要的一个功能。本文作者结合案例,分享了自己关于B端产品批量导入功能的思考。
在做b端产品的时候,对于数据需要大量添加、修改的场景,一般会设计成批量导入功能。相较于c端产品,为什么批量导入功能在b端产品中如此重要?
首先是因为b端产品一个重要的价值是提高企业的效率,而批量导入功能恰恰能成倍提高使用者的操作效率。因为相较于单个添加功能,在Excel里面批量填写数据可以复制粘贴多条相同字段,比单个录入更快捷。能提高效率第二个原因是Excel支持多人分工协作填写,协同更有效率。
其次是因为批量录入数据的场景真的很多。以购物中心信息化为例,新商户信息需要批量录入,每个商户的销售指标、销售实绩、费用等都需要批量导入。
问题
但是看似一个简单的文件批量导入功能,如果设计者当时未做全面的思考,容易被操作人反馈模板填写模板麻烦,上传导入时报错时体验不好,上传后导入数据不便于查阅与修改。这些问题都影响了功能的体验感,甚至严重影响工作效率。这些问题显然与批量导入功能以提高企业效率的目的背道而驰。那么,b端批量导入功能有哪些套路呢?
下面以常见的Excel批量导入为例,从下载模板、导入时的便利性、导入后数据的查询修改三方面分享下b端产品批量导入功能的思考。
一、模板设置
1. 模板的设置
(1)如何设计导入字段
确定字段设计模板最开始的环节,应和业务方沟通,确认包含哪些字段。其次需确定字段维度的规则。
我们举个案例,来看一下导入字段设计的思考。假如:我们需要设计一个批量导入供应商信息的功能,基于此功能来说明设置字段的流程。
1)确定所需的字段。比如供应商信息批量导入,所需字段:供应商名称、简称、营业执照、税号、纳税类别、特别属性、法人代表、成立日期。
2)确认每个字段的相关属性。供应商名称等字符串字段长度是多少,是否允许重复?过长应该进行错误提示防止数据冲突的产生,且这种字段为必填项,为空也应该进行报错提示。
供应商编号是自动生成还是手动添加,自动生成编码规则是按顺序生成还是按地区等要素有特定编码规则?这些问题都需要进行思考。
营业执照这类字段是字符串还是枚举?是枚举的话应事先在模板内提示用户只能填写哪几类数据。为了防止枚举字段输入其他内容引起数据库混乱,应该设定好导入校验规则,在导入时不允许此类数据导入。
此外还需考虑到浮点数的位数。浮点数参与运算时会造成精度丢失问题,包含浮点数的加减乘除都有可能导致计算误差,所以在导入数据时如果类型是浮点数,应该定义小数点前后位数的规则。
3)需要确定导入时异常数据格式的处理。比如数据只能导入两位小数的数据,用户导入了小数点后三位,是只取前两位进行保存还是不进行导入。最后用表格形式呈现出来。如下图。
(2)模板规则的提醒
在设计模板设计好后,须提示填写规则。
可以在顶部列出填写规则。例如供应商信息导入案例,对于税号字段填写,需告知用户税号应该填写的是数字或字符,如果与系统内已有的税号重复,应告知其应该怎么做。
还可以用添加有效性提示文字的方式,减少在填写阶段的错误。例如纳税类别字段,只能填写普通、特殊字段,只在上面显示规则不明显,可以在下方点击时弹出提示性问题,减少出错可能。如下图:
2. 模板的下载入口
模板的入口设置要结合用户的使用场景来设计。有两种方案,一种是在列表顶部分别放模板下载和批量导入按钮,第二种方案是只放一个批量上传按钮,点开后让用户在上传的弹窗页面进行模板下载。
从场景看,第二种方案更贴近文件上传的场景,批量上传只有一个按钮,点开后下载模板,而不用点开批量弹窗后再关掉去外面下载模板,减少用户的操作。
二、上传操作便利性
1. 兼容各版本下的文件格式
必须同时支持各版本下xls、xlsx格式的Excel上传。因为在实际过程中,一部分人下载模板填写完内容后会使用另存为,在这一过程中容易选其他文件格式进行保存,容易出现格式不支持上传情况。
此外还需注意兼容不同浏览器以及软件版本的差异,让Excel文件的各种形式能在不同文件形式、不同浏览器和软件版本进行上传,使得上传体验更加友好。
2. 上传错误提示详尽准确
在一些文件批量上传项目中,对数据校验后前端提示太过简单,用户收到错误通知一脸懵,还得去Excel中一个个去查找哪些填写不规范,这无疑是与提高效率背道而驰的做法。
在导入过程中一般需注意以下2点:
- 设置好每个导入字段的校验规则。对于每个字段,哪些是必填的,哪些是只能填写数字,哪些是只能填写日期,日期格式否是YYYY-MM-DD,某个字段数据系统内已有是否可以重复添加?A铺位的使用面积是能否大于计租面积?铺位面积大的小数点是保留整数还是保留两位,导入位数异常如何处理?只有校验规则设定了,才能在导入解析时给予详尽的错误提示。
- 错误提示要详尽。针对错误提示太简单的情况,在数据导入进行校验后,产品可以告知开发每个字段的校验规则,数据导入时定位错误的行数和列数,最后在上传页面直接显示第几行哪些字段填写不规范,方便用户进行修改。但是要想在系统内实现自动解析错误的成本很高,我们可以只显示用户错在什么地方,在上传页面显示出来哪些字段有问题,分别是第几行。
对于多条内容报错的情况处理,比如同一个字段100行都填写错误,可以用列所在的字段为一行显示出本列应该填写的规则,后面括号内显示出那100行的行号。
报错样式如下图:
3.思考上传失败是否允许导入
在上一步某些行数有错误报错显示的情况下,对于数据上传有三种方式:
- 有报错,不允许所有数据导入。只显示哪些数据在第几行有错误,需要重新对模板修改再次导入全部校验通过后数据进行导入;
- 只导入正确数据。提示成功导入哪几条数据,哪几条数据有误,有误的是哪个字段第几行;
- 导入所有数据,错误数据可以进行在线修改。将所有数据导入详情页,点击修改按钮可根据弹窗提示对错误数据进行修改。
三种方式,我更推荐第一种。第二种方式报错后虽然一部分数据导入了,但录入错误的数据得去Excel里面进行修改,甚至还得一个个去查阅哪些是已导入的,哪些是未导入的需要做修改,徒增工作量。第三种方式开发量相对大一些,用户上传后可以直接在列表中删除,对于只有个别数据有误时用这种方式改起来更加方便。但当出错比较多的时候,用第一种方式在EXCEL中修改会更方便.
4. 上传文件限制大小的说明
对于上传的文件,需要在页面提醒单个文件的大小限制,这样既可以明确告知用户文件大小上限,减少上传等待时间,还能防止上传文件过大而上传失败。所以需要和开发确定好上传文件的大小上限。
5. 数据导入页面是否可进行其他操作
在数据导入时,是应该设计成全局遮罩,无法操作页面其他功能?还是设计成在上传过程中可以操作页面其他功能?
在笔者看来,在导入数据过程中,操作当前页面其他功能与导入过程在业务上和逻辑上不影响其他情况下可以设计成导入时可操作其他页面。比如我在一个页面需要上传五个阶段的数据。在导入第一个阶段数据时,我也可以去导入第二个阶段的数据。这种就可以设计成导入时不是全局遮罩的形式。其他业务层面先后有关联(比如说导入后需要对数据进行批量审核)的情况需设计成全局遮罩的形式。
三、数据导入后的修改、查看
1. 上传后页面直观显示
数据批量上传后,除了更直观的提示他哪行数据那个字段填写不对报错以外,对于一次性上传成功的数据,还需要一目了然显示出来一共导入了哪些数据,合计是多少,首列是否要冻结,若导入合计与预期有差异还能根据准确定位是哪个字段与预期不符,方便及时修改。
举一个例子:
图1是系统内原有的导入功能。主要是对个多个品牌的多条费用进行批量导入。原有功能导入后只会显示成功导入了多少条数据。但是查找具体某个专柜导入多少条数据时,需要去上百个品牌去搜索品牌,然后点击加号展开查找每项费用。而且还无法根据专柜维度显示合计费用。一旦数据有误进行排查,十分不方便。
图2是优化后的页面,首先这个页面基本和模板结构一致,让用户查看导入明细项,对比预期导入合计和实际导入合计更加直观,减少操作维度。还能根据部门、专柜等维度查询每一项费用的合计值,便于查询和错误数据修正。
对于同一专柜,同一日期同一费用项的不同调整项目,原有设计是需要通过专柜维度查询日期然后去详情里面查看。非常的麻烦,还无法直观查看导入后到底哪一项有问题。优化后的显示页面直接对于这种情况将多笔调整费用显示在一起,更注重过程数据而不是结果数据,更便于财务审核。
所以导入后页面设计直观些能极大的提高导入后数据的核查,提高导入数据的工作效率。
2. 思考哪些角色可对数据覆盖或追加
对于某些导入场景,可能业务人员只允许导入一次,数据覆盖的权限需要另一个角色进行操作。在设计导入过程时需要根据业务需要将这一点纳入考虑范围。可以在同一页面根据角色组设置不同的导入按钮,也可以设置两个菜单来实现再次导入的权限控制。
3. 思考哪些数据状态可覆盖或追加
在导入或再次导入数据时,需要思考已有类似数据是否对原有数据进行覆盖还是不进行覆盖。
例如我导入了一批费用调整单据,需要根据业务场景思考当导入除金额不同的费用调整时,是覆盖还是追加?未审核状态的调整单据是覆盖还是追加?已审核的调整单据是覆盖还是追加?
一般来讲,未审核的调整单据再次导入是是可以进行覆盖的,已审核的单据一般不能直接进行覆盖,需进行审核后进行覆盖。
4. 导入记录的查看
对于一个完整的系统来说,不光要知道数据导入后的结果,数据的增、删、改也需要方便后续查证。可以采用单独日志的形式,也可以在数据后加变更备注的形式,查询是谁在上面时候导入了哪些数据,给系统带来了数据上的改变。
四、价值
以上对于b端产品批量导入功能的思考的价值在于:
- 能极大地提高操作人员的输入效率。从模板下载、填写、导入、查看整个过程都考虑到用户操作的便利性,显著提高输入效率。
- 提示更加友好。在填写过程中注明规则,在导入过程中针对每个字段进行提示,有助于减少用户的迷惑,更好地完成导入操作。
- 方便对上传数据进行排查。导入后页面设置的更加直观,免去了繁复的查找过程,方便排查和修改。
- 可以复用于其他项目。对于一套成熟的上传方案,可以复用于其他项目,不必重复造轮子,提高开发效率。
总结
b端产品的价值是提高企业的效率,目的是利用系统功能去解放人。虽然批量导入在b端产品功能中是一个很小的功能点,但是提高效率在这个功能上却始终是基本准绳。从模板下载、上传操作、查看与修改等功能的设计,都需要思考如何提高使用人员的工作效率。
希望以此为参考,大家能提出更多的优化思路。
作者:旺仔哥哥,微信公众号:旺仔哥哥
本文由 @旺仔哥哥 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
数据批量导入在设计时作为单独一个模块吗?
数据量太大涉及到五十万行的业务数据一次性导入,要如何去保证系统性能和导入效率呢?
异步操作,系统判断数据量并按照预设进行数据拆分。提供一个统一的批量业务办理中心供查询导入结果,并且对导入结果可进行筛选。个人想法~
异步+1
另外涉及到的导入失败数据的说明和告知,可提供下载导入失败数据的功能
导入我感觉这个功能看场景,如果b端自己用的话,从数据库导入不完了,这种功能业务不一定用还花时间
多学习吧,有多少人可以直接去操作数据库?安全性怎么保证
只是说看场景
这个属于数据初始化了,适用于仅在系统上线初期需要大批量数据导入,而后续使用过程无大批量数据上传需求的场景,直接给个单个添加功能就好,这篇文章是对后期也有大批量数据上传需求的情况而言
二-5.数据导入页面是否可进行其他操作有一个疑问:一个页面中支持打开多个批量导入的弹窗,为何不通过多复制页面,每个页面中做一次批量导入呢?这样每个页面不是更简洁吗
另外,全局遮罩可以直观地告诉用户当前任务还在进行中,暂时不要进行其他操作,避免关联操作发生错误;顶着一个弹窗在当前页面继续操作总觉得很别扭,如果同时需要进行查询操作,复制一个新页面,在新页面中操作即可。
第三项第一条不太明白,导入成功后查看导入明细项吗?如果上传多个品牌的数据,统计出来的合计数据对业务来说没有意义吧?
这应该是领导方面的需求,B端需要考虑业务人员和信息管理及领导几方面人员的需求
楼主全篇重点都在讲如何做批量导入功能,而并没深入解释为什么
很详细了
写得非常细致了~
哈哈,谁用谁知道,,
产品同学想了一大堆,研发同学估计得砍需求了哈哈
确实,该功能是刚需
模板可以有示例数据。如果填写项是多选,要设置分隔符规则,比如用&连接。
做过分行提示,研发真的很抗拒。要做到好用,的确要考虑这么多。
昨天刚做了个这个功能,不过说实话,实现小编说的,研发的内容很多
是的,尤其是导入异常提示。估计开发会跳脚
是一定会跳脚,除非是saas产品
作为一个开发,表示需求不饱和
决定把上面的功能都做了