【第15期】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选 2023年12月发布原创
金蝶云社区-OUT_MAN
OUT_MAN
34人赞赏了该文章 422次浏览 未经作者许可,禁止转载编辑于2024年01月27日 10:22:55
封面

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


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

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


【第15期】

  更新日期:2023-12



1、'DynamicObjectCollection' object has no attribute 'ToArray'

问题描述:


image.png

image.png


改为Python,报错,求解答~

image.png

解决方案:

DynamicObjectCollection本身是不能直接ToArray的。

C#能使用ToAarray是因为自动便捷的调用了Enumerable的扩展方法。


Python里面要换个写法,调用原始扩展方法:Enumerable.ToArray(dyEntity);

同时,需要添加引用:

clr.AddReference('System.Core')

from System.Linq import *

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


2、 实体服务规则应用小案例

问题描述:
我在采购订单明细加了两个自定义字段,分别是分摊费用和费用分摊的价格,然后采购订单是有采购价目表的,含税单价默认从采购价目表携带了,能否实现我录入了费用分摊价格后,含税单价=含税单价+费用分摊价格,如果可以的话如何实现?
我目前直接配置实体服务规则不生效,我先到的思路是,再加一个辅助字段,用于存储计算含税单价+费用分摊价的数据,然后再用值更新还是啥将这个值写给含税单价?

image.png

解决方案:

这个需求是可以用实体服务规则实现的,但是不能直接使用:含税单价=含税单价+费用分摊价格,,确实需要一个中间字段来记录。

例如,含税单价带出是10,你第一次输入分摊价格5,那含税单价=10+5=15,修改一下分摊价格3,那含税单价就变成了:15+3=18,实际上你需要的是 10+3=13.

这个中间字段最好是记录原始的含税单价,但是你的价格又是价目表携带出来的,可能有点麻烦。

可以考虑这样实现,中间字段记录上一次录入的分摊价格。


实体服务规则思路如下:

规则条件:分摊价格<>0,分摊价格要勾选【即时触发值更新】

满足条件执行2个公式:含税单价=含税单价-中间字段+分摊价格;  中间字段=分摊价格 (注意顺序不能反过来!)


为什么规则条件不加入含税单价变化的判断呢?

①容易出现死循环

②如果手动修改含税单价,该怎样重算含税单价?应该需要另外的一个逻辑来处理。

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


3、 银行账号引入模板设置时无法选择引入币别是需要在BOS平台里设置允许引入嘛?如果是如何在BOS里设置?

问题描述:

image.png

解决方案:

image.png

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


4、 单据体数据,针对不同的用户隐藏某些行

问题描述:
这是单据的单据体,要针对不同的用户隐藏掉明细中的行,比如员工不能看到工资这一行。

image.png

解决方案:

在表单插件的AfterBindData里面用下面的代码试试:

 EtryGrid grid = this.View.GetControl<EntryGrid>("单据体唯一标示");
grid.SetFilterString("明细用户字段标识 = '当前用户ID' ")

参考:插件单据体支持的过滤条件(SetFilterString)设置


这个效果类似于,在单据体使用字段的“漏斗过滤”以及首行过滤

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


5、 使用BusinessDataServiceHelper.Load加载出来的数据怎样以年月分组,然后取分组中的最晚的记录

问题描述:
现在想按照年月为分组,每次做单子时取分组中最新(也就是时间靠后)的一条记录。可以使用BusinessDataServiceHelper.Load按照时间来排序吗,或者其他的方法进行排序。

解决方案:

可以用OrderBy方法对 BusinessDataServiceHelper.Load返回的数组排序 OrderBy var sortedList = list.OrderBy(obj => obj .FDate).ToList();

老师,我试了可以,但是是升序,怎样降序呢

改成ng

var sortedList = list.OrderByDescending(obj => obj .FDate).ToList();

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


6、 我想问一下单据体,子单据体,单据头,这三是什么,放在页面上展示又是属于哪些部分,拿下面这个为例

问题描述:

image.png

解决方案:

他们是有很深的逻辑关系

单据头与子单据头是父子1对1关系

单据头与单据体是1对多关系

单据体与子单据体是1对多关系

单据体与子单据头没有关系,关系继承单据头与单据体及单据头与子单据头

子单据头可以认为是单据体的一种特殊应用,相当于只有一行的单据体。

这个工艺路线的结构属于复杂,你理解了就明白了,还有你要做些数据上应用一下就了解了。在就到后台看一下数据库表,也能加深印象。希望能帮到你。

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


7、 数据规则设置了销售员只能查看自己的客户,不同的销售部门领导要查看自己部门的所有客户,要怎么设置?

问题描述:
销售部门按区域设置了广东大区,湖南大区等等,每个大区有对应的大区总监,现在大区总监移动销售下单要查看自己大区下的所有客户,要怎么设置?

解决方案:

image.png

数据规则查看自己部门的客户

image.png

销售员查看自己负责的客户

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


8、 物料按照二开单据体进行数据隔离。请问该如何实现?

问题描述:
咨询各位大佬。 我在物料上增加一个页签,在里边加了一个单据体控件,单据体维护用户信息。 我想按照用户进行数据隔离,只让这些用户看到关联的物料数据。请问该如何操作啊?如果需要二开的话,可以提供二开思路嘛。

解决方案:

开发列表插件,在PrepareFilterParameter追加过滤来实现。

可以参考这个:二开案例.列表插件.打开F8列表时指定快捷过滤条件

开发思路如下:

①在PrepareFilterParameter事件中获取当前用户的ID。

②根据当前用户ID查询出有权限的物料ID。

如果数据量大,可以考虑存入临时表,列表关闭之后记得删除临时表。

③根据查询出的物料ID拼接过滤条件即可。


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



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

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


查看往期精选:

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




赞 34