Code: |
Function OstTov(cSclad, cGrup, cNNum, dDat)
// остаток товара на складе товара на указанную дату // без учета партий // в основных ед. измерения // -> вход: // cSclad - код склада // cGrup - код группы товара // cNNum - номенклатурный номер // dDat - дата на которую расчитывается остаток // <- выход // nOst - количество товара на дату Local nOst:=0 Local nBegin:=0 Local nPrih:=0 Local nRash:=0 Local dDat0:=ctod(' / / ') NetUse("Umdocm",loadpath()+"sclad\mdocm.dbf") // начало расчетного периода dbPush('user','user','',{'UPPER(USER+FORM+IDENT)', upper(' '+'MAIN'+'SCL_BEG ')}) user->(dbgotop()) if user->(!eof()) dDat0:=ctod(alltrim(user->(xVal))) endif dbPop() // остаток товара на начало dbPush('mkart','mkart_sn','',{'UPPER(STATUS+SCLAD+GRUP+NNUM)',upper(' '+cSclad+cGrup+cNNum)}) mkart->(dbGoTop()) if mkart->(!Eof()) nBegin:=mkart->kol0 endif dbPop() // поступление / выбытие товара dbPush('umdocm','mdocm_k','',{'UPPER(SCLAD+GRUP+NNUM+PARTIA+DTOS(DATE))', upper(cSclad+cGrup+cNNum+' '+dtos(dDat0)), upper(cSclad+cGrup+cNNum+' '+dtos(dDat))}) umdocm->(dbgotop()) if umdocm->(!Eof()) do while umdocm->(!eof()) nPrih += iif(umdocm->vid='1', umdocm->kol, 0) nRash += iif(umdocm->vid='2', umdocm->kol, 0) umdocm->(dbSkip()) enddo endif() dbPop() umdocm->(dbclosearea()) // итого nOst:= nBegin + nPrih - nRash Return nOst |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours