U872-结算成本处理步骤及索引处理

本文介绍U872系统中制造企业的成本结算流程,包括取存货、入库单明细等步骤,并提出通过禁用计划任务、重建索引等方法来提高暂估速度。
       U872每月都须要做月结,对于制造企业来说,结算成本处理是不可缺少的一个处理环节,每次查询出来待暂估记录也比較多(我接触到的有3万左右),暂估时间一般要2-3小时左右,若调用的大表索引碎片多时,会须要更长的时间,先看一下处理过程调用的主要步骤及脚本有哪些:
第一步:取存货模块的最新会计期间

SELECT MAX(iPeriod) AS CurMonth FROM GL_mEnd WHERE bFlag_IA=1
 第二步:取入库单明细账记录
Select top 1 rdrecords.autoid from rdrecords inner join ia_subsidiary 
    on rdrecords.autoid=ia_subsidiary.id Where ia_subsidiary.CvouType = N'01'
    and isnull(rdrecords.iquantity,0)=isnull(rdrecords.isquantity,0) 
    and rdrecords.autoid=5403479 And ia_subsidiary.imonth=6
 第三步:取存货总账表记录
Select * from Ia_Summary 
    where   cinvcode= N'021299000098' And IsNull(iDirect0) = 0 
        and IsNull(Ia_Summary.iPeriod0) <> 0 And Ia_Summary.iMonth = 6 
 第四步:取採购结算单主从档记录
select PSVID from pursettlevouch where PSVID=32128
Select * From PurBillVouchs Where ID=1709941
 第五步:取存货明细表记录
Select Autoid From ia_subsidiary 
    Where ID=5403457 And iMonth=6 And (cVouType= N'01' Or (cVouType= N'30' and cSrcVouType=N'01')) 
    
Select iMonth,cPZID ,*  from ia_subsidiary 
    where  (cVouType= N'01' or (cVouType= N'33' and cSrcVouType=N'01')) 
        and (bflag=1 or bflag=2) and id=5403457
Select top 1 * from ia_subsidiary 
    where (CVOUTYPE='01' OR ((CVOUTYPE='33' or CVOUTYPE='30') 
        and csrcvoutype='01' )) and id=5403457 And bFlag=1 order by autoid desc
Select * from ia_subsidiary where  CVOUTYPE= N'24' and id=5403457 and imonth=6 and cSRcvoutype='01'
Select Top 1 * From Ia_Subsidiary Where AutoID=1091064
 第六步:新增存货明细账记录
insert into IA_Subsidiary (bRdFlagcBusTypecBusCodecVouCodeIDValueIDJustIDdVouDate,
    dKeepDateiMonthiPZIDcInvHeadcDifHeadcVouTypecPTCodecSTCode,cWhCode
    cInvCode,cAccDepcRdCodecCusCode,cBillCodecDLCodecPSPCodecProCodecDepCode,
    cPersonCode,iAInQuantity,iAOutQuantityiInCostiOutCost,iAInPriceiAOutPrice,
    iDebitDifCostiCreditDifCost,cBatchCodecMaker,cAccounterbFlagbMoneyFlag
    bSalecMemo,cDefine1cDefine2cDefine3,cDefine4cDefine5cDefine6,cDefine7
    cDefine8cDefine9,cDefine10cDefine11,cDefine12,cDefine13,cDefine14,cDefine15,
    cDefine16,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,
    cdefine22,cdefine23,cdefine24,cdefine25,cdefine26,cdefine27,cdefine28,cdefine29,
    cdefine30,cdefine31,cdefine32,cdefine33,cdefine34,cdefine35,cdefine36,cdefine37,
    citem_class,citemcode,citemcname,cVenCode,cHandler,cOrderCode,cARVCode,cName,
    cBatchia,dMadeDateia,iMassDateia,cMassUnit,dVDateia,cproordercode,iproorderid,
    iproorderids,cworkprocode,cworkprocodedis,cworkcentercode,cworkcentername,cendcode,
    csaleordercode,isaleorderid,isaleordersid,isaleorderids,centrustordercode,ientrustorderid,
    ientrustordersid,ipurordersid,idlsid,cAssUnit,inum,strContractCode,cpurordercode,exoCode,
    iExRowno,consignMentCode,iconsignmentautoid,imaterialfee,iprocessfee,cSRcVouType,
    cDemandCode,cDemandMemo,cIMOrdercode)
    values (1,N'',null,N'TL20140519396',5403457,null,null,'2014-05-19','2014-06-25',
        6,1603742,null,null,N'24',N'01',null,N'07',N'021299000098',N'6901',N'101',null,null,null,
        null,null,null,N'07409',-20,null,1.0769,null,-21.54,null,null,null,null,N'lml',N'lh',
        N'1',0,0,null,N'0911',null,null,null,null,null,0,null,null,null,null,N'PO00001903',
        null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,N'4',
        N'CP140404-040',null,0,0,null,null,N'CPWG1404-075',N'PO00001903',null,null,null,null,
        null,null,null,null,null,N'001587',N'yql',N'TLWG-140400006151',N'TL201405160263',
        null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
        null,null,null,1916612,null,null,null,null,N'TLWG-140400006151',null,null,null,null,null,
        null,N'01',null,null,null)
第七步:取存货档案的核算自由项
Select bCheckFree1,bCheckFree2,bCheckFree3,bCheckFree4,bCheckFree5,bCheckFree6,bCheckFree7,
        bCheckFree8,bCheckFree9,bCheckFree10 FROM inventory where cInvcode= N'021299000098'
 第八步:写总账
Exec IA_WriSummary ,2,6N'07'N'021299000098'N''N''N''N''N''
                    N''N''N''N''N'',-20,-21.54,0,0,0,0
注:数量是负数
第九步:反复运行第六步的脚本
第十步:写总账

<span style="font-size:12px;">Exec IA_WriSummary 按仓库核算,2,6, N'07', N'021299000098', N'', N'', N'', N'', N'', N'', N'', N'', N'', N'',20,21.54,0,0,0,0</span>
 注:数量为正数

     结算成本处理涉及到的大表有 出入库明细表rdrecords。总账明细表ia_subsidiary,採购结算单明细表PurBillVouchs
若要保证暂估的速度,须要对优化处理:

第一步:临时禁用SQL代理中的一些计划任务。如备份、同步等

第二步:点【暂估】button前。一定要对rdrecords,Ia_Summary ,ia_subsidiary,PurBillVouchs,Inventory,Ia_Summary 重建或整理索引,索引碎片能够用dbo.fn_ShowIndexSP函数,重建索引能够用Dyl_ReindexNew过程

第三步:检查这些表的索引的碎片是否已所有在10下面。若是表示所有整理成功!

能够做结算成本处理的暂估操作了。

/*
功能:显示指定表的索引碎片
创建人:baronyang
创建时间:2014-07-02
select * from dbo.fn_ShowIndexSP('')
*/
Alter function dbo.fn_ShowIndexSP
(
@tablename varchar(255)
)
returns @table table (tablename varchar(255),indexname varchar(255),spbl int)
as
BEGIN
	DECLARE @dbid int,@objid int
	select @dbid=DB_ID(),@objid=OBJECT_ID(@tablename)
	insert into @table (tablename,indexname,spbl)
		SELECT c.name,b.name,avg_fragmentation_in_percent  
     FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL) as a
		  inner JOIN sys.indexes b on a.object_id=b.object_id and a.index_id=b.index_id
		  inner JOIN sys.objects c on a.object_id=c.object_id
		  where b.index_id>0 and avg_fragmentation_in_percent>=1
    return 
end
/*
功能:重建整理
创建人:baronyang
创建时间:2014-07-02
exec Dyl_ReindexNew 'KQ_OtherData'
select * from dbo.fn_showindexsp('KQ_OtherData')
*/
Alter procedure dbo.Dyl_ReindexNew
@TableName varchar(255),
@indexname varchar(255)=''  
as  
set nocount on 
 
  declare @dbid int,@objid int,@sql varchar(1000)
  select @dbid=DB_ID(),@objid=isnull(OBJECT_ID(@TableName),0)
  if @objid=0
  BEGIN
	print @TableName+'表不存在'     
	return
  End
  IF Exists(SELECT * FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL)  
      where avg_fragmentation_in_percent>30 and index_id>0  
     ) and @objid>0
  BEGIN    
     set @sql='alter index '+case when isnull(@indexname,'')<>'' THEN @indexname else 'all' END
				+' on '+@TableName+' rebuild WITH(online=on,STATISTICS_NORECOMPUTE=ON)'
     exec (@SQL) 
  End
  
  IF Exists(SELECT * FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL)  
     where avg_fragmentation_in_percent>30 and index_id>0 and @objid>0  
      )  
   print @TableName+'表索引碎片还是超过30。请手动重建索引'    




内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值