为什么我们公司的OA这么难用?

做了5年泛微二次开发。

被问过最多的一句话是:

“为什么我们公司的OA这么难用?”

每次听到这句话,我都想反问一句:

你知道你那套OA,是怎么被做成这样的吗?


我接手过一个出差申请流程

功能描述很简单:

员工填出差申请,输入开始日期和结束日期,下面自动生成出差计划明细——每天一行,填写当天的工作内容。

听起来很普通,对吧。

但我打开这个流程的时候,愣了一下。


设计者的解法:建15张表

原来的设计者不会写JS。

他的解法是:

用关联台账表来生成明细行。

出差1天,关联第1张表。

出差2天,关联第2张表。

出差3天,关联第3张表。

……

出差15天,关联第15张表。

所以他建了15张表。

字段名整整齐齐:

uf_ccsqmrgz1
uf_ccsqmrgz2
uf_ccsqmrgz3
……
uf_ccsqmrgz15

最大支持15天出差。

超过15天?不支持。


这不是解决问题,这是在绕开问题

我不是要嘲笑这个设计者。

能把功能跑通,说明他花了时间,也花了心思。

但这个方案有一个根本问题:

他在用数据堆砌来替代逻辑。

JS可以做的事,他用15张表来模拟。

结果就是:

系统里多了15张台账表,维护成本极高。

出差超过15天,功能直接失效。

后续如果要加字段,15张表要改15遍。

这套东西交付给客户,客户能说什么?

能用,就收下了。


我的优化:JS + SQL,一套逻辑搞定

我接手之后,把这15张表全部废掉。

用JS重写了生成逻辑:

根据开始日期和结束日期,动态计算天数,循环生成明细行,每行自动填入对应日期。

顺手用SQL算出了每天是星期几,直接显示在明细里。

现在的效果:

选好开始日期和结束日期,下面的出差计划自动生成——日期、星期、Day 1 / Day 2 / Day N,全部自动算好,员工只需要填每天的工作内容。

出差7天生成7行,出差20天生成20行,没有上限。


那15张表,说明了什么

我想说的不是我有多厉害。

我想说的是:

那15张表,是一个不会JS的人,在没有人帮他的情况下,用最笨的办法撑起来的一个功能。

他可能是外包顾问,工期卡得很死。

他可能是公司内部员工,没人教过他还能怎么做。

他可能知道这个方案不好,但当时没有更好的选择。

我不知道。

但我知道的是:

客户为这套OA付了钱,用了几年,出差超过15天的人,这个功能对他们来说从来都是坏的。

他们不知道是实施的问题。

他们只知道,OA不好用。


OA难用,锅不一定在平台

泛微E9的表单、工作流、JS扩展、SQL联动、ecode平台、无侵入开发等等,能力摆在那里。

根据日期动态生成明细行,不是什么高难度需求,JS写起来也就几十行。

但如果实施的人不会写,或者不想写,或者项目工期到了懒得研究——

他会给你建15张表。

然后告诉你,功能已经上线了,验收吧。

OA难用,很多时候不是平台的问题。

是当初做这件事的人,能力或者态度,没有到位。


最后说一句

接手别人留下的系统,是这行的常态。

我见过很多这样的东西——能跑,但跑得很勉强。

每次优化完,我都会想:

用这套系统的人,在这个问题上,安静地忍了多久。