【第19期】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选 2024年4月发布原创
金蝶云社区-OUT_MAN
OUT_MAN
9人赞赏了该文章 568次浏览 未经作者许可,禁止转载编辑于2024年12月03日 14:21:21
summary-icon摘要由AI智能服务提供

版主OUT_MAN在金蝶云·星空-协同开发产品应用中分享了多个典型/热门问答,包括服务插件的校验器注册、预计可发量查询接口的参数设置、单据按钮功能按用户区分、审核后修改表单字段背景颜色、跨库锁库的实现方法、数据中心锁定后的开发限制、公有云正式环境多应用的影响及菜单控制等,并提供链接供学习交流。

各位社区的小伙伴们,大家好,我是  版主 OUT_MAN



在金蝶云·星空-协同开发产品应用中,你需要了解的典型/热门问答都在这里!  

本帖每月持续更新,欢迎小伙伴们点赞,收藏本帖,CTRL+F关键词搜索,以便随时查看、扩充知识哟


嗨,朋友们!金蝶云社区创见者评选火热进行中,点击链接,和我一起参与投票,小米手环、颈部按摩仪等大奖等你赢!


【第19期】

  更新日期:2024-4



1、 服务插件 BeforeExecuteOperationTransaction 在列表中选择多张单据问题


问题描述:

在列表中选择了多张不同的单据,有的满足条件,有的不满足条件。
现在只要一行不满足条件全部都不能审核成功。
怎么才能然满足条件的审核成功,不满足条件的不审核成功。

image.png

解决方案:

抛错就全失败了,要在插件中注册校验器,在校验器处理检查

二开案例.服务插件.OnAddValidators: https://vip.kingdee.com/link/s/l2Ckh 

问题来源:https://vip.kingdee.com/link/s/lXfjn       


2、 预计可发量查询 GetExpectQtyForReport


问题描述:

哪位大佬调用过预计可发量查询的插件接口,参数这里要怎么搞

image.png

解决方案:

参考如下代码:
//查询预计可发量
private  List<DynamicObject>  GetExpectQtyInfo()
{
    ExpectQtyQueryParameter queryParameter = BuildQueryParameter(this.Context, Convert.ToInt32(strMaterial), Convert.ToInt32(strOrgId));
    List<DynamicObject> expectQtyForReport =
    ExpectQtyQueryServiceHelper.GetExpectQtyForReport(this.Context, queryParameter, false);
    return expectQtyForReport;
}
//构造查询参数
        private ExpectQtyQueryParameter BuildQueryParameter(Context ctx, long materialId, long orgId)
        {
            ExpectQtyQueryParameter expectQtyQueryParameter = ExpectQtyQueryServiceHelper.BuildDefaultQueryParameter(ctx);
            expectQtyQueryParameter.ExpectQtySystemParameter.CustomAvaSysArgs = GetAvaSysArgs();
            //添加物料MasterId过滤
            expectQtyQueryParameter.MasterIdFilterList.Add(materialId);
           //添加仓库ID过滤
            expectQtyQueryParameter.StockIdFilterList.Add(Convert.ToInt32(row["FStockid"]));
            //添加库存组织过滤
            expectQtyQueryParameter.StockOrgIdFilterList.Add(orgId);
            return expectQtyQueryParameter;
        }
//设置匹配的库存维度
        private ExpectQtySystemParameter.AvaSysArg GetAvaSysArgs()
        {
            return new ExpectQtySystemParameter.AvaSysArg
            {
                CheckFAuxPropId = true,
                CheckFMasterId = true,
                CheckFStockUnitId = true,
                CheckFBaseUnitId = true,
                CheckFBomId = false,
                CheckFExpiryDate = false,
                CheckFKeeperId = false,
                CheckFKeeperTypeId = false,
                CheckFLot = false,
                CheckFMtoNo = false,
                CheckFOwnerId = false,
                CheckFOwnerTypeId = false,
                CheckFProduceDate = false,
                CheckFStockId = false,
                CheckFStockLocId = false,
                CheckFStockOrgId = true,
                CheckFStockStatusId = false
            };
        }

还可以再看下这个链接:

问题来源:https://vip.kingdee.com/link/s/lXfwT       


3、 单据的按钮功能能否按用户区分可用与否?


问题描述:

比如委外领料单上的复制行功能按钮,只有A用户可以使用,B用户不能使用;这个是通过BOS单据实现,还是能通过权限分配实现?麻烦各位老师给点帮助感谢!!

image.png

解决方案:

通过BOS服务规则可以设置按条件隐藏显示菜单项按纽、锁定解锁按纽,也可以在插件中检验权限实现。
var results = this.View.Model.FuncPermissionAuth(new[] { string.Empty }, permissionItemId, permissionItemName, false);
                if (results.Any(o => o.Id.EqualsIgnoreCase(string.Empty) && !o.Passed))
                {
                    this.View.ShowMessage(string.Format("您没有“{0}”的“{1}”权限!",                       this.View.BillBusinessInfo.GetForm().Name, permissionItemName));
                    e.Cancel = true;
                    return;
                }

image.png

问题来源:https://vip.kingdee.com/link/s/lXMr6       


4、 操作插件怎么在审核后修改销售订单表单单据体字段的背景颜色


问题描述:

因为审核可能通过列表审核,表单审核,审批流审核,要怎么在审核后修改表单颜色

解决方案:

服务插件无法修改字段的颜色,UI界面颜色需要通过表单插件开控制。
可以在审核后给单据体行一个标识,审核后会刷新界面,触发表单插件的AfterBindData事件
开发表单插件,重写AfterBindData事件,根据标识判断是否需要修改颜色。
可以参考:

二开案例.表单插件.设置表格背景色:https://vip.kingdee.com/link/s/lXMU2 

问题来源:https://vip.kingdee.com/link/s/lXMo3       


5、 StockServiceHelper.SaveLockInfo 可以实现跨库锁库吗,要怎么实现


问题描述:

StockServiceHelper.SaveLockInfo 可以实现跨库锁库吗,要怎么实现

解决方案:

不能跨数据库,如果要跨数据库,只能开发自定义接口,在接口中调用这个锁库。
方法参考:

【业务集成】WebAPI 如何实现锁库、解锁:https://vip.kingdee.com/link/s/lXMsJ 

问题来源:https://vip.kingdee.com/link/s/lXMso       


6、 锁定数据中心后,当前数据中心只能由在协同开发平台中以当前应用进行开发 是吗?


问题描述:

锁定数据中心后,当前数据中心只能由在协同开发平台中以当前应用进行开发 是吗?

解决方案:

锁定数据中心后,当前的数据中心只能在协同开发平台中以当前这个应用进行开发,应用列表里面的其他应用皆无法进行开发。集成开发平台入口也将锁定,无法进入。

影响范围参考以下帖子:
锁定金蝶云数据中心:

问题来源:https://vip.kingdee.com/link/s/lXMsE       


7、 客户一个公有云正式环境拉了六个应用有什么影响?


问题描述:

客户一个公有云正式环境拉了六个应用有什么影响
现在客户需要初始化重新上线,我需要将环境的配置和开发的东西全部弄出来,然后将单据和基础资料导出来,可是他有六个应用我咋整?六个应用有什么影响和冲突嘛,能合并嘛,我在其中一个应用去构建出来会有影响嘛
因为时隔太久了,我也不知道配置了什么,而且途中他们也自己加了一些配置
如果我一个一个去勾选单据或者单据转换啥的构建那太多了也可能遗漏,如何只构建出配置开发,因为基础资料和和单据我可以导入导出

image.png

解决方案:

对使用效果没太大影响,打开bos时不同的应用某些单据可能会弹出提醒'数据中心或应用版本高低',
如果要处理的话建议简单操作:
仅供参考:
1. 备份现有的6个应用,开发成果导出;
2. 删除已有6个应用;
3. 新建新应用,选择开发成果全部导出,设置数据中心与应用互锁,后期统一使用此应用;

另有一个相对稳妥的方案:
1. 之前的6个应用先不做删除处理(预留 单据配置丢失后做协同同步用),参与者保留同一用户(其他参与者移除或权限设置查看);
2. 新建一个新应用,新增参与者,设置数据中心与应用互锁,后期统一使用此应用;
3. 使用中如有业务对象配置丢失,操作1中参与者做同步业务对象处理;


问题来源:https://vip.kingdee.com/link/s/lXMeJ       


8、 在Onnitialize事件中可以自定义控制主菜单的可见性和可用性吗?


问题描述:

在Onnitialize事件中可以自定义控制主菜单的可见性和可用性吗?

解决方案:

Onnitialize事件,系统明细菜单并没有加载完,是选中某一个具体模块的时候动态加载菜单的。
可以在主控台系统菜单(BOS_MainSystemMenu)注册表单插件。
可见性在TreeNodeClick事件里面处理试试。当然,最好还是通过权限控制。
可用性可以在ListViewClick事件里面处理。

问题来源:https://vip.kingdee.com/link/s/lXMDj


我创建了<<协同开发,轻松入门>>的学习清单,推荐给你,和我一起学习交流吧!

<<协同开发,轻松入门>>


查看往期精选:

【汇总】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选

       



图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!