【第21期】 金蝶云·星空-BOS平台 | 产品应用典型/热门问答精选

在金蝶云·星空-BOS平台应用中,你需要了解的典型/热门问答都在这里!
本帖不定期持续更新,欢迎小伙伴们收藏本帖,以便随时查看、扩充知识哟
【第21期】
1、想通过BusinessDataServiceHelper.load方法读取单据体的数据,直接输入单据体标识会报错
问题描述:
想通过BusinessDataServiceHelper.load方法读取单据体的数据,直接输入单据体标识会报错,想问问你想取某个单据体下的字段怎么取
解决方案:
此处应该用的是‘属性(ORM实体名)’,另 服务插件,字段需要OnPreparePropertys方法中加载


问题来源:
想通过BusinessDataServiceHelper.load方法读取单据体的数据,直接输入单据体标识会报错 (kingdee.com)
2、怎么设置单据明细行某字段,只允许填一行,多行时进行提示或不允许保存?
问题描述:
明细多行时,报销科目“额度内交通费”只能选择一行,如果报销科目在多行选择“额度内交通费”,不允许保存,或者有相应提示。

解决方案:
len(filter(lambda x :x.报销科目字段='字段内容' ,单据体)) > 1 做保存校验
问题来源:
怎么设置单据明细行某字段,只允许填一行,多行时进行提示或不允许保存? (kingdee.com)
3、列表插件中选中列后,再触发按钮点击,按钮点击没有生效
问题描述:
列表插件中选中列后,再触发按钮点击,按钮点击没有生效,请各位社区大佬帮下忙
解决方案:
有AfterGetData这个事件吗?
用AfterBindData试试。
另外,模拟菜单点击事件的代码不是这样写的。
((IDynamicFormViewService)this.View).MainBarItemClick("tbOptionList");编辑于 2023年11月01日 20:03:49

感谢周总,几点事件可以了。但是我上面的行选中操作没有立即触发,导致菜单点击事件报提示当前没有选中行
问题来源:
列表插件中选中列后,再触发按钮点击,按钮点击没有生效 (kingdee.com)
4、请问单据明细里面怎么设置合计?
问题描述:

解决方案:
配置.单据体.分组列信息.分组合计,字段属性配置‘合计’


问题来源:
5、流程管理中心-待办任务超时取数来源?单据上如何直观看到各节点审批时效?
问题描述:
问题1:
在流程设计中心已经设置了超时1分钟,但是在流程管理中心-待办任务中显示“是否超时”为否。
问题2:
整个流程很漫长,我需要统计各个节点上的消耗时间,最好是能在单据上上直观展示出来。
解决方案:
问题二:用administrator登录系统,在[基础管理]→[公共设置]→[参数设置]→[流程中心]→[工作流]参数中勾选[单据列表记录多级审核信息];用普通用户登录系统,在费用报销单列表过滤界面勾选[多级审核信息]。然后审批节点设置再加上这个审批级次就能满足您的需求了

问题来源:
流程管理中心-待办任务超时取数来源?单据上如何直观看到各节点审批时效? (kingdee.com)
6、 设置值更新还能影响到数据库表名?Ambiguous column name 'F_PYEB_Decimal'.
问题描述:
提示的标识是一个小数字段,用来计算量差的,只是增加简单的加减值更新,导致二开的选单报错,可是我选单的数据都跟报错的这个字段没关系呀

解决方案:
报错的原因是无法确定字段【F_PYEB_Decimal】在哪张表中,请检查插件中的SQL语句,在字段【F_PYEB_Decimal】上加上表名或别名,注意单张表有时也会出现该报错,比如:select *,ClasName From Class order by ClassName。
问题来源:
设置值更新还能影响到数据库表名?Ambiguous column name 'F_PYEB_Decimal'. (kingdee.com)
7、采购订单录入物料后打开悬浮窗口显示历史进价,如何实现?
问题描述:
采购订单录入物料后打开悬浮窗口显示历史进价,点击单据体中的行时,悬浮窗口就显示当前行物料的历史进价
解决方案:
做个Datachange事件,调出个动态表单来,指定出物料的历史价格。如果还不会的话,给你个例子。
/// <summary>
/// 打开/历史采购订单数量查询 动态表单 Add zdh 2023-4-11
/// </summary>
private void OpenLSCGDDSLCX()
{
DynamicFormShowParameter formPa = new DynamicFormShowParameter();//调用动态表单
formPa.FormId = "ETC_PUR_CGDDSLCX";//历史采购订单数量查询
DynamicObject dobj = this.View.Model.GetValue("FMATERIALID", Convert.ToInt32(this.Model.GetEntryCurrentRowIndex("FCompareEntry"))) as DynamicObject;// 物料
if (dobj != null)
{
formPa.CustomParams.Add("FBASWL", Convert.ToString(dobj["id"]));//
this.View.ShowForm(formPa);
}
}
问题来源:
采购订单录入物料后打开悬浮窗口显示历史进价,如何实现? (kingdee.com)
8、生产订单增加了基础资料 自定义字段,计划订单投放生成生产订单时被锁定不能编辑,检查了所有可能,查不到原因
问题描述:
已按照这帖子,检查,上面的情况都没有,但就是被锁定了 技术答疑.字段锁定性.锁定字段的n种方式 (kingdee.com)
解决方案:
请参考:字段被锁定的设置有哪些?,还可以通过字段设置检查来快速排查设置锁定的位置

问题来源:
生产订单增加了基础资料 自定义字段,计划订单投放生成生产订单时被锁定不能编辑,检查了所有可能,查不到原因。 (kingdee.com)
9、单据合法性检验?
问题描述:
需求,在应收单表头加一个字段发票,我是文本字段,然后字段放开随时可编辑,采购员可能在审核后返回录入这个发票,但是要实现这个发票唯一性,所以我想到单据合法性检验,但是有问题,我配置保存操作报错,是不是思路不对
解决方案:
改为唯一性校验 空值不参与校验

问题来源:
10、销售订单,保存时检验字段长度,公式怎么设置(判断不能超过50个字)
问题描述:
销售订单,保存时检验字段长度,公式怎么设置(判断不能超过50个字)
解决方案:
len(FText)> 50

问题来源:
销售订单,保存时检验字段长度,公式怎么设置(判断不能超过50个字) (kingdee.com)
11、 Python列表插件,获取不到客户的客户名称,要如何写?经测试获取不到FCustId
问题描述:
#引入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 OnFormatRowConditions(args):
if(args.DataRow.DynamicObject.DynamicObjectType.Properties.ContainsKey("FDELIVERYDATE")
and args.DataRow.DynamicObject.DynamicObjectType.Properties.ContainsKey("F_RZ_DATE")
and args.DataRow.ColumnContains("FCustId")):
#这里是普通字段作为判断,需要判断列表是否显示了该字段,否则没显示该字段时会报错
#而且只有显示了这个字段才能判断设置颜色
FDELIVERYDATE=str(args.DataRow["FDELIVERYDATE"]);#要货日期
F_Rz_Date=str(args.DataRow["F_RZ_DATE"]);#出库日期
matObj=args.DataRow.DynamicObject["FCustId"];#客户ID 凤铝ID:221093
FCustName = ("{0}").format(matObj["FName"])
#凤铝全称:佛山市三水凤铝铝业有限公司
t1=DateTime.Parse(FDELIVERYDATE);
current =DateTime.Now.Date.ToString();
t2=DateTime.Parse(str(current));
ts=t1-t2;
sub=ts.Days;
ck=len(str(F_Rz_Date));
this.View.ShowMessage(FCustName);
this.View.ShowMessage("销售订单");
if(sub<= 0 and ck==4 and FCustName!="佛山市三水凤铝铝业有限公司"):
fc=FormatCondition();
#fc.ForeColor="#FFFF9B98";#前景色
fc.BackColor="#FE2C2C";#背景色 红色
#fc.BackColor="#FEB82C";#背景色 黄色
args.FormatConditions.Add(fc);
if(sub<= 0 and ck==4 and FCustName=="佛山市三水凤铝铝业有限公司"):
fc=FormatCondition();
#fc.ForeColor="#FFFF9B98";#前景色
fc.BackColor="#ADD8E6";#背景色 浅蓝色
#fc.BackColor="#FEB82C";#背景色 黄色
args.FormatConditions.Add(fc);
解决方案:
不是这样写的。客户是基础资料字段,要取基础资料属性的话是要这样写:
if (args.DataRow.ColumnContains("FCustId_Ref"))
custObj=args.DataRow.DynamicObject["FCustId_Ref"];#客户引用数据包
custName=("{0}").format(custObj["Name"]);#取客户名称我这文章里面不是强调了吗?没看懂??【Python插件入门】第5篇:单据列表插件

问题
【第21期】 金蝶云·星空-BOS平台 | 产品应用典型/热门问答精选
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。









