Python脚本各种应用场景设置颜色-整合介绍原创
金蝶云社区-CQ周玉立
CQ周玉立
33人赞赏了该文章 5296次浏览 未经作者许可,禁止转载编辑于2022年04月04日 13:35:16

大家好,我在这里分享一下各种场景设置颜色的方法:单据界面单据列表简单账表

话不多说,下面看介绍......

网页复制有格式问题,如需复制代码,网页复制有格式问题,请下载文后附件!


一、单据界面设置颜色(单据头、单据体),以下示例脚本为表单插件

#引入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中配置【列表条件格式化】实现列表颜色(前景色、背景色)的需求。

image.png

    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);


#==================分享完毕===============



发布于 金蝶云星空BOS开发交流圈 社群

赞 33