本文分享了在不同场景(单据界面、单据列表、简单账表)中设置颜色的方法,主要通过Python脚本实现。对于单据界面,通过表单插件设置单据头和单据体的颜色;单据列表则可以通过BOS配置或列表插件实现,特别提到了基础资料属性字段和普通字段作为判断条件设置颜色的方法;简单账表同样通过表单插件根据特定字段值来设置行颜色。文中还提示了网页复制代码可能存在的格式问题,并建议下载附件获取完整代码。
大家好,我在这里分享一下各种场景设置颜色的方法:单据界面、单据列表、简单账表
话不多说,下面看介绍......
网页复制有格式问题,如需复制代码,网页复制有格式问题,请下载文后附件!
一、单据界面设置颜色(单据头、单据体),以下示例脚本为表单插件
#引入clr运行库
# -*- coding: utf-8 -*-
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 AfterBindData(e):
#设置单据头字段前景色=====================================================
this.View.GetControl("F_ora_MulLangText").SetCustomPropertyValue("ForeColor", "#FF3300");
#设置单据体============================================================
grid = this.View.GetControl[EntryGrid]("FEntity");#单据体标识
index=0;#单据体行号,从0开始,演示一行,如需设置多行,可用循环逻辑处理
#设置单据体---字段背景色,只对锁定单元格生效
grid.SetBackcolor("F_ora_Assistant","#00FF00",index);
#设置单据体----字段前景色,不支持非锁定状态下的数值字段
grid.SetForecolor("F_ora_EntryNote", "#FF0000",index);
#设置单据体----整行的颜色,只对锁定单元格生效
grid.SetRowBackcolor("#0000FF",index);
二、单据列表设置颜色
1.对于大多数需求场景,可以通过在BOS中配置【列表条件格式化】实现列表颜色(前景色、背景色)的需求。
2.如果判断条件比较个性化,配置不出来,就需要借助列表插件来实现,Python脚本参考如下:
#引入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["FEmpInfoId_Ref"] <>None):
#注意!!!这里根据特别演示基础资料属性字段判断设置颜色
#因为【列表条件格式化】不支持配置基础资料属性字段作为条件字段
empObj=args.DataRow.DynamicObject["FEmpInfoId_Ref"];
if(str(empObj["FEmpStatus1"])=='LZ'):
fc=FormatCondition();
fc.ForeColor="#FFFF9B98";#前景色
#fc.BackColor="#FFFF9B98";#背景色
args.FormatConditions.Add(fc);
if(args.DataRow.DynamicObject.DynamicObjectType.Properties.ContainsKey("FIsFirstPost")):
#这里是普通字段作为判断,需要判断列表是否显示了该字段,否则没显示该字段时会报错
#而且只有显示了这个字段才能判断设置颜色
FIsFirstPost=str(args.DataRow["FIsFirstPost"]);
this.View.ShowMessage(FIsFirstPost);
if(FIsFirstPost=="True"):
fc=FormatCondition();
#fc.ForeColor="#FFFF9B98";#前景色
fc.BackColor="#0000FF";#背景色
args.FormatConditions.Add(fc);
三、简单账表设置颜色,以下脚本为表单插件
#引入clr运行库
# -*- coding: utf-8 -*-
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Model')
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.DependencyRules import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.Metadata 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 *
from Kingdee.BOS.Model.Report import *
from Kingdee.BOS.Core.Report.PlugIn import *
from Kingdee.BOS.Core.Report import *
def OnFormatRowConditions(args):
fc=FormatCondition();
fc.ApplayRow=True;
if(args.DataRow.ColumnContains("SumType")==True):
sszqStr= ("{0}").format(args.DataRow["SumType"]);
if(sszqStr=="2"):#门店小计
fc.BackColor="#CCCCCC";#行背景色
#fc.ForeColor = "#FF0000";#行前景色
#fc.ColorField = "FDATAVALUE";#颜色字段
args.FormatConditions.Add(fc);
#==================分享完毕===============
Python脚本各场景设置颜色.rar(2.53KB)
发布于 金蝶云星空BOS开发交流圈 社群
推荐阅读