感谢@杭州-风清扬
分享(jiangcj365@qq.com)
我和你们讲讲我一个客户的例子:
这家公司也是做机械的,老板从作坊做起,开始十多个人,开始都是贴心贴肺的和他一起搞的人,后来公司慢慢做大,这些人都是各个部门的铁盘子,员工走了一批又一批,也请来了很多牛人,有水平的人,结果人家都适应不了,都走了,这十多人还是一直不变,企业因为单子好,生意还不错,一直稳步增长
但是近些年,老板总感觉企业突破不了,好像遇到了瓶颈,其实他也知道,是那最初的十几个人管理经验欠缺,又守旧,不愿意改进,但是碍于面子,不好辞退,也不好降级
但是到了真动刀的时候,老板也开始一个个动刀了,但是难题来了,他发现这十多个人都是骨干,很多公司资源,信息都在这几个人脑子里
你现在想不用他们,他们怎么可能会同意带一个有学历的徒弟出来
别人来了,即使有能力,但是因为不熟悉,一时上不了手,信息都在那几个人脑子里
纸上都不愿意给写的人
老板听一个同行业的兄弟说,你可以试着搞搞软件上个ERP
于是老板买了ERP,开始一点点的专人负责收集信息
今天挖你一点,明天挖他一点,在生产中再去检验
慢慢的几年过去,那几个人的信息都被挖的差不多了
再也没有人敢牛逼的说,没有我,这个公司转不了
于是愿意留下来的,到了车间做老师傅,不再做管理岗位,不愿意留下来的就走了
公司来了先进的管理人员,通过ERP信息,很快就能上手,公司也突破了瓶颈
从这个事情可以了解到,不是中小企业没有这个需求,相反,他们很有需求,只是没有个好的领路人
这信息化搞的,不比上个ISO香吗
老板可以和你共苦,但是企业做好了,未必肯和你共享福
当你以元老自居阻碍公司发展的时候,老板有的是办法
是可以一起分享有限的价值
你领导能力在那里,学历也在那里,企业发展初期给了你重要位置,之后你总是担心会被社会上的新人代替
针对这种情况,你会无动于衷吗
有学习能力的人可能会提高自己,继续可以胜任,另一种人就是搅屎棍,上ERP不是找死,是找对每个人的位置!
2020-2-28
万事开头难,庚子年开工更是难上加难。
最近已有多家企业向村长咨询远程办公方案事宜,本文将就此问题及其相关注意事项展开。
场景一:小武是武汉人,因为封城无法回浙江复工,因岗位重要,需要远程在家办公,这叫异地办公。
场景二:小李回浙江了,根据要求在家隔离14天,无法到公司,也需要远程在家办公,这叫同城办公。
场景三:小王是本地人,无感染并已自行隔离14天,可到岗,可到公司正常办公,这叫本地办公。
异地办公主要困难在于网速,如果公司服务器在内网,那么远程办公会有网通电信互通和常规网络超时等问题。这个是硬伤,一般解决方案是系统上云或者部分模块上云。例如租一台阿里云3个月,扛过这阵子,这样可以最大限度降低网速影响。特别是需要上传下载大量图片、附件的业务操作。
假如异地办公网速问题不大,公司系统又不希望上云以免暴露商业机密,那么最好的办法就是架设VPN,没有之一。
架设VPN后,给员工分配账号密钥,员工通过VPN连到公司网络后,有两种方式进行工作:
直接登陆ERP系统,因为VPN隧道已经将两个子网打通,缺点是仍然存在上传下载附件时的网络延迟问题,毕竟是异地。
在本地架设终端服务器,员工远程登陆本地的虚拟桌面进行工作,这样服务器客户端都在本地,远程流量只有RDP协议包,可以有效解决异地操作图片、附件缓慢问题。
Tips: 如果主路由器不支持VPN可以考虑淘一个8口千兆刷过爱快(免费)的软路由,大概700RMB左右。
同城办公策略可以参考异地办公,但是相对而言同城VPN会降低速度,如果公司有公网IP,可以考虑开放部分端口,让外网可以直接登陆ERP系统。例如NX需要映射一下服务器7788端口,ES需要映射7777-7779端口。
关于映射端口的几种方式:
直接在主路由器上映射端口(虚拟服务器)
通过FRP、花生壳等做内网穿透
注意,不要开放3389等远程端口,防止被勒索病毒侵入,另外ES开放端口后,有网盘文件泄密风险,注意打补丁。
Tips: 网速对比 异地 < vpn < 同城 < 本地
本地就照旧了,即以前怎么办公现在就怎么办公。
不过在非常战疫时期,应该尽量隔离工位,减少窜岗
有独立办公室就不要用综合办公室。
能电话沟通就不要当面沟通。
减少纸质记录,尽量用APP提交,例如报工,检验。
无论哪种办公方式,会议是逃不掉的重要环节。
目前可以考虑下列方案:
企业微信多人视频,免费,支持多人同时在线交流。
腾讯会议,支持小程序,普通微信。
电话会议,一般是主持人发起先拨入,其他参与人再拨入即可。
2月10日的开工在即,不关是否能正常复工,大部分企业应该都在做员工的健康调查了,还是安利一下企业微信,自带“健康上报”工作流和统计报表,管理员设置一下上报人即可。
随着最近各地“毒王”浮出水面,这场战疫很可能才刚刚开始,很多企业一季度可能是颗粒无收了。
村长在此呼吁一下,一线作战物资紧缺,请大家不要再大量屯口罩屯医用物资了,在家安心看剧,玩游戏,就是对人类最大的贡献。
最后,村长祝大家身体安康,工作顺利
2020-2-7
不管是刚接触类EXCEL开发平台的新手,还是在各种此类平台中摸爬滚打很久的老鸟,如果到2020年了还不会SQL,那就非常有必要看一看此文。
前提是,你立志要开发维护好一套企业级系统工程(system project),而不是三五个模板就能搞定的简单应用(simple application)。
SQL,指结构化查询语言,全称是 Structured Query Language,是用于访问和处理数据库的标准的计算机语言。
关系数据库是久经验证的工业通用存储标准,而企业级系统工程必然涉及大量数据存储,这些数据的存取都需要用SQL。
互联网类企业像阿里巴巴喜欢用Mysql,成本低。
银行、金融类企业更青睐Oracle,成本高,安全度高。
普通企业一般用Mssql,成本和安全性居中。例如金蝶,用友,类EXCEL开发平台等。
在《ESAP高级教程-深入系统架构》一文中,村长举了一个非常经典的例子,就是在开发仓库库存系统时,如果用SQL思维:即先开表,再做模板。那么可以节省大量库存计算视图代码。
学会SQL后,开发人员会慢慢培养出一种“表感”。就像我们学车后,通过不断驾驶会形成的“车感”一样,能清楚感知自己的汽车走在哪条线上,即使松开方向盘一会也不会跑偏。
对数据库的“表感”也一样,它能逐步强化我们对整个系统数据架构的统筹和掌控力。好的数据架构能有效抵抗新需求的撕扯,不会因此陷入无限重构的困境。
举个例子,我们先开三组核心原始表,再做两组视图,就形成了进销存核心架构。
接下来只要做好销售订单、销售出库、销售收款、采购订单、采购入库、采购付款,系统就基本成型了。所有模板表都映射到三个原始表,待办查询统一利用相关视图。
这个时候客户可能会说,我们还有委外订单,要加委外模块。不要慌,先不要急于画新模板,我们先分析一下委外模块需求:委外订单,委外入库单,委外对账单,委外付款单。
从SQL角度,委外模块几乎就是采购模块的翻版,只是叫法不同,所以我们只需要复制采购模块的各个模板,改一下模板名即可,甚至连提数公式,数据规范都不用动就可以了。这就是架构的力量,以不变应万变!
在《ESAP高级教程-动态换算的奥义》中,村长展示了如何在提数中使用自定义函数来一劳永逸解决动态换算问题。
事实上,这是非常重要的高级技能,数据库不再仅仅是存储载体,还能主动出击,进行编程,生产数据。
在MRP计算中,我们会用到SQL存储过程,甚至会用到游标,例如在计算完一行工单需求后,要先增加工单库存占用,再计算下一个工单,再增加工单库存占用。
在一些特殊的场合,我们会用到触发器,保证数据绝对严谨和安全。
通常来说,服务器带宽是稀缺的,CPU是过剩的,所以一般情况下不需要担心这些SQL计算给服务器带来压力。更多情况是,很多时候我们的服务器是阿里云、腾讯云等云主机,带宽非常有限,那么将大量数据下载到客户端,再通过js/vba等前端脚本计算,再返回数据库是得不偿失的。
举个最经典的例子:关账。
很多新手的关账模块非常费劲,先做个模板,把大量结存明细提过来,再保存,甚至还要回写“期初表”,回写锁定已结单据……
然而,真实情况是,这些统统没有必要,关账你只需要做一个按钮,用户按下这个按钮会执行一个SQL存储过程,自动结转期初,并锁定相关单据。
系统本质是什么?
是数据。
就像我们玩的王者荣耀一样,我们玩的就是数据,那些HP,MP,攻击力,防御力等等,就是存在某个服务器的数据库的某个表的某一行的数值,我们每天通过游戏客户端在不断维护这一行的数值!有时我们下载打开另外一个新游戏,会感觉这个游戏模式好熟悉。没错,这些个游戏的数据架构很可能是一样的,只是美工不同,数据库里存的都是HP100,只是界面上一个叫“貂蝉”,一个叫“九尾妖狐”而已!
所以系统工程最重要的就是后端数据,游戏数据是玩家氪金的源泉,生产数据是企业发展的动力。
前端是可以换的,换成H5+Css3+Js(如HZG)也好,换成Excel+vba(如ES/NX)也罢。
深圳有许多系统供应商,他们的前端每天都在外包,而后端算法和数据则牢牢掌握在自己手里。
我们把思绪收回来,回到信息化系统工程的本质。
当我们的数据量积累到一定程度时就需要做查询性能优化,这个时候说不懂SQL很可能就是一步死棋。
年初的时候,村长一个跑了8年的ES案例,因为客户更换服务器,竟然出现很多模板打不开了。
这些模板在老服务器上运行时又立马恢复正常,通过对服务器硬件的分析,村长得出的结论是这次更换服务器其实是“硬件降级”,新服务器性能不如老服务器,但是客户也没有更多的硬件升级计划了。所以解决问题,不能靠砸钱解决,而要靠技术。
通过SQL Server Profiler监视分析,村长发现模板打开时执行的某个提数非常慢,这个提数的数据源涉及几百万行,毕竟运行了8年,实属正常。
通过增加主键和索引,最终这个查询从一分钟降到了2秒。原本的全表扫描变成了索引扫描,只需要扫描2万行即可。
事情并没有结束,因为另外一些模板即使加了索引,仍然不能打开,例如有一个最新单价相关的提数跑了半个小时也没出结果。
最终村长重写了算法,秒出结果。
从上面这个例子,我们至少可以得出两个结论:
性能不够硬件来凑,好的服务器确实可以抵挡一大波潜在问题。
硬件不够,技术来救,学会SQL,就是解决问题的最后防线,因为这个时候数据根本到不了前端,就算h5+css3+js也好,Excel+vba也罢,再牛逼上天也救不了。
我们经常说“低代码”开发,而不是“无代码”开发,你可以不懂js,可以不懂vba,但SQL非懂不可,严格来说,SQL也不算编程。
都2020年了,如果还有人跟你吹嘘说他开发了一套牛逼的系统,但他不会SQL,叫你也不要学,请立即拉黑吧,这种人不是蠢就是坏!
最后,祝大家新年快乐。
2020-1-12
在生产系统中,常常会碰到单位换算问题,例如:
购入一批铝型材,仓库论米,生产切割成不同的长度论根,供应商结算论吨。
购入一批钢板,仓库论平方,生产切割论块,供应商结算论吨。
购入一批塑料膜,仓库论片,供应商结算论kg,并且四舍五入保留1位小数……
村长最近在做采购订单时就遇到了换算问题,需要把库存单位
转换成结算单位
再下采购订单给供应商。
这个动态换算通过一个提数完成(NX/ES均可),部分换算归纳如下表:
提数公式本身运作良好,但仅仅在采购订单中使用还不够,还要在采购入库,采购发票,采购对账,采购台账等等功能中都要有所体现。
这就涉及到一个更新维护问题,如果哪天有新的换算方式,那不仅要改采购订单的提数,还要改入库,发票,对账等等环节的提数。
如何一劳永逸的解决换算问题?!
通常,动态公式换算问题,除了提数写死,有这几类方案:
缺点:仅适合不需要考虑本表临时变量(例如长宽高等)的简单换算。
=_克重*_数量*_长*_宽/1000000
,其中_克重,_数量,_长,_宽
是定义的名称,代表某个字段区域。缺点:本质是客户端计算,需要构建大量辅助字段,将所有需要的变量都提数体现。
create function fGetAuxQty(
@qty decimal(34,3)=0 --数量
,@kz decimal(34,1)=0 --克重
,@gg varchar(128)='' --规格,例如1000*500或800
--长=left(@gg,charindex('*',@gg+'*')-1),宽=right(@gg,len(@gg)-charindex('*',@gg+'*'))
,@dw varchar(128)='' --库存单位
,@hs varchar(128)='' --换算单位
,@hsxs varchar(128)=0 --换算系数
)
returns decimal(36,6)
as
begin
return
case
when @dw='片' and @hs='kg'
then round(@kz*@qty*cast(left(@gg,charindex('*',@gg+'*')-1)as int)*cast(right(@gg,len(@gg)-charindex('*',@gg+'*'))as int)*(case when @kz<20 then 1.4 else 1.36 end)/100000000.0000,1)
when @dw='m' and @hs='吨'
then @kz*@qty*cast(left(@gg,charindex('*',@gg+'*')-1)as int)/1000000000.000000
when @hs='吨' and @kz>0
then @kz*@qty*cast(left(@gg,charindex('*',@gg+'*')-1)as int)*cast(right(@gg,len(@gg)-charindex('*',@gg+'*'))as int)/1000000000000.000000
when @dw='m' and @hs='m2'
then @qty*cast(left(@gg,charindex('*',@gg+'*')-1)as int)/1000000.000000
when @hs='m2'
then @qty*cast(left(@gg,charindex('*',@gg+'*')-1)as int)*cast(right(@gg,len(@gg)-charindex('*',@gg+'*'))as int)/1000000.000000
else
@qty*(case when isnull(@hsxs,1)=0 then 1 else isnull(@hsxs,1) end)
end
end
缺点:不知道会点sql算不算缺点?
打开SSMS,将换算函数sql构建代码填入,F5执行。
接下来,在提数中使用。
对比一下老的提数公式,是不是顿时觉得整个世界都清净了^_^
其他模板也是直接提数调用dbo.fGetAuxQty(),无辅助字段,支持本表和其它表字段代入
最重要的是:如有变更,只需要更新fGetAuxQty()即可全局生效,一劳永逸!
在采购订单中进行换算:
手改规格后(特别提示,是文本型哦!!!),自动重算,爽歪歪:
封装sql自定义函数一劳永逸;
万能提数中直接调用sql函数,无辅助字段,随叫随到。
感谢NX杨工提供的技术支持和的如此灵活的快开平台,并预祝筒子们元旦快乐~!
2019-12-31
本文扒一扒天朝软件业那些事儿,为筒子们树立正确的价值观。
村长是2011年入坑ES,从此揭开了ERP系统工程师修炼生涯,相关内容见最早的博文《我与ES系统不得不说的故事》。
从电脑小白到ERP架构师的修炼大致分为三个阶段:
筑基:学sql。开发不会sql就是耍流氓,这话一点也没错。如果你看过村长的《ESAP高级教程-深入系统架构》,就知道这一点对ERP开发来说有多么重要,越是大系统,越需要好的数据库架构。视图,映射作为ES唯二的两个数据库架构手段,是必练的保命手段,多学学金蝶,用友甚至SAP的开表方式,就算不能完全3NF,也要尽力去靠拢。筑基的过程,就是学会从数据库的角度去开发,先开表,再开模板!
结丹:学vba/vbvc/c#/go/js/py/php等编程中的一种。结丹结的是知识产权,是软著,是专利,是一切属于自己的产品,主系统可以用ES/JU/NX这类快开平台快速建模和试错,甚至用个十年八年,但那还不是ERP的极致,要实现真正的自动化,智能化,人机实时互动,成熟模式产品化,编程始终是绕不过的坎。学编程要学的是思想,一通百通。
村长的修炼路线是:EXCEL/SQL/VBA/GO/JS
当小白变成技术大牛就要开始渡劫:面临职业规划的取舍,一种是继续主业,兼职做系统开发设计,兼职者,小风险小收入;一种是将开发做为主业,组队或单刷任务,成为自由职业或创业者,大风险大收入。
村长经常开玩笑说只喜欢两类人:
一类是善于自学的,稍加点拨就能大牛,例如社区的@新新,@荆州等童靴,从小白成长为老板,也就短短几年时间;
而另一类人就是善于发红包的,哪怕是小红包,也说明他的价值观没问题,认同软件服务带来的价值。
在成为自由职业者后,还有地劫,这个是天朝特色的渡劫。我们知道,在天朝,软件产业一直很落后,落后于欧美,甚至落后于印度。
原因很多,而经济发展过快也是之一,过去我们为了发展,对于硬件能买就买,能仿就仿,这就造成了一种思维惯性,越大越值钱,越重越值钱,对于软件这东西,看不见摸不着,理所当然就不值钱,上到windows,下到office,能用破解就不考虑花钱。在这样的价值观下,就出现很多滑稽的场面,比如说一本正经把苹果手机拆机后说硬件只值1000块,苹果应该卖一千块?!
说到这里,村长分享一个经历,2016年时,宁波某行业协会辗转找到我为其开发一个自动工控数据采集系统,涉及10余家拌浆站,客户端从win2000到win10,数据库从access到mssql,甚至包括excel,总之环境五花八门。研发测试部署历时三个月,后来签合同时被告知不能签软件开发服务,而要签成采集服务器和传输仪器……在这群老板眼中,只有那台不到1万的备份服务器和一堆GPRS传输仪器才值钱。他们根本看不到背后的阿里云主服务器和整个esap-cli物联系统的价值。
目前,主流软件开发服务是3000人天,不管是开发传统软件,还是微信/钉钉小程序,在欧美国家更高。一般一个简单的模块,通常报价是15人天,也就是45000RMB。无论是IOS,还是windows,开发周期都是按千人天计,如此算来,软件价值何止是被低估,简直是惨绝人寰。
村长给创业者的建议是:考虑先款后货,否则demo都不要做。
软件的价值,除了研发,更多是来自背后的服务和支持,使用和传播这些服务,是为布道。
师傅领进门,修行靠个人,村长最早在ES一位工程师的帮助下入门,其后通过正版服务不断深入探索,几乎摸遍了ES所有的功能,经过两年的提炼融合,最终独辟蹊径形成了自己的风格和整体解决方案,名为ESAP。这个解决方案参考借鉴了SAP的一些思想,是非常经济实用的本土方案,它包含很多避坑特性,例如不使用回写计算,尽量少的工作流,多模板映射等。可以说没有正版服务,就没有ESAP的诞生,感谢勤哲杨林伟工程师的一对一陪护,那年那月那些每天研究到晚上10点的日子,是量变到质变的镀金岁月。
大概2013年的时候,村长的ERP已经大成,开发工作也基本完成,剩下就是偶尔的调优和小功能更新。于是闲的蛋疼,无所事事的村长一口气加了好几个ES相关QQ群,什么ES技术交流,ES研究院,ES官方群等等。本来指望能学点什么新技术,结果看了一圈,真是像电影台词一样:我说的不是你,我说的是在座的各位,都是垃圾。那种感觉就像RMB玩家氪金后,直接999级一刀秒BOSS,独孤求败,而其他玩家还是10级在慢慢砍鸡。每天各种群各种低级问题层出不穷。刚开始村长还能耐心解答,后来就把频率高的问题整理成word文档教程,再后来就开始写百度博客,然后是买阿里云自建wordpress博客,再转到github-pages博客。
从整理维护esbook到开发esap服务器,村长一直在布道ERP开发领域的金点子,金方案,希望能带动更多的人了解这个小众的圈子,也希望更多人能用上自己开发的ERP。
支持正版,人人有责,村长的布道生涯还在继续,然而天下没有不散的宴席,都2020年了,别用ES了,都换了吧……
hiahiahiahia~~~~~ε=ε=ε=┏(゜ロ゜;)┛逃
2019-12-26