用友产品揭秘—用友的财务软件:皇帝的新装
 当前位置:最新动态

用友产品揭秘—用友的财务软件:皇帝的新装

发布时间:2010-06-25 15:58:05 来源:软件服务社

大家都知道用友是做财务软件起家的,很多人(包括以前的我们)就是因为相信用友的财务软件、买了用友的财务软件,才又买了用友其它产品,才认为用友的技术实力很强……

之所以那么多用户都相信用友的财务软件,是因为绝大多数企业(包括大企业)的实际情况是:做技术的不懂会计、做会计的不懂技术、做领导的既不懂技术也不懂会计(这是很正常的,并不是不敬,因为术业有专攻、不可能都懂)。这就给了用友机会:大家听着用友的忽悠,谁也搞不清深浅,而且一想财务工作这么重要,用友能做这种产品,肯定水平很高。

但是,规律经常是:越是这种似乎谁都不必去怀疑的地方,越是容易出现天大的笑话。下面,我们就来简单说说用友的财务软件,就以他们最有名的U8和用友通(T系列)产品为例,让大家看一下。

 

一、“天才”的数据库设计

数据库设计是系统的根基。用友的财务软件,从这个“根”上开始就歪得让人哭笑不得。

比如,在年度账的管理中,用过用友财务软件的人都知道:对每个会计年度都要先建一个年度账,然后每年再进行结转。大家一想,太对了,会计就是这样的啊。但是,大家可以看一下数据库:他们的产品居然真的是一个年度账就建一个数据库。我们刚看到时感觉实在是高深莫测。后来终于在一位对财务软件历史和技术都比较清楚的朋友那里找到了答案:这是因为用友财务软件的数据库居然是基于十多年前Access数据库那种思路来做的:因为Access性能太差,怕多个年度的数据在一起系统承受不了,所以才每年一个数据库。

因此,用友的财务软件中很多滑稽的问题就好理解了,举几个最简单的例子:

1、  如果在一月份想查去年十二月的数据,那就只好退出系统重新登录,这就是因为每个年度的数据不在一个数据库中。我们知道“连续性”是会计的基本要求,但是连这样最基本的事情都做成了这样,它还能做什么?

2、  到了会计年度末,又是建新年度的数据库、又是结转年度账,显得这个系统好象很高级、很玄,还对用户讲“以前人工建账时是多么地复杂,现在只要执行这几个功能就可以了,充分体现了会计电算化的优越性……”。唉,真是不知道他们怎么说得出口?

 

大家不要以为用友的这个做法考虑很周全。实际上,即使是十多年前,数据库的性能也根本不是用友想象的那样。只不过用友那时可能只知道Access(因为太简单好学了)、以为微软的数据库就是最好的,对别的数据库一无所知,所以做出了这样可笑的设计。但实际上,微软那时的数据库能力正好是最差的,甚至根本没有象样的数据库技术,微软后来的数据库技术(SQL SERVER)是从Sybase购买的。如果用友当时对Sybase等数据库了解一些的话,就不至于做出这样“天才”的设计了。

用友的这种做法,从根本上隔断了数据的关联性。很多用友的员工看到我们说起这个话题,告诉我们实际上连他们自己都觉得这种设计很可笑——他们私下都把这个财务系统称为“一年超级EXCEL”。

 

二、没有良好的逻辑习惯和完整的基础设计思路,靠修修补补做系统,必然漏洞百出:

我们以用友的T3(或用友通)为例演示一下(U8也一样,只不过能看到用友通的用户比较多,所以用T3为例)。比如,在“项目管理”中:有一个项目大类,现在对这个大类的“项目目录”执行“维护”时,如果“新增”一个项目“一号楼”(如下图):

 

可以看到,新增的项目就能设置为“已结算”,请用友解释一下这是什么道理?当然,用友可以说这无所谓啊。那好,如果无所谓的话,为什么科目管理中,要控制只有“修改”状态下可以把科目改为“封存”状态、“新增”科目时为什么不可以呢?这就是没有统一的思路和概念才会有的混乱做法。其实,项目的“已结算”和科目的“封存”,本质上是一个概念,就是以后在业务中停用了(当然历史数据还可以查询)。只要抽象成一个概念、按统一的思路处理就可以了。欧几里德的《几何原本》用了23个基本定义,如果按用友的“科研”思路,可能2300个都不够。用友可能不明白:抽象出“定义”是一个体系最重要的基础,他们可能觉得用这样五彩缤纷的定义唬住用户会显得自己很高明。

用友可以再说:就算思路乱,但也没出错啊。好,再往下看:在“项目结构”中,要求只有整数和实数型的栏目才可以“汇总”,文本型和逻辑型不可以。这显然是应当控制的,用友的产品中也做了控制。比如,您可以新建一个大类“主要工程”(注意:不要用系统中已有的大类,是“新建”一个大类,并且先不要在“项目目录”中设置项目),再自己增加二个栏目:“地点”(文本型)和“价值”(实数型),然后,在“项目结构”中,可以看到,我们能够把“价值”是设置为“汇总”(如下图):

 

但是,如果在“地点”上的“汇总”栏中双击,会提示:

 

到这里,似乎用友做得都不错。

但是,如果我们在上一个图中点“修改”,并把“价值”改为“文本型”(如下图):

 

再点击“完成”。大家可以看下图,现在是“文本型”的“价值”栏目居然也可以“汇总”了,请问用友,这是不是还没错啊?

 

这只是举了个小问题,不会象OA中的错误那样对用户有什么影响,所以说出来也没什么关系,用友改了就行了。我们只是以此为例,让用户看一看他们的设计思路,也让用友知道,如果思路乱的话,出问题是必然的。显然,用友做程序的方式没有良好的逻辑习惯、不是基于一个完整的设计方案,而是采用四处堵漏的方式,所以用户经常用到的功能,发现问题就四处打上补丁;用户不经常用的地方,问题就比比皆是。没有追求完美的工作态度,只满足于东拼西凑,是做不出好产品的。

三、对于系统设计基础缺乏基本的了解,却敢于把无知说成功能强大

比如,固定资产管理是最常用的模块之一。固定资产如果用自动编码的方式(这是最常用的方式),用友的系统(如U8或T系列)提供了四种可以选择的编码方式,包括:类别编号+序号、部门编号+序号、类别编号+部门编号+序号、部门编号+类别编号+序号。看到这里,很多人会感觉用友做得真是太人性化、太强大了,有这么方式让我们选,然后一般就按习惯选择一种,比如部门编号+序号”。再指定序号长度(比如3位),就可以为固定资产生成编号了。比如03是人力资源部,05是营运部,那么人力资源部的固定资产就是03001、03002、03003……,营运部的固定资产就是05001、05002、05003……;感觉很清楚、很有条理。
    但是实际上,用友的这种做法是一种很无知的错误方式。刚开始这样做时您可能不会在意,但用不了多长时间,您自己就能体会到。因为固定资产是可以在各个部门间调配的,比如:几个月后,原来人力资源部一台编号为03007的电脑调到了营运部,但是编号是不能改的,所以调过去后,用户就会感觉一下子乱了,因为营运部的固定资产编号应当是05XXX,但是这台电脑调到了营运部,编号还是03007。过的时间越长、调配越多,就会显得越乱,这时用户往往自责,我怎么这么愚蠢呢,人家用友明明提供了按类别+序号的方式,我为什么不按那种方式呢?

    但是,真正愚蠢的是谁呢,是用友!因为他们提供的这些编码方式全是错的。您如果按类别+序号的方式,类别就能保证永远不变了吗?所以,最后仍会遇到这些问题。同样,按其它二种编码方式也会是这种结果。真正正确的方式应当是由系统随便自动编号就行了(当然,可以设定一个最长位数),但是必须与部门、类别没有任何关系。
    用户会说,我们想从编号中看到一些信息,因为我们会把编号贴在固定资产上,如果编号中有部门或类别信息,还是好的,这也是用友经常辩解的理由。但是,固定资产的业务管理并不是这样的:因为编号中加了部门、类别,却无法保证这种规则,这样的结果反而是误导。相反,采用任意编码的方式,才会真正做出好的管理方案:比如,可以把固定资产编码做成条码,在检查或盘点固定资产时,利用条码扫描终端,可以看到固定资产的全面信息,如所属部门、类别、购入日期、维修记录等全面的资料,如果需要更多信息,还可以做成二维条码,将来还可以利用RFID,而不是只能从编号上看出个部门或类别(何况还可能是错的)。
    当用户真正按任意编码工作一段时间后,就会了解到这种方式的优点,您会感到很轻松,而不必总想着部门、类别编号。实际上,不只是固定资产编号,很多类似的管理是同样的,比如企业内的职员编号,很多公司常用的方式是部门号+序号,或者习惯于总经理编成00001,副总00002……,其实这样做是不对的,正确的方式就是任意编号就行了。公司越大、业务越多,越会感受到这样的优点。
    这种问题实际上是我们在98年就已经明确的东西,因为虽然用户可能不是很注意“编号”这种问题,但是编码规则对于系统设计是最重要的基础问题之一,是设计人员必须非常明确的。我们当时因为商品要做分类管理(现在商业管理中称为“品类管理”),比如01是副食、06是饮料,很多人会想,是不是饮料类商品的编号应当是06001,06002……,而副食类的应当是02001、02002?我们当时就发现这种方式是错误的(虽然很多人第一感觉这样好),道理很简单,因为分类是可以变的。
    这个问题从理论上分析就真正清楚了,因为固定资产的编号是一个独立的量,如果在这个编号中包含了某种规则,比如部门编号+序号、类别编号+序号,那么固定资产的编号就成了部门编号或类别编号的“函数”,所以是完全错误的。建议用友再去学习一下初中的“变量”、“函数”是什么意思。
    所以,用友的这种做法不是好不好的问题,而是错误的。这种基础问题在用友的系统中很多,
用友如果不怕丢人,就别改。
    我们反复强调,管理软件本质并不是软件,而是软件化的管理方案。应当给用户提供的是正确的管理方案,而不是在自己对业务缺乏最基本理解的情况下,给用户提供无数选项和设置,表面上显得自己的系统功能强大,等数据乱了却让用户以为是自己错了。用户是使用系统的人,怎么能要求用户去考虑编码规则这些只有设计人员才应当考虑的问题?
    用友这种对ERP系统的设计基础和逻辑基础理解如此可笑的企业,却整天在自称“世界级、No.1”,与那个没有基本医学常识却号称神医的张悟本真是有异曲同工之妙。

四、没有最基本的设计准则:

用友的财务软件,无论是用友通还是U8,都是只能用WindowsSQL Server。如果说以前开发用友通和U8时没考虑那么多,也就算了,但是,用友最新极其隆重发布的自称“全球第一款完全基于SOA架构的世界级企业管理软件”的U9还是依赖于Windows平台。如果用户想把这个财务软件安装在Linux操作系统上,那就别想了。

但是,在技术上实现跨平台对于用户是必需的:

首先,不只是因为Linux操作系统免费,关键是Windows Server的性能比Linux差得太远,这是很清楚的事情。这种差别每个用户都可以自己试一下。比如,我们的商务系统,以前安装在Windows Server上,隔二三个星期就必须重启一次服务器,否则没准什么时候就死了,而安装在Linux上,如果不是赶上停电等原因是不需要重启的,当然,我们内部管理的规定非常保守,那也是三个月才重启一次。

更重要的是,用友的这种设计无异于剥夺了用户的选择权。SQL Server可以用MSDE凑合代替,但是Windows Server呢?用户只能有两个选择:用盗版,或者花上万元甚至几万元去买个正版。用友,请问你们打算让买了你们产品的用户怎么选择呢?

跨平台不只是为了技术上的完美,而是为了让用户拥有选择权。这也是我们目前在开发财务软件时的最基本考虑之一。这样,即使用户因为不熟悉Linux而把这个财务软件装在Windows Server上,微软也不会找你的,因为你有能力随时换成Linux,这种情况下,微软宁可让你用他们的盗版、也不愿意你换成Linux(这是微软总裁鲍尔默的原话)。所以,只要用户有选择权,即使是小企业,也不用惧怕微软的大棒(当然,微软是我非常尊敬的企业,比尔.盖茨将全部资产捐献出来,值得所有人尊敬和学习。我在这里说的只是商业上的问题,即必须让用户拥有选择权)。而用友的做法,让用户在购买了财务软件的同时,只能自己把脑袋伸到微软的大棒之下。

用友这样开发程序比较简单,工作量小,但是,做的产品是要给用户用的,更应该考虑的是用户的需要。这是产品设计最基本的准则。

所以,我们在财务软件设计时,不仅在服务器上可以支持Windows或Linux等操作系统,客户端也可以用Windows、Linux,甚至您还可以用苹果的Mac。

 

更多问题不说了,否则成了给用友做免费评测了。

北京的交通不太好,堵车是常态,所以老李下班走得比较晚,经常晚上八点多还在路上,没事就听听收音机FM106.1的广播,这个时段播放的是“小喇叭”节目,听一听“春天姐姐”讲的故事也很有意思,有些故事还真不是瞎编出来的。比如,号称No.1的用友,看家产品财务软件做得如此滑稽,却能让那么多人相信他们做得多么专业,这就象“皇帝的新装”中那个光着屁股的皇帝(也是No.1),居然能让几乎所有人相信他那件最新最牛X的“衣服”(就象用友的看家产品)有多么的漂亮。

 

【上一篇】: 用友产品—T系列:老黄瓜刷绿漆装进…
【下一篇】: 用友产品—恐怖的OA:只给最勇敢的人