1. 自定义的视图,没有FocusedRecord(需要在OnLoadData_Extend中新增)
private void OnLoadData_Extend(object sender)
{
if (this.Model.MainView.FocusedRecord == null)
{
this.Model.MainView.FocusedRecord = this.Model.MainView.AddNewUIRecord();
}
OnLoadData_DefaultImpl(sender);
}
2. 单据列表中拉取的扩展字段未能显示值,但是在单据中是正常的
如果是带放大镜的文本(实体or值集or枚举类型),需要同步刷新表的的多语言表
【038】U9私有扩展字段枚举的多语言表的SQL更新
【039】U9私有字段自定义值集的多语言表的SQL更新
3. 在本地的界面正常,但是打到测试服务器界面错乱(有很多字段未显示)
检查是否有个性化模板,如果有并且无法删除,通过URL强制删除个性化模板进行清除
4. UBF报表开发无法登录(密码是正确的,可以登录U9)
2023年7月21号的一个补丁更新的加密方式,需要升级UBF到最新版
5. SQLServer Report 2017安装之后无法在U9安装工具中连接
2017版本的报表更新了代码连接方式,需要先下载同步最新补丁才能连接
6. 调度程序读取到的配置不如预期
谨慎使用全局静态变量,特别是配置类型的,因为不同企业组织都会引用同一个DLL进行调度
7. 菜单发布包表
UBF_Assemble_AppComponents
8. 获取企业编码
string entcode = ContextManager.Context["EnterpriseID"].ToString();
string entCode = PlatformContext.Current.EnterpriseID;
9. 子行的明细行里面的弹性域名称需要自定义,不然会取默认的"DescFlexField",会报错找不到列
public void AfterCreateChildControls()
{
//弹性域设置
FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.FlexFieldPicker0, this.Model.CheckOrderHead) });
FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.FlexFieldPicker5, this.Model.CheckOrderHead_CheckWorkItemDetailLine_CheckWorkAppearanceLine, "DescFlexFields") });
FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.FlexFieldPicker3, this.Model.CheckOrderHead_CheckWorkItemDetailLine_CheckWorkCommentLine, "DescFlexFields") });
FlexFieldHelper.SetDescFlexField(this.DataGrid7, this.DataGrid7.Columns.Count - 1, "DescFlexFields");
FlexFieldHelper.SetDescFlexField(this.DataGrid8, this.DataGrid8.Columns.Count - 1, "DescFlexFields");
FlexFieldHelper.SetDescFlexField(this.DataGrid10, this.DataGrid10.Columns.Count - 1, "DescFlexFields");
}
10. 写了开启个性化的代码,但是个性化失效(无法保存)
开启个性化的代码必须写在AfterCreateChildControls里面
11. 打印模板在开发的服务器正常使用,但是发布到别的服务器之后报空指针引用
如果是从Model里面生成的第一份模板,是超级管理员创建的,发布应用的时候会发布到开发配置的数据库去,所以其他服务器找不到这个模板,部署到其他服务器时,需要另存为一份(可以看到另存为的后面有用户自定义的字样),然后再导出导入
12. UBF上配置了模型代码生成路径为\Code\QXQ,但是生成的代码还是到\Code里面
~\yonyou\UBFV60\U9.VOB.Product.UBF\UBFStudio\UFSoft.UBF.Business.ModelBuilder.Console.exe
ModelBuilder.BuildProject中会对targetPath重新赋值
// fullProjectFile是Model所在的目录
int num = fullProjectFile.IndexOf("Model");
targetPath = fullProjectFile.Substring(0, num + 5).Replace("Model", "Code");

可以在UFSoft.UBF.CodeGenerator.TemplateTransConfig.xml的SourceCodeConfig中配置Code的下级生成目录,Items节点的子节点为命名空间按照.分割的下标为2的字符串(例如UFIDA.U9.QXQ.XXX就是QXQ),节点内容为要拼接的下级节点(要带后\);DefaultSet为如果找不到Items子节点的默认文件夹名(例如这里配置了Main,然后有一个UFIDA.U9.Cust.XXX没有找到Items->Cust的节点就将生成路径拼接Main)

13. 菜单发布工具发布报错,ConnectionString属性尚未初始化
注释ubfenginehosting.dll.config里面值带有DBConnection的节点
<!-- <Provider type="UFIDA.U9.BS.DBConnection.EnterpriseProvider,UFIDA.U9.BS.DBConnection"></Provider> -->

14. 将报错信息提示到行
// lineRecord就是行的Record,第二个参数为触发提示的行字段
Model.ErrorMessage.SetErrorMessage(ref lineRecord, "ReplaceItem", "原料跟可替代料不能为空");
15. 列表的精度绑定

16. U9C右上角提示
弹出代码
Part.ShowWindowStatus("提示信息", true); // 第二个参数为true则显示在右上角,自动关闭
由于系统加载会覆盖ShowWindowStatus,建议将提示信息存入CurrentSessionState,在AfterRender后弹出
示例提示信息存入CurrentSessionState[“DiscountCalcMsg”]中
public override void AfterRender(IPart Part, EventArgs args)
{
base.AfterRender(Part, args);
curPart = Part as ARMainUIFormWebPart;
if (curPart != null && curPart.CurrentSessionState.ContainsKey("DiscountCalcMsg"))
{
string msg = "";
if (curPart.CurrentSessionState["DiscountCalcMsg"] != null)
{
msg = curPart.CurrentSessionState["DiscountCalcMsg"]?.ToString();
}
curPart.CurrentSessionState["DiscountCalcMsg"] = null;
if (!string.IsNullOrEmpty(msg))
{
var headRecord = curPart.Model.ARBillHead.FocusedRecord;
if (headRecord.ID > 0)
{
msg = $"单号:{headRecord.DocNo},{msg}";
}
curPart.ShowWindowStatus(msg, true);
}
}
}
17. 设置页签上的小箭头
//TabControl1_SelectedIndexChanged...
private void TabControl1_SelectedIndexChanged_Extend(object sender, EventArgs e)
{
//调用模版提供的默认实现.--默认实现可能会调用相应的Action.
TabControl1_SelectedIndexChanged_DefaultImpl(sender, e);
}
public void AfterEventBind()
{
this.TabControl1.NavButtonClickEvent += TabControl1_NavButtonClickEvent;
}
private void TabControl1_NavButtonClickEvent(object sender, NavButtonClickEventArgs e)
{
try
{
this.OnDataCollect(this);
NavButtonHelper.NavigateTabPage(sender, e, this.Model.SOQuotation_SOQuotationLine);
//UFIDA.U9.UI.PDHelper.NavButtonHelper.NavigateGrid(this, this.DataGrid8);
}
catch (Exception exception)
{
if (ExceptionHelper.IsUnknownException(exception, true))
{
throw;
}
IUIModel model = this.Model;
this.Model.ErrorMessage.SetErrorMessage(ref model, exception);
}
}
public void AfterUIModelBinding()
{
// 设置页签上的小箭头
SetJT();
}
private void SetJT()
{
TabPage15.ShowNavButton = true;
NavButtonHelper.SetNavButtonEnableStatus(TabPage15, Model.SOQuotation_SOQuotationLine);//方向箭头自动置灰处理,第二个参数需要绑定需要切换的Model
}
18. 标准报表的参照修改
数据库里面修改报表模板“ 标准”改成“自定义”即可修改
select a.* from UBF_MD_ASRPT_Category A left join UBF_MD_ASRPT_ReportTemplate b on a.id=b.uReportID
where a.cName like '%库存数量%' -- 找到库存数量报表的ID
update UBF_MD_ASRPT_Category set iUserDefine =1 where ID='1D39E0BA-6D0C-4CD5-AA0C-0D2E2D3B7175' -- 更新iUserDefine=1,表示自定义
评论 (0)