批量处理异常的注意事项。

by 温丽兵 2017.9.28 15:37
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。对于,需要把异常多行批量异常抛出时, 我们通常采用,把行睥异常分行增加到头实体的 BatchBusinessExceptions 接口中。 对于在SetDefaut 和 OnValidate中 抛出的异常没有问题。 但是一定要注意,在实体的OnUpdating,OnInserting,OnDeleting事件中抛得异常是不能用这种 方式抛出异常的。 这种异常不会被处理。 因为平台在OnValidate时, 抛出异常进行处理的,这时已经过了处理时机。 导致该异常信息被忽略。 而导致错误数据。  \\vm50l\CCViews\INT\UBFCode\U9.VOB.UBF.V5.0\ADF\Model\Persistence\Business\Entity\Common\Session.cs  \UFSoft\UBF\PL\Engine\CascadeService_new.cs

Tags:

UBF | D供应链

UBFStudio自定义报表发布时报错

by jizw 2017.7.27 17:26
    目前发现有两种情况导致此类报错,可以从日志看出属于哪种情况。    第一种:       UBFStudio\Runtime\UFSoft.UBF.PL.dll为旧版,从Portal拿一个新版本替换即可。   第二种,往往是数据库版本为2014或以上时:       UFSoft.UBF.PL.dll、UFSoft.UBF.Util.DataAccess.dll可能为旧版,从Portal拿一份替换下即可。        

Tags:

UBF

关于JQ中用到的bind、live、delegate、on的区别

by weiyina 2016.12.20 14:43
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。  前段时间在配合小熊童鞋做鼠标滑过单元格中文字时添加跟随鼠标位置浮动显示的div文字层效果,期间页面效果达到了,经老大指点,将原有重复绑定事件的冗余的代码给精简了。在此,做个总结谈谈它们之间的差异(备注:老portal中用到的是Jq 1.4的库)   先截图两段功能相同的代码片段            图一:                       图二(修改之后的截图):              对比两段代码发现,图一中用.bind的方式来绑定mouserover、mouseleave事件,然后下面又用live来重复绑定来调用函数,而图二中用.live的方式直接绑定事件,代码更简洁、易读,这两有啥区别了?   这样说到.bind的方式,它实际是Dom2级的事件绑定,支持在同一个DOM对象上多次绑定,例如:   HTML:      JS:       Console:                 但是.bind的方式只能操作页面中已经存在的DOM元素,也就是在.bind之后,再次动态添加的文档流中的DOM元素是没有附加上对应的事件的。例如:            HTMl:      Js:            Page:        Console:   结果显然之后动态插入的html片段并没有触发绑定click事件打印出‘555’,那么也就是说bind方式的事件绑定的应用场景不适用在动态插入页面中的DOM元素上。   那么再来说.live方式的绑定事件,查看JQ的在线手册live的位置发现将它归类于事件委派中,那么事件委派又是肿么会事?在此,我从网上借几个图来说明下:               假设右侧为一个实际页面中存在的DOM树结构,当在最内层的a标签上触发click事件,它会有一个事件冒泡的机制,(其实标准浏览器是有个先捕获到达目标源再冒泡的过程,而IE自身只有事件冒泡的过程),一层层往上最终到达document上,而我们要讲到的.live的方式实际上就是在$(document)根节点上来委派当前target目标源的事件触发,它可以用来操作动态添加的DOM元素的事件绑定,查了下JQ中文官网中关于live的描述,截图如下:         还需要说明下.live的方式必须链式直接操作DOM元素,如下截图是对比运行过的,上一种写法不报错也并不触发事件     现在在高版本的JQ API中已经将.live废弃,建议大家使用.delegate(),不过最新的版本中推荐大家用.on(),   但说到事件委派的机制,实际项目中还是应该借鉴这种思想的,比如一个菜单项有多个二级菜单项,那我们需触发每个二级菜单的mouseover事件来完成一些其他的操作。   常规的办法是:操作DOM获取当前DOM对象,然后再取得子节点的个数,然后通过for循环去给每个子项上附加对应的事件,那么问题来了?如果ul标签下有几百上千个li的子项需要附加事件操作(实际情况应该没这么夸张),这样的做法是不是很影响页面性能呢?   用js的事件委派的方式可以这样做:   H:               js:        console:       我们不需要去关心子节点是已有元素还是动态插入的,也不需要去计算它们的个数,只需要委派指定的父节点来完成对应的目标源的事件绑定操作即可。   其实上方说到的.delegate()的方式就和这个原生js的事件委派类似,.delegate它将事件处理函数绑定在指定的根元素上(并非一定是document上),由于事件冒泡,它用来处理指定的子元素上的事件,官网中有讲到它的性能是优于.bind(),它的写法很简洁,符合JQ提到的Write Less ,Do More的风格,截图如下:     最后说到.on(),最新的JQ版本中它是支持动态绑定、多事件绑定,几乎提供了绑定事件处理的所有功能,所以新版本中还是建议使用这个方式来做事件绑定处理。文中所讲的若有出入,欢迎提出,O(∩_∩)O谢谢           参考资料:http://www.jquery123.com/          https://apijquery.com/            http://kb.cnblogs.com/page/94469/      

Tags:

UBF

查询列表画面中常见问题的解决办法

by 温丽兵 2015.7.16 13:27
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。查询列表常见问题及解决办法.doc (664.50 kb)

Tags:

UBF | D供应链

分布式事务错误及解决配置方式

by 祁宏伟 2014.2.28 11:25
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。MSDTC事务错误及开启方式: System.Transactions.TransactionAbortedException: 已中止事务。 ---> System.Transactions.TransactionPromotionException: 试图提升事务时失败。 ---> System.Data.SqlClient.SqlException: 服务器 'PT09' 上的 MSDTC 不可用。 这种是服务没有开启,一般不会出现,默认是服务启动的。     System.Transactions.TransactionException: 该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025) ---> System.Runtime.InteropServices.COMException: 该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025)          把该勾的都勾上。 3. 应用服务器和数据库服务器最好关闭防火墙,如果开启,请把DTC加入例外.       其它: --如:虚拟机标识重复。每台服务器重装一下DTC就可以了。    

UBF-持久化提交更新-去除乐观锁检查更新接口

by 祁宏伟 2014.2.21 15:32
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。 后台接口很简单,就是session 上有个实例方法:DisableOptimisticLock            public void DisableOptimisticLock(ICollection<BusinessEntity.EntityKey> keyList)   说明:         调用接口后, 指定的实体更新时,正常数据提交,但不进行乐观锁(版本)检查,也不进行版本更新(Sysversion不加1) 。    用途:         多人同时更改备料不同行时,对备料进行修改时,会自动更新头MO, 而导致版本冲突。         解决方案可以调用这个接口,将MO.KEY加入到不进行乐观锁检查集合中。   UI 层的支持:        由于一大部分界面走通用CRUD,没有机会在后台赋值,因此在UI上直接提供了支持。        UI上定义了一个特殊常量:  CommonCRUDHelper.IgnoreVersion  =-999  .     表示版本不进行乐观锁处理。       只需要在UI层,将相应的MO的UIRecord记录的Sysversion赋成 CommonCRUDHelper.IgnoreVersion       通用CRUD会自动调用Session的DisableOptimisticLock()。来完成不进行乐观锁检查更新。    

Tags:

UBF

CLR_AllocSerials 出错问题汇总

by yangli 2014.1.22 16:37
CLR_AllocSerials-出错问题汇总 [更多...]

Tags:

UBF

2.8环境一参照就报AppliactionIntent关键字问题

by lifengb 2013.10.15 13:48
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。2.8环境一参照就报AppliactionIntent关键字问题,是由于部署SQL 2012导致的,解决方案如下:   1.应用服务器需要打.NET 4.0.2HotFix:DotNet402-NDP40-KB2544514-x86-x64.exe。 另:.net 2.0HotFix:NDP20SP2-KB2654347-x86.exe。路径:\\u9lifengb2003\share\U9工具\SQL2012HotFix 解决问题:.Net 4.0 AppliactionIntent关键字支持,U9查找、参照依赖这个补丁。 (主要打这个就行,其它为解决其它问题) 2.应用服务器需要打 KB2533523 补丁  解决问题:并行计算数据库连接泄露  3.报表服务器需要打KB2654347补丁,Windows2008安装6.0补丁,windows 2008R2安装6.1补丁。  解决问题:报表支持SQL 2012 AlwaysOn。    

在JMF版本的新UI中,如何在TabControl中隐藏页签

by 尹明君 2013.6.5 15:51
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。因在JMF版本中,页签的TabPage的Display和Visible属性被用于切换TabPage,而有些情况下开发需要隐藏页签(以及对应的tab页签的的标签头),这种情况下使用UFTabPage的IsHide属性,表示该页签(以及对应的tab页签的的标签头)不应该在TabControl中显示; 另外,如果TabControl中只有一个TabPage的IsHide属性为false(只有一个页签可以显示),可以通过UFTabControl的AutoHiddenLastTabHead API控制整个标签头是否显示(标签头占用的布局空间不会改变)。  

Tags:

A最新公告 | UBF

在JMF新UI框架的Client工程中访问数学函数

by 尹明君 2013.5.14 14:04
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。在client工程中访问ScriptSharp提供的System.Math类,里面有做基本数学运算需要的基础函数。 基本定义如下:     public static class Math{ //数学常数public static double E;public static double LN10;public static double LN2;public static double LOG10E;public static double LOG2E;public static double PI;public static double SQRT1_2;public static double SQRT2;// 数学函数public static Number Abs(Number n);public static Number Acos(Number n);public static Number Asin(Number n);public static Number Atan(Number n);public static Number Atan2(Number x, Number y);public static Number Ceil(Number n);public static Number Cos(Number n);public static Number Exp(Number n);public static Number Floor(Number n);public static Number Log(Number n);public static Number Max(params Number[] numbers);public static Number Min(params Number[] numbers);public static Number Pow(Number baseNumber, Number exponent);public static Number Random();public static Number Round(Number n);public static Number Sin(Number n);public static Number Sqrt(Number n);public static Number Tan(Number n);public static int Truncate(double n);public static int Truncate(Number n);public static int Truncate(float n);}

U9自定义函数简介

by 祁宏伟 2013.4.19 15:58
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。 1. U9的自定义函数种类 分为 表达式函数  与   SQL函数 两种。 2. 分别的用途:          表达式函数用于表达式计算,对于权限中的增删改权限判断就是表达式计算,还有通知、预警等相应的数据判断也是表达式计算。          SQL函数 用于 查询时进行代入计算,如权限中的 查询权限可以用的是SQL函数。          简单的判断方式: 自己想一想,这个函数所处的运行上下文是在做什么,如果是正在从数据库查询数据时运算,那就是SQL函数,如果是对实体等已经加载对象进行计算判断,那就是表达式函数。       用错会怎么样:            目前,如果把SQL函数用到了表达式计算中,会导致计算错误,但没有异常。原因:SQL函数的计算结果就是SQL函数本身串。             而如果  表达式函数用于SQL函数中,会导致出现异常。 异常是OQL解析的过程中发生。具体错误:    无法将类型为“UFSoft.UBF.Util.Expression.Scripting.ImperativeInterpreter”的对象强制转换为类型“UFSoft.UBF.Util.Expression.Query.IOQLVisitor”。 3. 注册:          两种函数都是注册到 ubfScript.xml(U9内部使用) 或 Script.xml(客开第三方使用)  在Portal ApplicationServer 等的bin目录下。 下面分别为表达式函数与SQL函数 注册示例:         <assembly name="UFIDA.U9.CBO.FI_TBBP.dll" >                    <type name="UFIDA.U9.CBO.FI.TB.Expression.TBFunctions" >                 <function name="TBFigureValFunction" method="GetFigureValFunction" />              </type>        </assembly>          <sql  name="fn_AP_GetAPBillCanEnjoyDiscount" owner="dbo"/> 4. 出补丁:         ubfScript.xml 文件补丁只可有 UBF出,位置:  Upgrade\Support\UBF\Files 目录下。        同时,如果需要在表达式编辑界面能够显示出相应的函数,还需要在数据库表中注册。    相关表: Base_ExpFunction   脚本自己放在自己应用下的  PostSql 中。   5、其它    IIF 是三元判断表达式函数 ,对应的OQL上使用  sqlIIF 函数  .    其它函数类似,现在要求SQL函数和表达式函数是要分别注册的。    注意 SQL的函数表达式,select from 等关键字需要用小写。    

Tags:

UBF

遇到新JMF框架下参照返回值不触发chang事件的情况,如何解决?

by 尹明君 2013.3.29 17:02
JMF下参照控件的chang事件不会被触发,如何解决? [更多...]

个性化从卡片跨页签移动到Grid时模拟切换页签逻辑分析

by lkc 2013.3.21 16:44
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。使用个性化功能创建从卡片移动到Grid的列后会涉及如何同步列状态与控件本身状态的问题,目前使用的逻辑是这样的 1、在服务器端创建列时,直接设置该列是可用的 代码 2、在客户端输出一段逻辑,当焦点进入个性化列时调用callback逻辑模拟切换页签并返回控制逻辑的JS脚本 代码   IsNeedSwitchTabPage : function(colIndex,rowIndex) { if(typeof(colIndex)=="undefined" || colIndex==null || colIndex=="" || colIndex<0) { colIndex = this.m_currentColumnIndex; } if(typeof(rowIndex)=="undefined" || rowIndex==null || rowIndex=="" || rowIndex<0) { rowIndex = this.m_currentRowIndex; } var hasCol = (colIndex>=0 && colIndex<this.MainCols.length); var ctrl = (hasCol ? this.MainCols[colIndex].ColEditCtrlClientID4P : null); var isVisible = (hasCol ? this.MainCols[colIndex].style.display!="none" : false); return (ctrl != null) && isVisible && ((this.m_currentRowIndex4PCol != this.m_currentRowIndex) || this.GetClientRowDataDirtyTag(rowIndex)); }

在JMF的客户端关联控制中,如何控制控件的Postback行为?

by 尹明君 2013.3.18 15:22
JMF 客户端 post 控制 [更多...]

Tags:

A最新公告 | UBF

如何诊断U9登录页面出现的脚本错

by 尹明君 2013.2.22 16:14
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。如果发现是“ 'WebForm_CallbackComplete' 未定义”的错误,可以判断是没有加载ASP.NET的脚本文件导致。 一般,导致资源文件没有加载,有以下几个可能: 1、修改了web服务器的时间 因为微软在加载资源文件的时候设置了相应的检查策略,如果修改后的时间比资源所在的DLL的时间还往前,就会出现异常,导致资源加载失败。 2、修改了User-Agent头信息 某些(高端)路由器可以自定义User-Agent信息,某些(低端)路由器直接替换User-Agent。如果ASP.NET没有检测出正确的浏览器版本,也会进入同步模式,涉及到异步更新的脚本都不会加载(AJAX框架是属于异步更新的部分,U9对它有依赖)。 检查User-Agent信息是否被修改,可以访问www.useragentstring.com来查看。 3、未将U9加入到信任站点 不会出现前面描述的错误,但是会导致一些脚本文件的加载出现javascript的运行期错误。 应该将U9加入到信任站点,并将信任站点的安全基本设置到“默认-中低”  

开发JMF版本的UI的插件

by 尹明君 2013.1.8 11:19
JMF Form UI插件 [更多...]

第三方调用U9API的用户权限校验API

by 祁宏伟 2012.12.28 15:13
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。 主题 第三方调用U9API的用户权限校验API 发件人 祁宏伟 收件人 '李培圣' 发送时间 2012年12月28日 15:08     新UBF支持新ISV服务代码生成,代码生成会更精简,类型更简洁。 --注:需要更新UBF,目前UBF开发环境没有补丁,需要手工拷贝新环境 。该环境非必须更新,只是更新后,可开发更简洁的ISV服务。 API权限校验机制与示例: 通过提供两个LoginSV  与  LogoutSV 服务来进行登陆与登出,登陆时会返回一个Guid,作为Token,后续的服务必须将将这个token传入到上下文中, 才可正确的调用,否则服务调用会报错。 --需要打开ISV服务验证功能。        Portal\bin目录下UFSoft.UBF.Service.dll.config 文件. 增加:    <add key="isISVSecurityCheck" value="true"/> --注:登陆LoginSV 与 LogoutSV 是采用新的UBF生成的新ISV代码,所以,接口有区别,原IContext现变成 ISVContext,类型会简洁.    ISVContext中要求传入的均为编码如: OrgCode 、 UerCode … 示例代码:         private System.Guid Login()         {             UFIDAU9ISVLoginSVILoginSVClient loginclient = new UFIDAU9ISVLoginSVILoginSVClient();             System.Guid token = loginclient.Do(GetISVContext(), "登陆用户","登陆密码");             return token;         }         private void Logout(Guid token)         {             UFIDAU9ISVLoginSVILogoutSVClient logoutClient = new UFIDAU9ISVLoginSVILogoutSVClient();             logoutClient.Do(GetISVContext(), token);         }         //新的ISV的Context接口比较简单         private UFSoft.UBF.Service.ISVContext GetISVContext()         {                 UFSoft.UBF.Service.ISVContext isvContext = new UFSoft.UBF.Service.ISVContext();                 isvContext.EntCode = "001";   //登陆到对应的企业编码                 isvContext.OrgCode = "wsf";   //登陆到对应的组织编码                 isvContext.UserCode = "wsf";  //对应的操作用户—如仅登陆可不传                 return isvContext;         }             客户端调用正常服务代码时增加下面逻辑:          context.nameValueHas.Add("SVSecurityToken", token); //将上面登陆成功获取的token传到上下文中。 对于使用新ISV服务生成的客户端,调用更加方便: 仅需要对GetISVContext() 后给 isvContext.Token = token ;赋上值就可。     如果对于传输安全要求比较高:需更改配置文件。(默认明文传输,改后为加密传输) Portal\Services\web.config 文件 将下面改成红色内容(如果无下面内容就直接添加.)       <service name="UFIDA.U9.ISV.LoginSV.LoginSVStub" behaviorConfiguration="U9SrvTypeBehaviors">         <endpoint contract="UFIDA.U9.ISV.LoginSV.ILoginSV" binding="wsHttpBinding" />       </service>       <service name="UFIDA.U9.ISV.LoginSV.LogoutSVStub" behaviorConfiguration="U9SrvTypeBehaviors">         <endpoint contract="UFIDA.U9.ISV.LoginSV.ILogoutSV" binding="wsHttpBinding" />             </service>     注: 配置更改后,必须重新生成客户端代码(或者部署时就直接改成wsHttpBinding)                注:业务服务不建议全改成wsHttpBinding方式,对调用的性能会有影响 。     相关补丁: \\20.10.3.35\现场补丁\V2.5补丁\集成流\20121228\UBF补丁3 \\20.10.3.35\现场补丁\V2.5补丁\集成流\20121228\PUB补丁2 UBF更新: \\vm97\CCViews2.5_Int\U9Product\U9.VOB.Product.UBF\UBFStudio    

Tags:

UBF

JMF 框架下,实现TabPage的隐藏

by 温丽兵 2012.12.24 09:54
注:脚本执行有风险,对于客户正式环境请在研发指导下执行。控制中,我们要实现控件的隐藏,一般采用如下的方式 control.Visible = false  但是在新的JMF框架中,对于TabPage有一定的特殊性,在这里TabPage的是否隐藏实际上要做的是要对TabPage头的是否隐藏.所以需要采用新的接口 TabPage.IsHide = true;    

Tags:

UBF

如何排查多个工作流引擎连接同一数据库的情况

by 吕洪雨 2012.12.14 10:21
工作流 同一数据库 [更多...]

权限-角色-预置全应用查看员角色脚本

by 祁宏伟 2012.12.13 09:31
权限-角色-预置全应用查看员角色脚本 [更多...]

RecentComments

评论 RSS

部件 Statistics 未找到.

索引超出了数组界限。X