金蝶云星空获取分页账表中的数据并关联生成简单账表
#这里已库存账龄分析表和呆滞料分析表关联
import clr
clr.AddReference("System")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Contracts")
clr.AddReference("Kingdee.BOS.ServiceHelper")
clr.AddReference('Newtonsoft.Json')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS.Model')
clr.AddReference("Kingdee.BOS.App.Core")
clr.AddReference('Kingdee.K3.FIN.ServiceHelper')
clr.AddReference('Kingdee.K3.FIN.HS.ServiceHelper')
from Kingdee.BOS import*
from Kingdee.BOS.Contracts import*
from Kingdee.BOS.Contracts.Report import*
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Report import*
from Kingdee.BOS.Core.SqlBuilder import*
from Kingdee.BOS.Core.Enums import *
from Kingdee.BOS.App.Data import*
from Kingdee.BOS.Orm.DataEntity import*
from System import*
from System.ComponentModel import*
from System.Collections.Generic import*
from System.Text import*
from System.Threading.Tasks import*
from Kingdee.BOS.ServiceHelper import *
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 *
from Newtonsoft.Json import JsonConvert
from Newtonsoft.Json.Linq import *
from Kingdee.BOS.JSON import *
from Kingdee.BOS.Core.Report import *;
#from Kingdee.BOS.Core.ReportFilter import *;
from Kingdee.BOS.Model.CommonFilter import *;
from Kingdee.BOS.Model.ReportFilter import *;
from Kingdee.BOS.Serialization import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.List import*
from Kingdee.BOS.Core.List.PlugIn import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Model.ReportFilter import *
from Kingdee.BOS.App.Core import *
#初始化
def Initialize():
#是否由插件创建临时表 true 即调用BuilderReportSqlAndTempTable构建临时表 把账表取数结果放到创建的临时表中
# 否则调用以下3个接口,完成账表取数逻辑的sql指令即:BuilderSelectFieldSQL、BuilderTempTableOrderBySQL、BuilderFormWhereSQL
this.IsCreateTempTableByPlugin = True;
#是否分组汇总 在GetSummaryColumnInfo方法中添加汇总字段
this.ReportProperty.IsGroupSummary = True;
#是否由ui设置 = False表示报表的列通过插件控制 在GetReportHeaders中构建列头
this.ReportProperty.IsUIDesignerColumns = False;
# 设置账表的类型
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
#设置精度?
listControlField = List[DecimalControlField]();
#显示的字段名 用于控制精度的字段名,要精度控制起作用,head中的 SqlStorageType.SqlDecimal参数必须要有
#listControlField.Add(DecimalControlField("FPrice", "jindu"));
this.ReportProperty.DecimalControlFieldList = listControlField;
#设置汇总行 最下面的合计值 报表合计列(可选)
def GetSummaryColumnInfo(filter):
summaryList = List[SummaryField]();
# summaryList.Add(SummaryField("FALLAMOUNTFOR", BOSEnums.Enu_SummaryType.SUM));
# summaryList.Add(SummaryField("FREALRECAMOUNT", BOSEnums.Enu_SummaryType.SUM));
# summaryList.Add(SummaryField("arrears", BOSEnums.Enu_SummaryType.SUM));
return summaryList;
#设置报表头 账表表头字段信息,通常在GetReportTitles对表头字段进行传值 主要是把过滤框设置的字段值,显示到报表表头
def GetReportTitles(filter):
reportTitles = ReportTitles();
custFilter=filter.FilterParameter.CustomFilter;#获取过滤框的数据包
# beginDate=str(custFilter["F_TXBE_BeginDate"]);#获取开始日期
# EndDate=str(custFilter["F_TXBE_End_Date"]);#获取结束日期
# #orgFname=str(custFilter["F_BPW_OrgId"]["name"]);#获取组织名称
# #FcustName=str(custFilter["F_TXBE_Base_kehu"]["name"]);
# #orgFname=("{0}").format(orgObj["name"]);#组织名称
# reportTitles.AddTitle("F_TXBE_BeginDate", beginDate);
# reportTitles.AddTitle("F_TXBE_End_Date", EndDate);
#reportTitles.AddTitle("F_BPW_OrgId", orgFname);
#reportTitles.AddTitle("F_TXBE_Base_kehu", FcustName);
return reportTitles;
#动态构造列 表格列名
def GetReportHeaders(filter):
headers = ReportHeader();
localEid = this.Context.UserLocale.LCID;
headers.AddChild("FSTOCKORGID",LocaleValue("组织id",localEid));
headers.AddChild("FStockOrgNumber",LocaleValue("组织编码",localEid));
headers.AddChild("FStockOrgName",LocaleValue("组织名称",localEid));
headers.AddChild("FMATERIALID",LocaleValue("物料id",localEid));
headers.AddChild("FMaterialNumber",LocaleValue("物料编码",localEid));
headers.AddChild("FMATERIALNAME",LocaleValue("物料名称",localEid));
headers.AddChild("FBASEUNITID",LocaleValue("基本单位id",localEid));
headers.AddChild("FBaseUnitName",LocaleValue("基本单位名称",localEid));
headers.AddChild("FUnitID",LocaleValue("单位id",localEid));
headers.AddChild("FUnitName",LocaleValue("单位名称",localEid));
headers.AddChild("FSECUNITID",LocaleValue("辅助单位id",localEid));
headers.AddChild("FSecUnitName",LocaleValue("辅助单位名称",localEid));
headers.AddChild("fbaseqty",LocaleValue("数量(基本)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fqty",LocaleValue("数量(库存)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty",LocaleValue("数量(辅助)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("FPRECISION",LocaleValue("FPRECISION",localEid));
headers.AddChild("FBASEPRECISION",LocaleValue("FBASEPRECISION",localEid));
headers.AddChild("FSECPRECISION",LocaleValue("FSECPRECISION",localEid));
headers.AddChild("fbaseprice",LocaleValue("参考价(基本)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fprice",LocaleValue("参考价(库存)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecprice",LocaleValue("参考价(辅助)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount",LocaleValue("参考金额",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("FPriceDecimal",LocaleValue("FPriceDecimal",localEid));
headers.AddChild("FAmountDecimal",LocaleValue("FAmountDecimal",localEid));
headers.AddChild("FMATERIALTYPEID",LocaleValue("存货类别id",localEid));
headers.AddChild("chlbFNUMBER",LocaleValue("存货类别编码",localEid));
headers.AddChild("FMaterialTypeName",LocaleValue("存货类别名称",localEid));
headers.AddChild("FMATERIALMODEL",LocaleValue("规格型号",localEid));
headers.AddChild("FStockName",LocaleValue("仓库名称",localEid));
headers.AddChild("FStockLocId",LocaleValue("仓位id",localEid));
headers.AddChild("FSTOCKLOC",LocaleValue("FSTOCKLOC",localEid));
headers.AddChild("FDEPTID",LocaleValue("部门id",localEid));
headers.AddChild("bmfnumber",LocaleValue("部门编码",localEid));
headers.AddChild("bmfname",LocaleValue("部门名称",localEid));
headers.AddChild("qijian",LocaleValue("所属旗舰",localEid));
headers.AddChild("fbaseqty_0",LocaleValue("基本数量(3个月内)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fstockqty_0",LocaleValue("库存数量(3个月内)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty_0",LocaleValue("辅助数量(3个月内)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount_0",LocaleValue("参考金额(3个月内)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fbaseqty_90",LocaleValue("基本数量(4-5个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fstockqty_90",LocaleValue("库存数量(4-5个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty_90",LocaleValue("辅助数量(4-5个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount_90",LocaleValue("查看看金额(4-5个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fbaseqty_150",LocaleValue("基本数量(6-9个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fstockqty_150",LocaleValue("库存数量(6-9个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty_150",LocaleValue("辅助数量(6-9个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount_150",LocaleValue("参考金额(6-9个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fbaseqty_270",LocaleValue("基本数量(10-15个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fstockqty_270f",LocaleValue("库存数量(10-15个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty_270",LocaleValue("辅助数量(10-15个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount_270",LocaleValue("参考金额(10-15个月)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fbaseqty_450",LocaleValue("基本数量(15个月以上)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fstockqty_450f",LocaleValue("库存数量(15个月以上)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("fsecqty_450",LocaleValue("辅助数量(15个月以上)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("famount_450",LocaleValue("参考金额(15个月以上)",localEid),SqlStorageType.SqlDecimal);
headers.AddChild("dullFAmount",LocaleValue("呆滞费用",localEid),SqlStorageType.SqlDecimal);
#headers.AddChild("fidentityid",LocaleValue("fidentityid",localEid));
return headers;
#构造取数Sql,取数据填充到临时表:tableName 临时表构造
def BuilderReportSqlAndTempTable(rptfilter, tableName):
custFilter = rptfilter.FilterParameter.CustomFilter; #快捷框过滤条件
F_TXBE_Query_Date=custFilter["F_TXBE_Query_Date"]
# rpt = GetReportData(this.Context, "STK_InvAgeAnalyzeRpt", "STK_InvAgeAnalyzeFilter", "66a1bbf0a515fc",1,F_TXBE_Query_Date); #Kingdee.BOS.Core.Report.MoveReport
# dt = rpt.DataSource; #TMP2657C6BC47FA11EF8166A74D603 临时表存储信息
# rpttable=rpt.DataSource.TableName;#库存账龄分析表对应的临时表
F_TXBE_Zu_Fnumber=str(custFilter["F_TXBE_Zu_Fnumber"]);
rpt = GetReportData(this.Context, "STK_InvAgeAnalyzeRpt", "STK_InvAgeAnalyzeFilter", "66a1bbf0a515fc",0,F_TXBE_Query_Date); #Kingdee.BOS.Core.Report.MoveReport
rptdata=rpt
rpttable=rpt.TableName
#name="BPW_t_GJXLHGXJH"
dtL=DataTable();
#dtL.TableName=name
# dtL.Columns.Add("FSTOCKORGID",Int64().GetType());
# dtL.Columns.Add("FStockOrgNumber","".ToString().GetType());
# dtL.BeginLoadData();
flds=List[str]();
for fld in rptdata.Columns:
fldName=fld.ColumnName;
dataType=fld.DataType.Name.ToUpperInvariant();
sqlDataType="VARCHAR(MAX)";
if("INT" in dataType):
sqlDataType="int";
elif("DECIMAL" in dataType):
sqlDataType="decimal(23, 10)";
elif("DATETIME" in dataType):
sqlDataType="datetime";
fldInfo=("{0} {1} ").format(fldName,sqlDataType);
flds.Add(fldInfo);
#raise Exception(str(flds)) #构建建表语句
dbService=DBService();
tempTabs=dbService.CreateTemporaryTableName(this.Context, 1);
rptdata.TableName=tempTabs[0];
createTempTabSql=("/*dialect*/create table {0} ( {1} ) ").format(tempTabs[0],str.Join(",",flds));
#raise Exception(str(createTempTabSql))
DBUtils.Execute(this.Context,createTempTabSql);
DBUtils.BulkInserts(this.Context, rptdata);
#获取呆滞料分析相关信息
rptdull = GetReportData(this.Context, "STK_DullMaterialAnalysisRpt", "STK_DullMaterialAnalysisFilter", "6699dd80b29d75",0,F_TXBE_Query_Date); #Kingdee.BOS.Core.Report.MoveReport
rptdulldata=rptdull
rptdulltable=rptdull.TableName
#name="BPW_t_GJXLHGXJH"
dtLdull=DataTable();
#dtL.TableName=name
# dtL.Columns.Add("FSTOCKORGID",Int64().GetType());
# dtL.Columns.Add("FStockOrgNumber","".ToString().GetType());
# dtL.BeginLoadData();
dullflds=List[str]();
for fld in rptdulldata.Columns:
fldName=fld.ColumnName;
dataType=fld.DataType.Name.ToUpperInvariant();
sqlDataType="VARCHAR(MAX)";
if("INT" in dataType):
sqlDataType="int";
elif("DECIMAL" in dataType):
sqlDataType="decimal(23, 10)";
elif("DATETIME" in dataType):
sqlDataType="datetime";
fldInfo=("{0} {1} ").format(fldName,sqlDataType);
dullflds.Add(fldInfo);
#raise Exception(str(flds)) #构建建表语句
dulldbService=DBService();
dulltempTabs=dulldbService.CreateTemporaryTableName(this.Context, 1);
rptdulldata.TableName=dulltempTabs[0];
dullcreateTempTabSql=("/*dialect*/create table {0} ( {1} ) ").format(dulltempTabs[0],str.Join(",",dullflds));
#raise Exception(str(createTempTabSql))
DBUtils.Execute(this.Context,dullcreateTempTabSql);
DBUtils.BulkInserts(this.Context, rptdulldata);
sql="""select rt.*,ck.FDEPTID as FDEPTID,bm.fnumber as bmfnumber,bml.fname as bmfname
,chlb.FNUMBER as chlbFNUMBER
,CASE bm.F_TXBE_COMBO_H1G
WHEN 788 THEN '爱莓庄'
WHEN 723 THEN '蓝百旺'
WHEN 503 THEN '乡丰蓝莓'
WHEN 359 THEN '旺悦莓'
WHEN 358 THEN '梦遇莓'
WHEN 343 THEN '十里莓园'
WHEN 357 THEN '曼悦莓'
WHEN 724 THEN '远蓝蓝莓'
END AS qijian
,zzjg.fnumber as zzfnumber,dull.FAmount as dullFAmount
into {0} from {1} as rt
left join T_ORG_Organizations zzjg
on rt.FSTOCKORGID=zzjg.FOrgID
left join t_BD_Stock ck on rt.FSTOCKID=ck.FStockId
left join T_BD_DEPARTMENT as bm
on ck.FDEPTID=bm.FDEPTID
left join T_BD_DEPARTMENT_L as bml
on bm.FDEPTID=bml.FDEPTID and bml.FLOCALEID=2052
left join T_BD_MATERIALCATEGORY chlb
on rt.FMATERIALTYPEID=chlb.FCATEGORYID
left join {2} as dull
on rt.FSTOCKORGID=dull.FSTOCKORGID and rt.FMATERIALID=dull.FMATERIALID and rt.FSTOCKID=dull.FSTOCKID
where 1=1 and (rt.FStockName like '%农药%' or rt.FStockName like '%材料%' or rt.FStockName like '%肥料%') and rt.FStockName not like '%加工%'
and zzjg.fnumber='{3}'""".format(tableName,tempTabs[0],dulltempTabs[0],F_TXBE_Zu_Fnumber)
DBUtils.Execute(this.Context,sql);
#raise Exception(sql)
#报表关闭触发,通常在此处清理报表过程产生的临时表
def CloseReport():
this.DropTempTable();
def GetReportData(ctx,rptFormId,rptFilterFormId,schemeId,currentPosition,F_TXBE_Query_Date):
filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);#加载字段比较条件元数据。 Kingdee.BOS.Core.CommonFilter.FilterMetaData
reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rptFormId);#加载物料收发明细表 Kingdee.BOS.Core.Metadata.FormMetadata
reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rptFilterFormId);#加载物料收发明细表表过滤条件元数据。 Kingdee.BOS.Core.Metadata.FormMetadata
#获取表单服务供应商
reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider(); #Kingdee.BOS.Core.DynamicForm.FormServiceProvider
model=SysReportFilterModel(); #Kingdee.BOS.Model.ReportFilter.SysReportFilterModel
model.SetContext(ctx, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider);# reportFilterMetadata.BusinessInfo: Kingdee.BOS.Core.Metadata.BusinessInfo
#reportFilterMetadata.BusinessInfo 获取过滤窗体元数据 reportFilterMetadata.BusinessInfo.GetForm()获取过滤窗体整体信息
model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id; #GL_RPT_SubLedger 分页账表id,库存账龄分析表
model.FilterObject.FilterMetaData = filterMetadata; #Kingdee.BOS.Core.CommonFilter.FilterMetaData 过滤条件元数据
model.InitFieldList(reportMetadata, reportFilterMetadata); #初始化模型的字段列表
model.GetSchemeList();#获取过滤方案列表 对象Kingdee.BOS.Core.CommonFilter.FilterScheme
entity = model.Load(schemeId); #过滤方案的主键值,可通过该SQL语句查询得到:SELECT * FROM T_BAS_FILTERSCHEME,根据方案标识符加载报表过滤实体
dyn = DeserializeCustomFilter(reportFilterMetadata.BusinessInfo, entity.CustomFilterSetting); #获取过滤窗体的自定义参数 Kingdee.BOS.Orm.DataEntity.DynamicObject
model.DataObject = dyn; #将反序列化后的过滤器设置赋值给模型的 DataObject
filter = model.GetFilterParameter(); #Kingdee.BOS.Core.CommonFilter.FilterParameter 快捷过滤数据,返回过滤方案配置以及据此配置产生的sql语句
rptParam = RptParams(); #创建一个报表参数对象 rptParams。IRptParams为报表数据源参数接口 Kingdee.BOS.Core.Report.RptParams
rptParam.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id; #过滤框id STK_InvAgeAnalyzeFilter
rptParam.CurrentPosition = currentPosition;#分页账表当前位置,除分页账表外,该值始终是0
rptParam.StartRow = 1;
rptParam.EndRow = int.MaxValue;#StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。
rptParam.FilterParameter = filter; #设置过滤条件Kingdee.BOS.Core.CommonFilter.FilterParameter 快捷过滤数据
rptParam.FilterFieldInfo = model.FilterFieldInfo; #Kingdee.BOS.Core.Report.FilterFieldInfo
#today = DateTime.Today;
#DateTime date = DateTime.Parse(today);
result=""
if F_TXBE_Query_Date!=None and rptFormId=="STK_InvAgeAnalyzeRpt":
#result = today.ToString("yyyy-MM-dd");
result=str(F_TXBE_Query_Date)
rptParam.FilterParameter.CustomFilter["QueryGroup"]="History" #设置单选按钮组的值
QueryGroup=rptParam.FilterParameter.CustomFilter["QueryGroup"]
filter.CustomFilter["QueryDate"]=result
else:
QueryGroup=rptParam.FilterParameter.CustomFilter["QueryGroup"]
#QueryDate=rptParam.FilterParameter.CustomFilter["QueryDate"] #获取快捷过滤中的日期
#rptParam.FilterParameter.CustomFilter["QueryDate"] = result;#快捷过滤数据包
#raise Exception(str(rptParam.FilterParameter.CustomFilter["QueryDate"]))
dic={}
for item_prop in dyn.DynamicObjectType.Properties:
dic[item_prop.Name] = dyn[item_prop.Name]
dic["QueryDate"] = result
dic["QueryGroup"]=QueryGroup
filter.CustomFilter["QueryGroup"]=QueryGroup
# rptParam.CustomParams["QueryDate"]=result
# rptParam.CustomParams["QueryGroup"]=QueryGroup
#raise Exception(str(dic))
#rptParam.CustomParams["OpenParameter"] = dic
rptParam.CustomParams.Add("OpenParameter", dic); # 这行代码表示向这个自定义参数集合中添加一个键值对,键为 "OpenParameter" ,值为 dic
ss=rptParam.CustomParams["OpenParameter"]
#raise Exception(str(ss))
#raise Exception(str(dic)){'StockFrom': None, 'LotFrom_Text': None, 'StockTo': None, 'FRadio': None, 'Id': 0L, 'QueryGroup': 'Now', 'MaterialTo': None, 'QueryRange': 0L, 'LotTo_Id': 0L, 'StockFrom_Id': 0L, 'TrackPeriods': 3L, 'InvAgeEntity': <Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection object at 0x0000000000000034 [Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection]>, 'MaterialTo_Id': 0L, 'StockOrgId': '105904', 'RadioGroup': 'A', 'LotFrom': None, 'BillSource': 'STK_INSTOCK,PUR_RECEIVEBILL,SAL_RETURNSTOCK,PRD_INSTOCK,SP_INSTOCK,SP_RETURNMTRL,STK_MISCELLANEOUS,STK_MISDELIVERY,STK_TRANSFEROUT,STK_TRANSFERIN,STK_ASSEMBLEDAPP,STK_STATUSCONVERT,STK_STOCKCONVERT,STK_LOTADJUST,STK_OEMINSTOCK,STK_INVINIT,STK_TransferDirect,STK_STOCKCOUNTGAIN,PRD_RETURNMTRL,REM_INSTOCK,REM_ReturnMtrl,REM_TransferDirect,SUB_RETURNMTRL', 'StockTo_Id': 0L, 'ZeroBegPriceType': '1', 'MaterialFrom': None, 'FilteAgeDays': False, 'LotFrom_Id': 0L, 'MaterialFrom_Id': 0L, 'CurDateIsOne': False, 'LotTo': None, 'SplitPageByOwner': True, 'AgeDaysFrom': 0L, 'LotTo_Text': None, 'RangeUnit': 'Y', 'chkscheme': False, 'FRadio1': None, 'FIsHsStockField': '', 'QueryDate': <System.DateTime object at 0x0000000000000035 [2024-07-18 00:00:00]>, 'ShowForbidMaterial': False, 'AgeDaysTo': 0L, 'PriceSource': '3'}
param = MoveReportServiceParameter(ctx, reportMetadata.BusinessInfo, str(Guid.NewGuid()), rptParam) #Kingdee.BOS.Core.Report.MoveReportServiceParameter
rpt=SysReportServiceHelper.GetListAndReportData(param)
dt = DataTable();
dt = rpt.DataSource;
listcount = rpt.ListCount;
if listcount > 0:
for i in range(1, listcount):
param.RptFilterParams.CurrentPosition = i;
rptTmp = SysReportServiceHelper.GetListAndReportData(param);
if rptTmp.DataSource != None and rptTmp.DataSource.Rows.Count > 0:
for row in rptTmp.DataSource.Rows:
dt.ImportRow(row);
return dt;
#return SysReportServiceHelper.GetListAndReportData(param) #Kingdee.BOS.Core.Report.MoveReport
# /// <summary>
# /// 获取自定义参数
# /// </summary>
# /// <param name="businessInfo">过滤方案元数据</param>
# /// <param name="xml"></param>
# /// <returns></returns>
def DeserializeCustomFilter(businessInfo,xml):
binder = DynamicObjectDcxmlBinder(businessInfo); #Kingdee.BOS.Core.DynamicForm.DynamicObjectDcxmlBinder
binder.OnlyDbProperty = False;
target = DcxmlSerializer(binder); #Kingdee.BOS.Serialization.DcxmlSerializer
#切换到中性语言,获取主差量
#CultureInfo inv = new CultureInfo(2052); //中性语言
#binder.Culture = CultureInfo.InvariantCulture;// inv;
#binder.Culture = CultureInfo.InvariantCulture;
#集合忽略主键冲突
target.ColloctionIgnorePKValue = True;
obj = target.DeserializeFromString(xml, None); #Kingdee.BOS.Orm.DataEntity.DynamicObject
return obj;
分类:
金蝶云星空k3 cloud
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库