分类 工作 下的文章

summary-icon摘要由AI智能服务提供

本文介绍了在执行特定补丁版本前需执行的后台参数设置,管理员登录后启用加权平均法暂估嵌套成本的注意事项,包括不能同时启用的参数、计算上次加权平均单价时的排除规则等。还涵盖了启用参数后的成本计算步骤、异常余额处理、成本工作台配置等内容。

有用反馈

【前言】

若目前补丁为2023.09-2024.05,请先执行以下后台参数(仅执行一次;202407及以上版本自动执行;无需执行)

 --级次计算启用新检查方法--  

DELETE T_BAS_SYSTEMPROFILE WHERE FKEY = 'MATERIALLEVELCAL_NEWCHECK' and FCATEGORY='CB';

INSERT INTO T_BAS_SYSTEMPROFILE(FCATEGORY,FORGID,FACCOUNTBOOKID,FKEY,FVALUE,FACCTPOLICYID,FACCTSYSTEMID)

VALUES('CB',0,0,'MATERIALLEVELCAL_NEWCHECK','1',0,0);


【概述】

管理员Administrator登录,勾选成本管理系统参数-产品成本核算-启用加权平均法按上次加权平均单价暂估嵌套成本

image.png

1、[返工计算:循环计算]与[启用加权平均价按上次加权平均单价暂估成本]不能同时启用!

当同时启用两个参数时,请反启用其中一个参数再保存


2、计算上次加权平均单价时会排除入库序列负数量、期初负结存、期初异常余额。


3、建议启用仓库/批号/辅助属性等核算维度并从业务上打断循环嵌套。


-------------------------------------------------------------------------------------

【已生成凭证或暂估单据被固定成本,中途启用参数;或者已启用参数,存货反结账重新计算】请按以下步骤操作:

1、若其他存货核算已固定成本,则点击“清除固定成本标识”

2、删除成本出入库单据凭证

3、异常余额反出单

4、若有手工维护出库单据成本,则成本计算1次(不勾选勾选计算参数【出库核算不更新已修改成本的核算单据成本】)(不勾选重新成本计算不核算原材料)进行清除

注:会同步清除手工维护的入库单据成本(比如其他入库单),需要先引出,成本计算后再引入

5、若已启用上次加权平均价执行计算,存货反结账重新计算

a、未进行成本模块水平分表

在数据库执行:truncate table t_hs_acctgdimecalprice

注:执行后,会清除所有期间的上次加权价;如果不反结账重算,对历史核算结果不会有影响。

b、已进行成本模块水平分表

->管理员Administrator登录,不勾选成本管理系统参数-产品成本核算-启用加权平均法按上次加权平均单价暂估嵌套成本

->成本计算1次(不勾选勾选计算参数【出库核算不更新已修改成本的核算单据成本】)(不勾选重新成本计算不核算原材料)

->管理员Administrator登录,勾选成本管理系统参数-产品成本核算-启用加权平均法按上次加权平均单价暂估嵌套成本

->重新成本计算勾选计算参数【出库核算不更新已修改成本的核算单据成本】)(不勾选重新成本计算不核算原材料)

image.png

-------------------------------------------------------------------------------------

【启用参数后,成本计算步骤】

1、执行后台参数

--对组装拆卸单使用上次加权平均价进行暂估 (如有此业务;仅执行一次)

DELETE T_BAS_SYSTEMPROFILE WHERE FKEY = 'ESTIMATEASSEMBLYCOSTTYPE' and FCATEGORY='HS'; INSERT INTO T_BAS_SYSTEMPROFILE(FCATEGORY,FORGID,FACCOUNTBOOKID,FKEY,FVALUE,FACCTPOLICYID,FACCTSYSTEMID) VALUES('HS',0,0,'ESTIMATEASSEMBLYCOSTTYPE','PREAVGCOST',0,0);




如有返工业务,执行后台参数"加权平均法计算上次加权平均单价排除返工入库序列单据"(仅执行一次,202408及以上补丁),可避免返工暂估单价越算越大

DELETE T_BAS_SYSTEMPROFILE WHERE FKEY = 'IGNORECBREWORKBILL' and FCATEGORY='HS'; INSERT INTO T_BAS_SYSTEMPROFILE(FCATEGORY,FORGID,FACCOUNTBOOKID,FKEY,FVALUE,FACCTPOLICYID,FACCTSYSTEMID) VALUES('HS',0,0,'IGNORECBREWORKBILL','1',0,0);

异常余额处理规则

1)销售出库场景

若正常出库序列为【销售出库】,则出单,并将其计入【主营业务成本】。

2)生产领料场景

若正常出库序列为【生产领料】,则新增「出库成本调整单」;同步生成凭证(借:制造费用,贷:存货科目);

执行费用引入到费用归集,建议不分摊至返工工单(可设置包含定额因子的复合费用分配标准,定额因子单据体新增页签"按单据类型设置":https://vip.kingdee.com/link/s/l5E7q


Q:启用加权平均法按上次加权平均单价暂估嵌套成本,为何暂估无值?

A:执行后台参数"加权平均法计算上次加权平均单价排除返工入库序列单据",入库序列仅有返工入库,会全部被排除,需要手工暂估成本/勾选零成本自动取价

上传图片



2、存货关账

平时如需试算,可将存货未关账的错误检查项改成警告:https://vip.kingdee.com/link/s/lXVKd


3、成本计算3-5次(均勾选计算参数【出库核算不更新已修改成本的核算单据成本】)

image.png

每次计算后作如下检查,已处理或确认无误的无需重复检查

--->合法性检查报告,检查错误、异常、警告等项目

查询《存货核算明细报告》分析单价计算过程。

--->《核算单据查询》,支持按金额过滤并处理入库序列0成本

  • 《核算单据查询》支持过滤目标成本(https://vip.kingdee.com/link/s/ZY8Ld),显示超出警戒数据。

image.png




--->比较《存货收发存汇总表》的发出单价与结存单价(如果只有其中一项,则无需比较)


-->《异常余额汇总表》查看核算维度下的异常余额


--->毛利分析

打开《销售出库利润明细表》(尤其是物料启用批号等影响出库成本)

image.png

或者产品维度利润分析表》进行毛利分析:https://vip.kingdee.com/link/s/lLNjG


4、期末在产品成本调整/异常余额出单


5、存货对账和存货结账

【说明】

1、考虑从业务上打断循环嵌套链条,比如物料启用批号影响出库成本。

注:产品在物料档案中的物料维度(批号、BOM版本、计划跟踪号)、辅助属性至少一个勾选“影响出库成本”


2、(非必要步骤,认为有必要时执行)


适用情形举例:

a.加权计算结果0,出库暂估到成本,导致异常余额

b.需要固定用料单据成本

c.执行云巡检-检查当前期间材料费用分配金额和成本计算单本期投入材料金额是否相等,提示不等,则应执行出库成本核算->生成凭证固定成本;

或者升级最新补丁

image.png



->出库成本核算

->生成凭证固定成本,涉及的循环嵌套单据,比如其他出库单、领退补料单、组装拆卸单(也可以固定组装拆卸单成本)等非生产入库单据】

->成本计算

注:

a. 再次进行检查,若仍有较大差异,且前面步骤已生成凭证固定成本,则删除凭证,重新执行:出库成本核算->凭证生成->成本计算。

可能要重复几次“删除凭证->出库成本核算->凭证生成->成本计算”

b. 若仅有一点异常余额,通常无实质影响,建议直接出单。


3、以上步骤按实际情况确定后,可以配置成本工作台。请参考:#实践案例#成本工作台_自动获取《月末在制分配标准值维护》


4、(非必要步骤,认为有必要时执行)若启用后台参数CalAssemblySetAcctgBillEdit,则勾选计算参数【出库核算不更新已修改成本的核算单据成本】时组装拆卸单更新修改标识(即不再固定成本)---2024年1月份补丁

注意:中途启用后台参数CalAssemblySetAcctgBillEdit,当期需要生效的话,需要先不勾选计算参数【出库核算不更新已修改成本的核算单据成本】并计算,后续再勾选计算参数【出库核算不更新已修改成本的核算单据成本】进行计算就不会固定成本。

DELETE FROM T_BAS_SYSTEMPROFILE WHERE  FCATEGORY ='HS' AND FKEY ='CalAssemblySetAcctgBillEdit'; INSERT INTO T_BAS_SYSTEMPROFILE(FCATEGORY,FORGID,FACCOUNTBOOKID,FKEY,FVALUE,FACCTPOLICYID,FACCTSYSTEMID) VALUES('HS',0,0,'CalAssemblySetAcctgBillEdit','0',0,0);


5、“启用加权平均法按上次加权平均单价暂估嵌套成本”与“返工计算->循环计算”对比

https://vip.kingdee.com/link/s/Z7bl7



链接】

存货核算增加成本来源、成本赋值日期


成本计算逻辑:循环嵌套暂估成本:https://vip.kingdee.com/link/s/l1bxg


summary-icon摘要由AI智能服务提供

本文介绍了金蝶云·星空产品成本核算的学习路径,重点阐述了完成成本计算后需进行的检查工作,包括合法性检查、核算单据查询、存货收发存汇总表比较、异常余额汇总表查看、毛利分析、产品成本还原及期间成本对比分析等步骤,并提供相关链接和子系统操作说明。

有用反馈

金蝶云·星空产品成本核算学习路径_企业版

https://vip.kingdee.com/school/learnPath/615926197301301248?productLineId=1&lang=zh-CN


【概述】

完成成本计算后,需开展以下检查工作(若计算结果已确认准确无误,则无需重复检查)


1、合法性检查报告:对错误、异常及警告等项目进行检查。

一旦出现异常成本情况(如单价小于 0),可通过查阅《存货核算明细报告》来深入分析原因,并采取相应的处理。

在特殊情形下,加权计算结果为 0,出库单据又暂估到单价,导致结存单价出现负数;若出库单价需要为0,通常需要进行固定处理。


2、《核算单据查询》:支持按照金额过滤 0 至 0 的数据。

《核算单据查询》支持过滤目标成本:https://vip.kingdee.com/link/s/ZY8Ld,显示超出警戒数据。

image.png


若领料等出库单据生成凭证,成本会被固定;若生产入库等单据生成凭证,成本计算会不通过。

image.png


3、比较《存货收发存汇总表》的发出单价与结存单价:在进行此项检查时,若发出单价与结存单价仅有一项数据,则无需进行比较。

重点检查是否存在物料的发出单价与结存单价出现异常差异的情况。

需要注意的是,若结存金额极小,如仅为 1 元,且结存数量为 0.0001PCS,进而导致结存单价极大的情况,此类情况可予以忽略。


4、《异常余额汇总表》:通过查看该表,能够清晰掌握核算维度下的异常余额。

针对发现的异常余额,应及时分析原因并出单处理。

当出现异常余额时可选择出单,或者新增成本调整单,参考链接:手工成本调整单:https://vip.kingdee.com/link/s/ZfzWO


5、毛利分析:进行毛利分析时,可打开《销售出库利润明细表》(尤其当物料启用批号等因素对出库成本产生影响时)

image.png

或者打开《产品维度利润分析表》(https://vip.kingdee.com/link/s/lLNjG)进行分析


6、打开《产品成本还原对比分析》,https://vip.kingdee.com/link/s/lyutk

分析还原到最底层的消耗,支持对比分析

注:产品实际成本获取成本计算单的完工数据。

image.png


7、打开《产品期间成本对比分析

分析本层的成本结构,支持对比分析

注:产品实际成本获取成本计算单的完工数据。


【执行成本云巡检】

image.png


子系统:存货核算

image.png


子系统:产品成本核算

image.png

链接:成本云巡检功能操作说明,https://vip.kingdee.com/link/s/ZfzrW


【说明】

其他检查,比如分析《材料费用分配明细表》

image.png

【链接】


应用场景:在产品-直接材料按月末在制数和用料清单分配:https://vip.kingdee.com/link/s/lazIp


成本管理系统参数“月末在制获取用料清单在制材料数量”:https://vip.kingdee.com/link/s/ledBs

->直接按期间获取用料清单的在制子项数量,再倒算完工消耗子项数量


学习目标

完成本单元学习后,您将能够:

  • 了解返工生产的业务背景

  • 掌握返工生产的成本逻辑

什么是返工生产业务

当您由于生产工艺原因,导致某些产品不合格,需要退回到产线上进行返修,达到合格状态后再次入库,您可以使用返工生产业务流程,业务流程操作步骤您可以参考超实用的生产流程:返工生产

返工生产成本计算逻辑

返工生产流程,成本计算主要涉及到两个单据,返工生产领料单和返工生产入库单。如果您返工过程需要额外领用其他配件,可以通过调整生产用料清单增加新材料后续生产领料,也可参与成本计算。本单元将主要通过返工生产领料单和返工生产入库单来给您介绍返工业务,返工生产入库单材料成本取决于返工生产领料单,返工生产领料单的成本计算有两种方式,成本暂估和循环计算,取决于您的成本管理系统参数设置,如图1所示。

image.png

图1

此参数默认不可见,可以从BOS中参数可见性放出来,如图2所示。

image.png

图2

接下来我将为您具体介绍两种参数对应的成本计算逻辑。

  1. 成本暂估,是指返工生产领料单按照您零成本自动取价参数的规则来暂估成本,如图3所示。

    image.png

    图3

    您成本计算后,返工生产领料单的成本来源会显示为返工暂估,并显示具体的成本暂估来源,如图4所示。

    image.png

    图4

  2. 循环计算

    上文介绍的返工计算为成本暂估,是根据零成本自动取价取数,但是可能暂估的价格并不是您实际需要的价格,您如果需要实现返工领料单的出库单价尽可能贴近正常出库单据的加权平均价,您可以设置返工计算参数为循环计算,同时需要设置循环计算次数和差异率,如图5所示。

    image.png

    图5

    启用循环计算的目的是为了让您的返工生产领料单最大程度接近您的当期加权平均价,减少由于返工业务导致的成本误差。您设置的循环次数越大,成本计算耗时就会越长。

    循环差异率=|上一次计算的返工领料单的成本-当期新计算的返工领料单的成本| /上一次正常出库成本

    您的差异率设置的越小,代表您对成本精确程度要求更高,未达到您设置的差异率范围内,系统会继续循环计算,但是最大循环计算的次数不会超过您设置的最大循环次数。也就是说,循环次数达到您设置的最大循环次数系统就跳出循环,不管此时差异率有没有达到您设置的差异率。

    下面通过案例来具体理解计算逻辑。

    案例:物料A期初库存为1个,成本价为3元,本期采购入库1个,单价为4元,本月发生一笔返工生产业务,当期领料,当期入库了;发生一笔正常生产领料业务;差异率设置为0,最大循环次数为7。

    第一次循环:是为了暂估单价,计算结果如图6所示,第一次返工生产领料按照期初加权价格进行暂估。

    image.png

    图6

    第二次循环:计算结果如图7所示,本次返工生产领料单的成本,取第一次循环计算出来的正常加权成本。

    image.png

    图7

    差异率=|3-3.33| / 3.33=9.91%

    第三次循环计算:计算结果如图8所示,本次返工生产领料单的成本,取第二次循环计算出来的正常加权成本。


    image.png

    图8

    差异率=|3.33-3.44| / 3.44=3.20%

    第四次循环计算:计算结果如图9所示,本次返工生产领料单的成本,取第三次循环计算出来的正常加权成本。

    image.png

    图9

    差异率=|3.44-3.48| / 3.48=4%

    第五次循环计算:计算结果如图10所示,本次返工生产领料单的成本,取第四次循环计算出来的正常加权成本。


    image.png


    图10

    差异率=|3.48-3.49| / 3.49=0.29%

    第六次循环计算:计算结果结果如图11所示,本次返工生产领料单的成本,取第五次循环计算出来的正常加权成本。

    image.png

    图11

    差异率=|3.4938-3.4979| / 3.4979=0.12%

    第七次循环计算:计算结果如图12所示,本次返工生产领料单的成本,取第六次循环计算出来的正常加权成本。

    image.png

    图12

    差异率=|3.4979-3.4993| / 3.4993=0.04%

    此时已达到最大循环次数,跳出循环,由上述计算过程可见,每循环一次,差异就会变小一点,循环次数越大,差异越小,但是需要考虑到系统性能,不建议循环次数设置的过大。

    理论上您成本计算时间=返工计算选择成本暂估所耗费用的时间*最大循环次数

通过本单元学习,相信您对返工业务的成本逻辑已经有初步了解,更多相关知识可参考如下进行巩固学习。

  1. 返工计算启用循环计算说明


  1. 存储远程桌面记录的信息文件,default.rdp,这个文件在“我的文档里面”,删除即可
    1打开我们的电脑,文件夹选项菜单。如下图

  1. 2
    2 显示所有隐藏文件(包括系统隐藏文件),并且应用到所有文件夹,如下图

  1. 3
    3 如下图,找到default.rdp文件删除即可。(一般是在我的文档这个文件夹下面)

END

回到顶部

方法2.注册表清理

  1. 1
    1.开始--- 运行--- 输入 regedit 命令可以打开注册表,如下图

  1. 2
    2 找到注册表里面的,:HKEY_CURRENT_USER \ Software\Microsoft  \ Terminal ServerClientDefault  其中右边的就是,你连接过的记录了。删除您需要清除的文件即可。

  1. 3
    清除之后,再次打开mstsc远程桌面连接图标你就会发现,之前的连接痕迹都已经清除了


本文描述了一个使用Python和SQL Server存储过程实现金蝶软件简单报表的过程。步骤包括新建账表和过滤框、修改过滤窗口标识、注册插件。Python代码涉及初始化报表属性、获取过滤条件、构建取数SQL和临时表、动态构建报表列和标题、展示数据。SQL存储过程负责查询和构建报表数据。

有用

反馈

第一步 新建一个简单账表加上表头标签

第一步 新建一个简单账表加上表头标签.png

第二步 新建一个过滤框

第二步 新建一个过滤框.png

第三步 修改过滤窗口标识

第三步 修改过滤窗口标识.png

第四步 注册插件

第四步 注册插件.png

python代码实现

import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS") 
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.Contracts")
clr.AddReference("Kingdee.BOS.DataEntity")#引入命名空间from Kingdee.BOS import *from Kingdee.BOS.App import *from Kingdee.BOS.App.Data import *from Kingdee.BOS.Contracts import *from Kingdee.BOS.Contracts.Report import *from Kingdee.BOS.Core.Report.PlugIn import *from Kingdee.BOS.Core.Report import *from Kingdee.BOS.Orm.DataEntity import *from Kingdee.BOS.Util import *from System import *#import datetime#全局变量global sBillDataTempTable;
sBillDataTempTable = "";global _dtDateFrom; #存放开始日期数据global _dtDateTo;#存放结束日期数据global _matter;#存放物料标识数据def Initialize():
   this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
   this.ReportProperty.ReportName = LocaleValue("老李头的简单报表示例Python", this.Context.UserLocale.LCID);
   this.ReportProperty.IsGroupSummary = False; #合计分组
   this.ReportProperty.IsUIDesignerColumns = False;   

#获取过滤条件  用于数据源过滤def GetFilter(filter):
  dyFilter = filter.FilterParameter.CustomFilter;  global _dtDateFrom;  global _dtDateTo;  global _matter;  #获取过滤框里的数据
  #GetBaseDataByKey 单选基础资料取值
  #GetMulBaseDataByKey 多选基础资料
  #GetDataByKey 文本,日期 取值
  _dtDateFrom = GetDataByKey(dyFilter, "FBeginDate").ToString() if GetDataByKey(dyFilter, "FBeginDate") != "" else "";
  _dtDateTo = GetDataByKey(dyFilter, "FEndDate").ToString() if GetDataByKey(dyFilter, "FEndDate") != ""  else "";
  _matter = GetBaseDataByKey(dyFilter,"F_MATTER","Id") if GetBaseDataByKey(dyFilter,"F_MATTER","Id") != ""  else "";  return dyFilter;#构造取数Sql,取数据填充到临时表:tableNamedef BuilderReportSqlAndTempTable(filter,tableName):
  dyFilter = GetFilter(filter);  global sBillDataTempTable
  sBillDataTempTable = tableName;
  CreatBillDataTempTable();
  SetDataToRptTable(filter); 
#创建【动态构建列存储过程】数据临时表def CreatBillDataTempTable():
  sql = "";  #数据源设置 使用存储过程后期可以不需要修改代码直接修改存储过程实现动态列展示
  #使用存储过程获取数据参数:临时表名称,开始时间,结束时间,物料标识
  sql =("/*dialect*/ EXEC MindeeSimpleTable '{0}','{1}','{2}','{3}'").format(sBillDataTempTable,_dtDateFrom,_dtDateTo,_matter); 
  #使用SQL语句获取数据
  #sql =("""/*dialect*/SELECT T1.FBILLNO 单据号 ,T2.FQTY 数量 ,T3.FNUMBER 物料代码  ,T4.FNAME 物料名称 ,T4.FDESCRIPTION 描述  ,ROW_NUMBER() OVER(ORDER BY T1.FID,T2.FENTRYID)  FIDENTITYID into {0} FROM  T_PUR_POORDER t1 INNER JOIN T_PUR_POORDERentry t2 ON T2.FID=T1.FID INNER JOIN T_BD_MATERIAL T3 ON T3.FMATERIALID=T2.FMATERIALID INNER JOIN T_BD_MATERIAL_L T4 ON T4.FMATERIALID=T3.FMASTERID WHERE 1=1 AND 1 = CASE WHEN ISNULL('{1}','') = '' THEN 1 ELSE CASE WHEN ISNULL(T1.FDATE,'')  >=  '{1}' THEN 1 ELSE 0 END END AND 1 = CASE WHEN ISNULL('{2}','') = '' THEN 1 ELSE CASE WHEN ISNULL(T1.FDATE,'')  <=  '{2}' THEN 1 ELSE 0 END END""").format(sBillDataTempTable,_dtDateFrom,_dtDateTo);
  DBUtils.ExecuteDynamicObject(this.Context, sql);#动态构建列def GetReportHeaders(filter):
  header = ReportHeader();
  localEid=this.Context.UserLocale.LCID; 
  sql = ("""SELECT T1.system_type_id as FDateTypeId , t3.name AS FDateType,t1.name AS FName FROM sys.columns t1   INNER JOIN sys.objects t2 ON t2.object_id = t1.object_id INNER JOIN sys.types t3 ON t3.user_type_id=t1.user_type_id  WHERE t2.name='{0}' AND  t2.type='u' """).format(sBillDataTempTable);
  RecordData = DBUtils.ExecuteDynamicObject(this.Context, sql);  for item in RecordData:    #隐藏不显示这个字段 FIDENTITYID
    #不知为什么报表格式会显示格式是  FIDENTITYID,FIDENTITYID (求解答)
    if item["FName"].ToString() == str("FIDENTITYID"):      continue
    header.AddChild(item["FName"].ToString(),LocaleValue(item["FName"].ToString(), localEid), GetEnumByValue(SqlStorageType,item["FDateTypeId"].ToString()), True);  return header;#设置报表头def GetReportTitles(filter):
  titles = ReportTitles();  #把过滤框的日期放到报表头
  titles.AddTitle("FBeginDate", str(filter.FilterParameter.CustomFilter["FBeginDate"]));
  titles.AddTitle("FEndDate", str(filter.FilterParameter.CustomFilter["FEndDate"]));  return titles;#展示数据表到前台def SetDataToRptTable(filter):
  sqlstr=("SELECT * FROM {0}").format(sBillDataTempTable);
  sqlstr2=("SELECT COUNT(*) AS Frow FROM sys.objects WHERE name='{0}' AND type='u'").format(sBillDataTempTable);
  ROWS = DBUtils.ExecuteDynamicObject(this.Context,sqlstr2);  if str(ROWS[0]["Frow"]) != "0":
     DBUtils.Execute(this.Context, sqlstr); 

#获取DynamicObject数据包中指定key的值def GetDataByKey(doFilter, sKey):
  sReturnValue = "";  if doFilter is not None and doFilter[sKey] is not None and len(str(doFilter[sKey])) > 0:
    sReturnValue = doFilter[sKey].ToString();  return sReturnValue;#获取DynamicObject数据包中指定key的基础资料的指定属性的值def GetBaseDataByKey(doFilter,sKey,sItem):
  sReturnValue="";  if doFilter is not None and doFilter[sKey] is not None and len(str(doFilter[sKey])) > 0:
    doTemp = doFilter[sKey];
    sReturnValue = doTemp[sItem].ToString();  return sReturnValue;#获取DynamicObject数据包中指定key的基础资料的指定属性的值def GetMulBaseDataByKey(doFilter,sKey,sItem):
  sReturnValue = "";  if doFilter is not None and doFilter[sKey] is not None and len(str(doFilter[sKey])) > 0:    for item in doFilter[sKey]:      if len(str(GetBaseDataByKey(item,sKey,sItem)))>0:
        sReturnValue = "{0}{1}".format(sReturnValue, GetBaseDataByKey(item,sKey,sItem)+",");  return sReturnValue.TrimEnd(',') #replace()代替C# TrimEnd(',')函数#枚举操作def GetEnumByValue(enumType,value):
  return Enum.Parse(enumType, value);

SQLSERVER 存储过程

-- =============================================-- Author:		敏蝶老李头-- Create date: 2023-04-11-- Description:	简单报表演示-- =============================================ALTER PROCEDURE [dbo].[MindeeSimpleTable]	-- Add the parameters for the stored procedure here
	@TableName varchar(50),
	@FBeginDate varchar(50),
	@FEndDate varchar(50),
	@Matter intASBEGIN 

	SELECT T1.FBILLNO 单据号 ,T2.FQTY 数量 ,T3.FNUMBER 物料代码  ,T4.FNAME 物料名称 ,T4.FDESCRIPTION 描述  
	,ROW_NUMBER() OVER(ORDER BY T1.FID,T2.FENTRYID)  FIDENTITYID 
	INTO #DATA FROM  T_PUR_POORDER t1 
	INNER JOIN T_PUR_POORDERentry t2 ON T2.FID=T1.FID 
	INNER JOIN T_BD_MATERIAL T3 ON T3.FMATERIALID=T2.FMATERIALID 
	INNER JOIN T_BD_MATERIAL_L T4 ON T4.FMATERIALID=T3.FMASTERID 
	WHERE 1=1 
	AND 1 = CASE WHEN ISNULL(@FBeginDate,'') = '' THEN 1 ELSE CASE WHEN ISNULL(T1.FDATE,'')  >=  @FBeginDate THEN 1 ELSE 0 END END 
	AND 1 = CASE WHEN ISNULL(@FEndDate,'') = '' THEN 1 ELSE CASE WHEN ISNULL(T1.FDATE,'')  <=  @FEndDate THEN 1 ELSE 0 END END
	AND 1 = CASE WHEN ISNULL(@Matter,0) = 0 THEN 1 ELSE CASE WHEN ISNULL(T3.FMATERIALID,'')  =  @Matter THEN 1 ELSE 0 END END--多选基础资料参考--AND 1 = CASE WHEN ISNULL(@Matter,'') = '' THEN 1 ELSE CASE WHEN T3.FMATERIALID in ( select FID from  dbo.fn_StrSplit(@Matter, ',')   )THEN 1 ELSE 0 END END 
	 IF OBJECT_ID(@TableName,N'U') is  null
 BEGIN
 --不存在 新增表
 DECLARE @NEWTABLESQL VARCHAR(100)=N'SELECT * INTO '+@TableName+' FROM #DATA'
 EXEC(@NEWTABLESQL) END
 ELSE
 BEGIN
 --存在 删除数据表重新插入
 EXEC(N'DROP TABLE '+ @TableName+'') DECLARE @UPDATESQL VARCHAR(100)=N'SELECT * INTO '+@TableName+' FROM #DATA'
 EXEC(@UPDATESQL) 
 END
 SELECT * FROM #DATADROP TABLE #DATAEND

功能实现截图

image.png


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