- 博客(165)
- 收藏
- 关注
原创 完成一个BOM查询带价格信息的工具
之前做的一个类似的查询工具,用户总是不断的变化规则,C/S的架构使得更新的工作不胜其烦。一直想做一个web的工具。对web的开发却是心有畏惧,太丑了不能见人。在WorkBuddy的加持下,鼓起勇气尝试了一把,效果如下。全程没有写一行的代码。能有这样的效果,令人不禁害怕AI工具的能力。用过一次就爱不释手,如当年看上ORM,因为它不用再写一句SQL语句。现在是不用一行代码。把自已的思想跟AI做深度交流就可以了。
2026-11-05 19:42:21
23
原创 IIS部署Net Core8.0项目后提示‘找不到应用程序’
做一个NetCore8.0的项目,在IIS部署之后,http://192.168.82.231:8087/ 浏览器中执行这个是正常的,如果在IIS中单击浏览,就会报 ‘找不到应用程序’,为什么会这样?WorkBuddy是这样分析的,见下。改完后,IIS 里点“浏览”就会用新浏览器打开。→ 应用 → 默认应用 → Web 浏览器 → 选 Chrome(或 Edge)1、安装一个aspnetcore-runtime-8.x-win-x64.exe。检查后发现不存在,就坐实了这个问题。,走图形界面最可靠。
2026-11-02 23:04:43
194
原创 U9 无授权的模式WebAPI开发的总结
/有二种方式:1.直接调用U9的服务类,UFIDA.U9.CBO.PubSV 2.通过WebService调用U9的服务类,UFIDA.U9.ISV.Supplier。//执行查询,返回一个供应商DTO的集合,里面包含了供应商的各种信息。//UFIDA.U9.ISV.Supplier.dll 里面有一个供应商的SupplierDTO实体类对象,可以用于存储数据,返回数据。/// 新建项目时选择"类库(.NET Framework)",注意不是".NET Core"或".NET Standard",
2026-10-24 21:22:59
166
原创 重写了一个BOM查询的脚本
通过实践,验证了一直在脑海中的思维,BOM的查询一直存在效率低下的问题,此次用CTE逻辑重写之后,有明显的改善。-- 3a. 最近一次采购的供应商名称 + 价格(合并原 FN_LYJ_GetItemLastSupplierName 和 FN_LYJ_GetItemLastPrice)ISNULL(A16.[Code], '-') AS [成本币种_Code],ISNULL(A17.[Name], '-') AS [成本币种_Name],-- 优化:一次扫描,ROW_NUMBER 分组取最新。
2026-10-17 23:53:07
229
原创 U9C WSS项目的学习成果
从一个用友U9的一个客开高手学习了WSS开发技巧,积累了不少可用于实际工作的经验值。WSS对U9服务进行无侵入式包装,采用Web API Json的服务架构。提供自定义代理功能。采用Log4Net记录服务的调用日志及数据库日志(DBLog)功能。U9-WSS 全称U9 Web Sample Service。支持U9 5.0、U9 6.0、U9 Cloud等版本。统一的调用路径,支持调用BP、SV、轻量化服务。WSS部署简单、快速应用、可灵活、按需扩展。通过灵活的配置,可支持不同的应用场景。
2026-10-11 22:38:21
206
原创 开发一个可以用APIFOX来调试的接口
WMS项目需要U9C一部份单据SQL视图,或是实际数据提供给鼎捷WMS顾问。用友U9的OpenAPI清单要么没有合适的开放,要么是不符合WMS的需求。只好自已封装匹配的WebAPI接口。尝试了一下,效果还行。APIFOX有这样的功能,当以上接口调试成功了,它可以为你生成具体C#调用脚本。还可以生成其它工具的脚本,开发效率极高。
2026-10-06 23:18:41
235
原创 2个SQL数据库服务器间的查询
工作需要,经常要在2个U9 ERP间的数据库相互查询。前提是要在2个SQL SERVER建立链接服务器记录才可以。老是忘记,做个备份吧。
2026-10-04 00:04:43
70
原创 U9客开中UI插件开发过程中碰到有一个坑
今天碰到一个这样的问题,在请购单列表上做了一个【模拟提交】的按钮,目的是取代原来的【提交】按钮,目的是可以加上个性化需要的防呆措施,实现客制化的目的。操作:PRSubmitBPNew的参数:PRLineKeys设置不正确,此异常出现的原因为该操作的调用方提供的参数值不正确导致。//在BE界面上才可以调用提交按钮的SubmitClick方法,UI界面上不可以调。曾几何时用var去标识,是不破的万金油,每每顺利解决掉阻碍。rec 竟然还有另外一种类型的匹配,相关的dll文件内部有BUG吧。
2026-10-03 23:09:15
183
原创 在U9C订单列表上开放多个按钮层叠的问题解决
"True", //是否自动回发(早期赋值,后面会被 isSubmit 覆盖)true, //是否提交按钮(最终 AutoPostBack 值)// 找到工具栏(常见名称:Toolbar1/Toolbar2,可用 F12 查看)"btnSendEmail2", //按钮控件 ID(唯一标识)",// 确认消息内容。"9", //Tab 键切换顺序。100, //按钮宽度(px)"True", //是否启用。"True", //是否可见。20, //按钮高度(px)
2026-10-01 10:37:52
198
原创 如何查找U9 BE实体对象中的字段名
近来做U9 UI插件开发,需要从UI窗体WebPart实体中获得相关字段Value,U9对字段名字的处理是有特色的,跟SQL表中实际名称不同,调试时总是报错没有这个字段名(瞎起名嘛)。在Debug时发现一个技巧,完美解决了资料短缺的BUG,同时解决掉数据字典中信息不正确带来的烦挠。发现这个地方的数据展示形式,顺带解决掉数据取值的问题。
2026-09-25 15:38:37
62
原创 U9订单列表中实现PLM零件承认书的校验
之前没有成功的原因是,WebPart中的Toolbar, DataGrid的名字不正确导致的,从其它项目中拷贝过来的代码,不记得修正。前几天忙于MES系统项目,思维不够清楚,没有做出来给那帮投机取巧的家伙利用上了!让它们偷偷乐几天吧。国庆假期结束,又是一片哀嚎,此起彼伏。公司要求在订单列表中执行提交时,对PLM零件承认书合规记录做一次校验。做过几次了,念念不忘这种管理思维。
2026-09-25 15:24:33
137
原创 U9 BE插件的调试
终于有了一个美好的结果。BE插件算是掌握到精髓了吧。可以随心所欲编写,设计,配置自已想要实现的业务逻辑。总结一下,BE插件对当前单据对象可以做一些校验,赋值,也可以对第三方对象做一些操作。在配置文件上掉了不少次坑。总结一下,类名是可以随意命名的,望文知义就可以了。关键是当前实体单据对象的类名,方法名一定要正确。
2026-09-13 17:54:28
101
原创 找不到指定的SDK(“Microsoft.NET.Sdk.Web“)
应对既将开始的U9客开始的工作,重新安装主机的操作系统,配套了U9的demo环境。不小心装成了x86 32位的系统,带来2个问题。1、网卡驱动有问题。2、VS在创建新项目时,竟然出现标题所示的错误提示,项目也不能正常创建成功。如果 PATH 中 x86 路径排在前面,系统会调用 x86 版本的 dotnet.exe,而该目录下可能没有 SDK,就会报找不到 SDK。如果 PATH 中 x86 路径排在前面,系统会调用 x86 版本的 dotnet.exe,而该目录下可能没有 SDK,就会报找不到 SDK。
2026-09-13 12:08:49
223
原创 踩过一个U9客制化开发中的坑
最直接有效的办法是抛异常,而不是依赖 executeDefault = false。在 U9 的 BeforeEventProcess 中,抛出异常会直接中断整个提交流程,框架无法忽略它。-- AI给的提示,换了一种错误提示的方法,就实现了目标。U9的封装一直受人诃病的,我算是撞上了吧。看原生态的脚本,从头到尾都是“千篇一律”,原来是有其道理的。追求个性化的效果,结果给自已挖了一个大坑。
2026-09-07 22:19:55
181
原创 记录U9客开项目的部署
近来项目少做的原因,U9的一个客开模式(CustomProxy),开发结束后老是忘记具体部署是怎样的,为此浪费掉不少时间。在Portal目录(X:\yonyou\U9CE\Portal ==>U9C)下建立一个wss目录,将以上开发的文件拷贝放入其中。有一个公共文件还需要复制到Portal\Bin目录下面。
2026-09-05 16:20:10
174
原创 一个零件承认书管控的U9客开
企业上线了PLM系统,其中有ECN,零件承认等业务流程。领导要求ERP开立订单时跟PLM的ECN、零件承认的数据做一个关联判断。零件承认书管控MP4。
2026-08-30 21:35:47
17
原创 总结一下U9客开的成果
2021.11—2024.07,走"外挂"路线,试图复制一套U9C产品。受限于用户授权数量,作品虽多但推广困难——用户需要在两套系统间来回切换,体验不佳。仅少数用户因U9本身功能短板,持续使用着我的外挂(如BOM统计产品成本)。2024至今,战略转型,放弃外挂开发,全面转向U9 WebAPI客开模式。围绕BP、BE、UI开发了一系列插件,将能力内嵌于系统之中,用户无感切换,体验显著提升。
2026-08-16 21:25:02
209
原创 Redis端口冲突造成U9不能正常运行
刚开始是惊慌失措的,以为又要重装一次U9的了。几近要放弃时,抱着试试看的思维,问AI吧。看到这样的分析,恍然大悟,Redis + Mongodb是2个系统共同要用到的!MES系统的版本高,分析是有覆写相关文件的嫌疑。顾问在我的U9 DEMO服务器上安装mes的环境,选成U9突然没有了响应,刚好手上有个项目要赶,因为此造成的停顿被领导批了。U9重装一次,要把人弄得精疲力尽的,不敢轻易去试。打开链接时,有以下提示。提施:1、默认的80端口改成 8182 2、Redis的端口改成 6780 重启之后,果然成功。
2026-07-16 22:19:59
218
原创 U9状态机钩子的写法
只在单据从"开立"变成"审核中"的那一瞬间,才继续往下执行;其他任何情况都直接返回。这是 U9 插件里非常常见的"状态机钩子"写法。
2026-07-05 21:27:04
34
原创 U9C编码结构冻结状态处理方法
新开一个组织的账套中,再次碰到这样的问题,有一些参数的编码结构默认是冻结状态的。如地区,库位,料品分类,供应商分类,客户分类等。处理方案如下图所示。
2026-07-01 13:06:54
42
原创 U9的错误提示文字要求在服务器端才能看到
U9一些错误提示,不会在客户端显示,而是要求用户去服务器端做同样的操作,才能知道具体的提示文字。一直不明白其中的逻辑是什么。近来做PLM系统的数据交互的项目,调试过程中也发生同样的错误形式,因为可以debug脚本了嘛,无意中发现U9是如何处理的逻辑所在。如图所示,用throw new UFSoft.UBF.Business.BusinessException(...)抛出来的错误提示,要在服务器端才能看到。
2026-06-29 09:12:39
192
原创 U9 UBF中HeuristicLocator 设计意图不是“帮你找配置文件“
2 U9的类库 UFSoft.UBF.Util.Configuration。借助AI分析,才明白U9 UBF的设计思维与知识储备不一样。它的真实含义是:启发式配置源定位器(UBF 专属),它只干一件事。说得是U9是纯.Net Frameworks框架,平时里的分析,学习,深刻感受到与自身的知识结构不匹配,有心无力的感觉。项目的原因,需要与PLM做数据对接交互,涉及到要在配置文件读取mysql连接字符串。1 原生态的System.Configuration,读取web.config文件顺利无障碍完成。
2026-06-29 08:45:25
172
原创 U9采购订单与PLM系统的数据对接
端午假期3天,完成一个采购订单要以零件承认书来管控的企业策略。零件承认书是来自于PLM系统的数据。订单提交时,收集U9界面上的数据,料号,供应商,以此信息去PLM数据库查询承认书的相关信息,确定该订单是否可以提交。U9订单与PLM数据对接。
2026-06-21 23:24:52
187
原创 Integrated Security=True(Windows 集成身份验证)
简单来说,就是“你的程序用当前电脑的用户去连数据库,但数据库不认识或不信任这个用户”。SqlException: 登录失败。该登录名来自不受信任的域,不能与集成身份验证一起使用。再次碰到这样的错误提示。
2026-06-12 23:20:02
213
原创 resx文件上具有 Web 标记
这个错误通常发生在从网络下载、通过聊天软件接收或从其他电脑复制过来的 Visual Studio 项目中。Windows 为了安全,会自动给这些文件打上“来自网络”的标记(Web 标记),导致编译器拒绝处理。错误 无法处理文件 frmMain.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记。勾选“解除锁定”(或点击“解除阻止”按钮),然后点击“确定”。在弹出的属性窗口底部“常规”选项卡中,找到“安全”一栏。鼠标右键点击该文件,选择“属性”。
2026-05-30 17:18:06
283
原创 MES系统的悟道过程
受益于富士康工厂MES系统的应用的学习,及对富士康工厂MES系统逻辑的思考。一夕悟道,知道MES怎么玩了! 所有的工站变化,其实都只是在和那几个接口文件“对话”。
2026-05-27 23:37:41
72
原创 MES系统过站不良品记录时弹窗提示输入密码
一直以为SQE的核心价值是赋能供应链成长,结果今天算是开了眼。某些所谓大厂出来的“品质警察”,进门就摆谱拿架子,除了嗓门大、脾气爆,剩下的只有对产线MES系统的指手画脚。可惜,只会挑刺却提不出半点建设性方案,除了打压供应商自信,看不出对质量提升有任何帮助。SQE若只懂问责不懂共建,那不叫质量管理,那叫质量霸权。
2026-05-23 22:49:30
49
原创 U9C模拟成本计算的执行过程
机缘巧合,分析一个问题时,无意中把U9C的成本卷积计算的过程找了出来。巨量的代码,阅读,分析,理解要花很多时间!Agent智能体这么火,丢给它们试试吧。自个完全理解后总结出来这样的列表,要多少时间?AI花了一分钟不到!
2026-05-22 21:51:49
48
原创 U9的UI插件开发Card功能区上客开的按钮不能正常显示
做一个客开的测试过程中,碰到一个长期没有解决掉的问题,U9客开的按钮可以在3个地方开放出来,分别是1,工具栏上添加,2,功能区添加,3,功能区下拉列表上添加。功能区上的添加的按钮一直不能正常显示出来,分析了很久。为此手上的一个项目迟缓了一周没有进度。用友对外公布的资料中有说到是一行中允许的按钮数量有限制。需要后台修改UIModel才可以。UBF去上修改标准的元数据方法没有找到合理的方法。于是想利用AI工具是否可以给一个破解限制的方案。以下是元宝给出的"答案"。
2026-05-20 20:24:26
338
原创 U9客开Demo代码中的错误
/拿到按钮上的文本。U9公开出来的代码大概率是同一个来源,文字都是一字不差,其中错误也是一样。来源是官网上的Demo吧。错误造成用户的学习进度缓慢,甚至有放弃的念头。借助于GitHub Copilot工具,问题迎刃而解。知道了原因是什么,记录一下,以免忘掉又要花时间去分析。$"alert('单击的按钮是 {btnName}');
2026-05-19 14:32:18
72
原创 U9开发模式之一门面模式的理解
学习一个系统,关键是要对它的各种逻辑有深入的认知,才能对它有深刻的理解,日常工作中才能解决系统带出来的种种问题。下面对其的一个开发模式做个个人理解的说明。这起码是个人初学编程阶段的写法了吧。一句一句写,请楚明了。肯定不能符合编程高手们的思维了吧。于是门面模式的概念出来了。首先是拆分出来以下3个类,而且每个类中尽量只有一个方法,这样的设计原则在u9的客开,或是自身的开发中比比皆是。以上的拆分一般也是已经存在的类,方法了吧。从以上这个简单例子看到,这无非是极致的封装。一般的开发模式中,可能是这样的写法。
2026-05-18 23:38:43
200
原创 U9的UI插件客开的总结1
手上有了项目要做,压力之下,不得已重新拾起UI插件学习,在AI工具的帮助下,之前的阻碍解决了!UI插件可以集成在一个.cs文件中,如 LYJ.U9C.CUST.PluginUI.dll。Demo中就有销售订单,请购单不同种类单据的应用,有没有冲突,在以后的工作中观察,分析吧。U9的客开有一个特点,插件有一个.XML或是.config配置文件,以上的集成,如下面一样标识清楚,系统是正常运行的,功能上没有发现异常。--从ClassView中拿到webpart-->--程序集名.dll-->
2026-05-17 17:01:01
207
原创 U9系统admin用户账号密码生成Do方法
2、增加二次加密验证:需要使用sql二次校验 var sql = string.Format("select id,name from Base_User where code ='{0}' and password=upper(substring(sys.fn_VarBinToHexStr(hashbytes('MD5', CAST('{1}' as varchar(50)) + convert(char(36),base_user.salt))),3,32))", code, password);
2026-05-14 22:11:04
270
原创 U9 WCF调试的一个坑
这个坑导致3个晚上2点之后才睡!总是提示415错误。用AI工具不断分析,不知所云,没有解决掉。最后是腾讯云Codebuddy的提示让我清醒过来,找到原因。总结一下,AI工具很好用,还是要收费的版本才能帮到你!另外一个关注点是,web.config里面的配置要成对的。
2026-05-09 16:59:02
43
原创 U9一种客开方案的解决
U9客开有多种形式,其中OpenAPI,WebService的方案有实际项目运行中。实际上是请求格式标准, / Content-Type / WrappedRequest 与 BodyStyle = WebMessageBodyStyle.Bare 的差异导致了调试时,总是报415错误。从这里可以看到,另类的客开思维是纯正的反射应用。格式也是标准固定化的,符合用户习惯,变化大的话,理解上也是困难。-CustomProxy是自定义,用来存放接口文件的目录。碰到的坑时,JSON格式处理上的差异造成的。
2026-05-09 15:50:44
458
原创 U9的OpenAPI接口的应用
var requests = new List<RequestParemetersU9> { //要放到指定的目录中才行!看到这样的结果,心中有了曾经实现过的需求,是否可以把U9的审批操作搬到企业微信去做?/* 处理 result.ErrorMessage 或 result.StatusCode */OtherID = "0304",//第三方传入数据标识。Code = "PO0125120001",//单据编号。ID = 0 //操作的档案ID或者单据ID。/* 处理 body */
2026-05-01 23:02:16
577
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅