【第27期】 金蝶云·星空-BOS平台 | 产品应用典型/热门问答精选原创原创
金蝶云社区-Dave身份
Dave
68人赞赏了该文章 598次浏览 未经作者许可,禁止转载编辑于2024年06月05日 10:11:14

在金蝶云·星空-BOS平台应用中,你需要了解的典型/热门问答都在这里!

本帖不定期持续更新,欢迎小伙伴们收藏本帖,以便随时查看、扩充知识哟


【第27期】


1、 Python代码可以忽略基础资料状态,如果想要实现只有api传入或者指定用户,才允许忽略,应该如何修改代码?


问题描述:

#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *

def BeforeSetItemValueByNumber(e):
    key = str(e.BaseDataFieldKey.ToUpper());
    if (key == "FMATERIALID"):
        e.IsShowUsed = False;
        e.IsShowApproved = False;
        e.Filter = "";
def BeforeF7Select(e):
    key = str(e.FieldKey.ToUpper());
    if (key == "FMATERIALID"):
        e.IsShowUsed = False;
        e.IsShowApproved = False;如果想要实现只有api传入或者指定用户,才允许忽略基础资料状态,应该如何修改代码?


解决方案

在语句中加入获取当前用户ID(this.Context.UserId)再进行条件判断是否等于指定用户。

def BeforeSetItemValueByNumber(e):
    if (this.Context.UserId==userid)
        key = str(e.BaseDataFieldKey.ToUpper());
        if (key == "FMATERIALID"):
            e.IsShowUsed = False;
            e.IsShowApproved = False;
            e.Filter = "";
def BeforeF7Select(e):
    if (this.Context.UserId==userid)
        key = str(e.FieldKey.ToUpper());
        if (key == "FMATERIALID"):
            e.IsShowUsed = False;
            e.IsShowApproved = False;




问题来源

Python代码可以忽略基础资料状态,如果想要实现只有api传入或者指定用户,才允许忽略,应该如何修改代码? (kingdee.com)


2、库存字段和物料属性字段是否可以进行计算?都是数量字段且无需考虑单位

问题描述:

做了即时库存获取按钮,获取到收料通知单的字段上,物料引用最大库存属性,需要通过入库时的库存和物料维护的最大库存做对比并提示差额。      目前问题是在写自定义公式的时候无法选到物料属性字段,有没有办法可以选到这个字段,或者有没有办法能够计算这两个值?
bdfbe968455545e1ce9946832247b38.png


解决方案

你把最大库存做个实体字段,然后你通过物料属性上的最大库存字段给用实体服务规则给赋值过去,然后你在用获取库存按钮用你的库存数量减去最大库存这个实体字段进行运算。这个运算的过程我就不用给你演示了吧。

https://vip.kingdee.com/article/402990463839513344?smartSearchResId=575037411030258176&productLineId=1&isKnowledge=2&lang=zh-CN

这里有,你自己照着做一下就可以了,主要的是你要加个实体字段就好了。希望能帮到你。有有问题你在追问一下。

编辑于 2024年05月05日 19:14:30

追问

你好,这个实体服务规则自定义计算公式我也试过的,是无法选到 “基础资料属性”字段的。这个最大库存是提前在物料维护好。现在想拓展到单据参与校验


追问于:2024-05-06 08:55:53追答

我写的好像是你没看明白吧,我是说让你在单据上加个实体字段,用物料上的【最大库存】给映射过去,然后参与你的那个字段去参与计算。

追答于:2024-05-06 09:08:28追问

我看了,就是你看我截图上面“最大库存属性”旁边还有一个“最大库存”数量 字段。这个就是实体字段,我本来也是打算映射过去,实际是不支持的。您可以验证一下看看

追问于:2024-05-06 09:46:45追答

image.png



问题来源

库存字段和物料属性字段是否可以进行计算?都是数量字段且无需考虑单位 (kingdee.com)


3、 根据明细信息,禁止选择表头辅助资料的某个选项

问题描述:

在销售订单明细信息里勾选了赠品,就禁止在表头的档案选项里,禁止选择某一个选项(无特殊情况),请问这个该如何实现,谢谢


解决方案

在操作列表-保存-校验规则上配置单据合法性校验,前置条件设置为:len(filter(lambda x: x.FIsFree  = True , FSaleOrderEntry))>0

image.png

image.png


问题来源

根据明细信息,禁止选择表头辅助资料的某个选项 (kingdee.com)


4、请问我现在单据上添加一个审核人和审核时间,当时设计器自带的只有创建,修改,打印,怎么添加一个审核人和审核时间呢


问题描述:

请问我现在单据上添加一个审核人和审核时间,当时设计器自带的只有创建,修改,打印,怎么添加一个审核人和审核时间呢


解决方案

重新拖一个用户、日期控件到表单,在单据状态中绑定好这两个字段即可

image.pngimage.png



问题来源

请问我现在单据上添加一个审核人和审核时间,当时设计器自带的只有创建,修改,打印,怎么添加一个审核人和审核时间呢 (kingdee.com)


5、如何使用NPOI对指定的excel文档进行工作表首行冻结操作


问题描述:

金蝶暂无直接可用的工作表冻结操作在插件中如何使用NPOI对指定的excel文档进行工作表首行冻结操作


解决方案

sheet1.CreateFreezePane(2,0,5,0);

NPOI使用手册 (操作Excel)-CSDN博客

2.6.4 用NPOI操作EXCEL--锁定列 - atao.xiang - 博客园 (cnblogs.com)

参考这个吧,还算比较全面。网页里叫锁定列,介绍了冻结行、冻结列的功能



问题来源

如何使用NPOI对指定的excel文档进行工作表首行冻结操作 (kingdee.com)


6、 销售出库单单据体增加了,自定义列运费单价及运费金额字段,填写后运费金额字段不自动计算

问题描述:

单据体增加了自定义列“运费单价”(单价字段)及“运费金额”(金额字段),公式为:实发数量*运费单价=运费金额。填写后运费金额字段不自动计算。

上传图片

运费金额也设置了值更新实践

上传图片


解决方案

在单据体设置实体服务规则计算定义公式的值并填写到指定列,前置条件设置为: FRealQty  =  FRealQty  or 运费单价=运费单价,公式设置为你上面的。

image.png

image.png




问题来源

销售出库单单据体增加了,自定义列运费单价及运费金额字段,填写后运费金额字段不自动计算 (kingdee.com)

7、设置条件A和B和C时条件生效

问题描述:

image.png

解决方案

条件同时满足时生效: FMateriaGroup.FNumber = '1' and FMateriaGroup.FNumber = '2' and FMateriaGroup.FNumber = '3'


问题来源

设置条件A和B和C时条件生效 (kingdee.com)


8、对已审核的单据修改后保存能不能不校验必录

问题描述:

之前的单据有个字段没有设置必录,现在我添加了必录,但是对于之前已经审核的单据,我在已审核单据上直接修改,由于这个必录字段之前没填是空的,现在又要校验了,可不可以设置在已审核单据修改保存不校验呢


解决方案

可以先取消对应字段的必录复选框,然后在保存按钮上添加一个字段必录的校验规则,设置前提条件

image.png


问题来源

对已审核的单据修改后保存能不能不校验必录 (kingdee.com)


9、表达式提示不通过,不知道时哪里原因,请各位老师帮助一下!

问题描述:

上传图片


解决方案

如果是表达式 FStockId.FDeptId 则需取部门内码设置,表达式 FStockId.FDeptId.Number则直接匹配部门编码。FStockId.FDeptId.Number='BM000040'

另外,还需要区分表达式配置在哪里,上述表达式在单据体的实体服务规则可用,在单据头的实体服务规则中,则不能用上述表达式,需调整表达式为:len(filter(lambda x:(x.FStockId.FDeptId.Number=='BM000040'),FEntity))>0


问题来源

表达式提示不通过,不知道时哪里原因,请各位老师帮助一下! (kingdee.com)


10、对于没有预置作废功能的单据,可以增加作废操作吗?

问题描述:

比如销售订单,可以添加作废操作吗?不让删除重新审核状态的销售订单。


解决方案

1、销售订单上有作废功能

image.png

2、你把重新审核状态下,在删除上给取消

image.png

画框的去掉


问题来源

对于没有预置作废功能的单据,可以增加作废操作吗? (kingdee.com)


11、 直接SQL账表一加条件就报错where fdate > @sdate@

问题描述:

直接SQL账表一加条件where fdate > @sdate@就报错,请问题这关键字是有什么问题?

上传图片

上传图片


 企业版/标准版/BOS平台/账表


解决方案

image.png

参考一下这个,用#号不要用@

问题来源

直接SQL账表一加条件就报错where fdate > @sdate@ (kingdee.com)


12、 成品入库时需指定某个人来审核生产入库单,半成品入库无需限制生产入库单的审核权限,怎么实现?


问题描述:


系统里将成品和半成品物料进行了分组管理,半成品是2开头的物料编码,成品是3开头的物料编码,当成品入库时想要让某个人来审核生产入库单,其他人不能审核,半成品入库不需要做工作流配置,相关人员自行审核即可,系统支持这样的设置吗?具体怎么实现?

上传图片



解决方案

设置工作流,在启动条件设置物料是否为成品,条件不符时发起策略为:进行传统审批。

请参考:工作流启动条件使用物料的存货类别作为判断依据


问题来源

成品入库时需指定某个人来审核生产入库单,半成品入库无需限制生产入库单的审核权限,怎么实现? (kingdee.com)


13、收票单里,接收发票这个界面要在BOS立哪里设置?发票类型可以新增一个全部吗?

问题描述:

image.png


解决方案

image.png

发票类型是枚举下拉列表字段要在枚举类型中设置,但是你要新增是可以新增,关键是你增加了程序未必能识别。

问题来源

收票单里,接收发票这个界面要在BOS立哪里设置?发票类型可以新增一个全部吗? (kingdee.com)


14、工作流审批信息写入后怎么触发写入字段的值更新或者实体服务规则

问题描述:

image.png


解决方案

https://vip.kingdee.com/article/425821158093501184?productLineId=1&isKnowledge=2&lang=zh-CN


标准功能只能 写入到相关字段上,如果就想做触发,你可以写个代码调用一下值 更新或者在单据保存或提交时给调用一下相关字段的值更新事件。

问题来源

工作流审批信息写入后怎么触发写入字段的值更新或者实体服务规则 (kingdee.com)



15、销售退货单,实体服务规则,如何设置,客户名称包含"XX"的表达式?

问题描述:

销售退货单,实体服务规则,如何设置,客户名称包含"XX"的表达式?


解决方案

表达式:FRetcustId.FName.find('XX')>0

image.png

问题来源

销售退货单,实体服务规则,如何设置,客户名称包含"XX"的表达式? (kingdee.com)






赞 68