在金蝶云·星空-BOS平台应用中,你需要了解的典型/热门问答都在这里!
本帖不定期持续更新,欢迎小伙伴们收藏本帖,以便随时查看、扩充知识哟
【第23期】
1、发货通知单新增一个合计整单数量
问题描述:
我需要在发货通知单表头加字段(合计整单数量)加条件排除套装产品数量目前我的思路是在发货通知数量设置值更新事件,但是这个条件好像设置的有问题.
这里设置不为父项就说明不是套装.可是还是会触发值更新呀.而且我想要的是明细的和,我这个设置的好像只能是修改了一个发货通知数量,整单合计数量=修改的这个发货通知数量,而不是等于子项明细之和.
解决方案:
实体服务设置在单据头的实体服务规则里面:
用这个试试(当产品类型为套装时取发货通知数量,否则取0,最后合计到单据头字段):
合计整单数量 = sum(map(lambda x: (发货通知数量 if x.产品类型 <> null and x.产品类型 <> '套装父项' else 0),明细标识))
问题来源:
2、 销售价目表自己新增了个字段 价目表审核后 新增明细分录无法填写
问题描述:
解决方案:
编辑于 2024年01月12日 15:37:11
物料编码和价格在已审核的情况下是锁定的 但在分录新增行的时候还是允许填
经过测试,可以在状态列表取消勾选你新增的文本字段,这样就可以新增行维护文本字段值了
问题来源:
销售价目表自己新增了个字段 价目表审核后 新增明细分录无法填写 (kingdee.com)
3、想把编码的前几位提取出来,赋值到其他字段
问题描述:
获取物料编码的前几位赋值到基础资料(物料分组),FNumber [0,5]这么获取不到值,请大佬指教
解决方案:
物料分组是基础资料,基础资料赋值通过公式赋值的话,要使用内码赋值,单纯的使用编码是不行的。
可以使用 GETPKVALUE来获取物料分组内码,参考这个公式试试:
物料分组字段=GETPKVALUE('物料分组字段标识', 物料分组编码)
参考这个:BOS设计器的公式
问题来源:
想把编码的前几位提取出来,赋值到其他字段 (kingdee.com)
4、套打动态字段怎么设置如果这个字段为空,则取另一个字段
问题描述:
在规格型号栏,如果客户物料名称(FMapName)为空,则取英文规格型号(F_PAYY_BaseProperty3),显示我表达式有误
解决方案:
FMaterialid.FSpecification if FMapName<>null else F_PAYY_BaseProperty3
问题来源:
套打动态字段怎么设置如果这个字段为空,则取另一个字段 (kingdee.com)
5、怎么获取到行数
问题描述:
我怎么获取到相关对象的行数
在BOS平台上看是分成动态表单-平台页签框架和基础资料-相关对象
我怎么在平台页签框架做插件获取到相关对象的行数
解决方案:
单据体获取行数:this.View.Model.GetEntryRowCount("FSaleOrderEntry");
问题来源:
6、 新做单据,用单据列表打开后,打开同一张单据状态都是修改,不是第一张是修改,后面单据是查看,请问在哪里控制
问题描述:
解决方案:
参照这个
给加一下就可以了 。
问题来源:
新做单据,用单据列表打开后,打开同一张单据状态都是修改,不是第一张是修改,后面单据是查看,请问在哪里控制 (kingdee.com)
7、 生产订单有一个字段想带给生产领料单
问题描述:
我要在生产领料单上建一个字段,是订单中的一个字段,要如何设置,单据转化规则没法设置,因为领料单不是订单直接下推过来的
解决方案:
生产订单自定义字段携带至生产领料单,由于生产订单下推生产领料单调用的是生产用料清单至生产领料单的单据转换,因此需要先将生产订单的字段映射至生产用料清单后,再设置单据转换携带至生产领料单去实现。
请参考:生产订单添加字段携带至生产领料单
问题来源:
生产订单有一个字段想带给生产领料单 (kingdee.com)
8、订单上是否可以直接上传并显示图片,不用附件,如何设置?
问题描述:
订单上是否可以直接上传并显示图片,不用附件,如何设置?
解决方案:
用这个
问题来源:
订单上是否可以直接上传并显示图片,不用附件,如何设置? (kingdee.com)
9、怎么给单据加新的字段
问题描述:
我想在直接调拨单的基本信息里加上一个"借用客户"的字段,用于选择借用的客户是谁。该如何设置?
解决方案:
进入BOS平台,将【基础资料】拖入到单据头,名称、标题修改为【借用客户】,基础资料类型选择【客户】,退出保存
问题来源:
10、销售出库单,如何对实发数量进行有条件的求和
问题描述:
销售出库单中,对产品类型为子项和标准的物料的实发数量进行求和,要怎么做?
解决方案:
可设置实体服务规则按条件汇总到表头字段,请参考下:
求和遍历 进阶案例
【业务场景】求和汇总费用报销单费用项目.名称=业务招待费的明细行的费用金额。
【语句1】FExpAmountSum=sum(map(lambda x:x.FExpenseAmount if FExpID<>null and FExpID.FName=='业务招待费’ else 0 , FEntity)
语句大意:先使用lambda函数对FEntity单据体做遍历操作,再使用map函数,按照FExpID<>null and FExpID.FName==‘业务招待费'作为条件,将满足条件的FExpenseAmount字段从明细行映射挑选出来(若不满足条件, FExpenseAmount字段则为0),组成一个新的集合;最后使用sum函数对集合里面的元素做相加统计,得到的数值赋值给FExpAmountSum字段。
【语句2】FExpAmountSum=sum(map(lambda(x:x.FExpenseAmount ,filter(lambda(y:y.FExpID<>null and y.FExpID.FName=='业务招待费'), FEntity))))>0
语句大意:先使用lambda函数对FEntity单据体做遍历操作,再使用filter函数,按照FExpID<>null and FExpID.FName==‘业务招待费'作为条件,将满足条件的明细行过滤出来;再使用lambda函数对这部分明细行做遍历操作;再使用map函数,将 FExpenseAmount字段从明细行映射挑选出来,组成一个新的集合;最后使用sum函数对集合里面的元素做相加统计,得到的数值赋值给FExpAmountSum字段。
问题来源:
销售出库单,如何对实发数量进行有条件的求和 (kingdee.com)
11、怎么在数据库中获取基础资料属性的值?
问题描述:
我现在有一个基础资料和它的某个属性的基础资料属性字段。我能获取到基础资料对应的FID值。现在我想通过SQL获取到这个基础资料属性的值怎么获取.
解决方案:
基础资料属性的值是在基础资料里,你需要根据基础资料的FID找到你的基础资料的表名,通过关联关系,再找到你基础资料中的需要的字段值;
如:物料上你要找到 【旧物料编码】 的话,你就得通过物料的内码 FMaterild 找到对应的T_BD_MATERIAL下的 FOLDNUMBER
select FOLDNUMBER from 你的那个基础资料的表名 t0
left join T_BD_MATERIAL t1 t0.fmaterialid=t1.fmaterilaid
因为物料的基础资料的内码是 fmaterialid ,其它你自已定义的基础的内码可能是FID你就用这个做关联关系。
问题来源:
怎么在数据库中获取基础资料属性的值? (kingdee.com)
12、反写规则或者反写插件可以触发值更新吗?
问题描述:
如果可以的话 有插件的例子吗?谢谢!
解决方案:
由于反写是App层服务,不会创建源单视图模型,因此不会触发源单的值更新事件、实体服务规则等;
部分客户想通过反写修改单据体的字段的时候,同时触发该字段的值更新修改其他字段。
问题来源:
反写规则或者反写插件可以触发值更新吗? (kingdee.com)
13、 其他应付单的发票类型改成自己手动填写而不是默认的选择,应该怎么改?
问题描述:
解决方案:
取消缺省值设置
问题来源:
其他应付单的发票类型改成自己手动填写而不是默认的选择,应该怎么改? (kingdee.com)
14、BOS平台或其他方法如何设置列表过滤这个多级审批信息默认全员都是勾选了的
问题描述:
解决方案:
问题来源:
BOS平台或其他方法如何设置列表过滤这个多级审批信息默认全员都是勾选了的? (kingdee.com)
15、python请教
问题描述:
def OnPreparePropertys(e):
e.FieldKeys.Add("FMTONO")
def BeginOperationTransaction(e):
if e.DataEntitys == None:
return
for entity in e.DataEntitys:
entrylis = entity["SaleOrderEntry"];
for entry in entrylis:
entry["MTONO"] = 'ABCD';
问题:最后一行entry["MTONO"] = 'ABCD'; 中的 ABCD要替换为销售订单表头的单据编号(FBillNO),需要怎么改,直接entry["MTONO"] = billObj["BillNO"];报错
解决方案:
entry["MTONO"] =billObj["BillNO"];
这是没问题的,问题是billObj你前面并没有定义啊!
你这里面的billObj实际上是entity
所以,你改成 entry["MTONO"] =entity["BillNo"]; 就可以了
问题来源:
16、单据套打动态字段公式能测试出来,但无法取值
问题描述:
单据内某个字段取值规则为“若存在客户物料编码,则取客户物料编码,否则取规格型号”,我输入了这个公式,但取不到值,什么原因?
解决方案:
取物料的规格型号:FMaterialid.FSpecification if F_PAYY_MapId.FNumber=null else F_PAYY_MapId.FNumber或FMaterialid.FSpecification if (F_PAYY_MapId.FNumber==null) else F_PAYY_MapId.FNumber
问题来源:
单据套打动态字段公式能测试出来,但无法取值 (kingdee.com)
查看往期精选:
【汇总】 金蝶云·星空-BOS平台 | 产品应用典型/热门问答精选 (kingdee.com)
推荐阅读