【001】U9问题集
侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 2 条评论

【001】U9问题集

秋驰雪隙
2025-04-07 / 0 评论 / 20 阅读 / 正在检测是否收录...

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");

767700e1e1144d3fafefc1bb946bfa40.png

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

13. 菜单发布工具发布报错,ConnectionString属性尚未初始化

注释ubfenginehosting.dll.config里面值带有DBConnection的节点
<!-- <Provider type="UFIDA.U9.BS.DBConnection.EnterpriseProvider,UFIDA.U9.BS.DBConnection"></Provider> -->

de66b0ec2f884adaafa4c1084fcb2b2e.png

14. 将报错信息提示到行

// lineRecord就是行的Record,第二个参数为触发提示的行字段
Model.ErrorMessage.SetErrorMessage(ref lineRecord, "ReplaceItem", "原料跟可替代料不能为空");

15. 列表的精度绑定

列表精度绑定.png

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

评论 (0)

取消