Страница 1 из 1

Вопрос по поводу функций расчета складских остатков на опред

Добавлено: 03 апр 2003, 18:41
oilcrazy
Доброе время суток...

Нашел в Галактике функции (написанные как я понимаю на паскале и доступные при написании своей проги) которые рассчитывают остатки на складе,моле,партии на любую дату, и насколько я понимаю в различных разрезах. По некоторым разобрался, что они делают, а по 3-м до конца не уверен. Может у кого-то есть инфа по этим функциям??

Store_TypeOstatki();
Store_DoSpace();
Store_Run();

У Store_Run() аж 8 параметров и вот интересно, что каждый из них означает??

Re: Вопрос по поводу функций расчета складских остатков на о

Добавлено: 03 апр 2003, 19:46
ecasoft
Никогда не пользовался особо, но могу рассказать немного:
Функции для выгрузки в tmpSaldo1 Остатков по разрезу. По умолчанию выгружает склад (но может и производство).

Store_init - инициализация

_ReInit - удаляет все записи из таблицы tmpSaldo

_Run - рассчитывает и записывает

параметры последней

1- дата
2, 3, 4, 5 - Nrec-ки Мц, склад, мол, партия - разрез одним словом. Если ставишь -2 вместо Nrec, то она запросит из каталога.

6.7.8 - управление группировкой по подразделению, молу , партии. если true - нет группировки (все записи).

_Done - деинициализация объекта.

Еще есть функции получить сумму и количество в выбранном разрезе после расчета, функции анализа прерывания пользователем.

С уважением, Игорь

F_STORE.PAS §е§г§д§в§а§Ъ§д?

Добавлено: 03 апр 2003, 19:56
Nuts
{
§Ї§С§Щ§Я§С§й§Ц§Я§Ъ§Ц : §І§Ц§Ф§Ъ§г§д§в§С§и§Ъ§с §Я§С§Э§Ъ§й§Ъ§с §б§а §в§С§Щ§в§Ц§Щ§е ЁU
§Ю§а§Х§е§Э§о §в§С§г§й§Ц§д§С §У§з§а§Х§с§л§Ц§Ф§а/§Ъ§г§з§а§Х§с§л§Ц§Ф§а §г§С§Э§о§Х§а §б§а §в§С§Щ§в§Ц§Щ§С§Ю
§У§н§Ф§в§е§Ш§С§Ц§д §У §д§С§Т§Э§Ъ§и§е TmpSaldo1 §д§Ц§Ь§е§л§Ъ§Ц §а§г§д§С§д§Ь§Ъ §б§а §в§С§Щ§в§Ц§Щ§С§Ю
§г§а §г§У§а§в§С§й§Ъ§У§С§Я§Ъ§Ц §Ъ §Т§Ц§Щ - §У §Щ§С§У§Ъ§г§Ъ§Ю§а§г§д§Ъ §а§д §б§С§в§С§Ю§Ц§д§в§а§У
}
{$IFNDEF DEBUGALL} { $D-} {$ENDIF}
{ $L-}
{ $i useparts.pas}

UNIT f_store ;

INTERFACE

USES
Access,
GalDict,
Rep_Ost ; { §Ю§а§Х§е§Э§о Eugen-§С §г§а§Т§г§д§У§Ц§Я§Я§а §г§С§Ю§С §У§н§Ф§в§е§Щ§Ь§С §У TmpSaldo1 }

VAR


{ --------------------------------------------------------------------- }
vStore_WasStopped : boolean ; { TRUE §Ц§г§Э§Ъ §б§в§а§и§Ц§г§г §Т§н§Э §б§в§Ц§в§У§С§Я }
vStore_Summa : double ; { §і§е§Ю§Ю§С , §У§н§Щ§н§У§С§Ц§д§г§с §б§а§г§Э§Ц Store_Calc }
vStore_SummaV : double ; { §Ј§С§Э §і§е§Ю§Ю§С , §У§н§Щ§н§У§С§Ц§д§г§с §б§а§г§Э§Ц Store_Calc }
vStore_Kol : double ; { §¬§а§Э-§У§а, §У§н§Щ§н§У§С§Ц§д§г§с §б§а§г§Э§Ц Store_Calc }
vStore_Date : longint ; { §Х§С§д§С §Я§С §Ь§а§д§а§в§е§р §г§Х§Ц§Э§С§Я §в§С§г§й§Ц§д - §Х§Э§с §У§С§Э }
{ --------------------------------------------------------------------- }

var_store : PStoreOstatki1 ;
store_bTmpSaldo1 : PTMPSaldo1 ;
store_fTmpSaldo1 : PTable ;
{store_f : text ;}

{ §Ъ§Я§Ъ§и§Ъ§С§Э§Ъ§Щ§С§и§Ъ§с }
function Store_Init : boolean ; far ;
{ §е§Х§С§Э§с§Ц§д §У§г§Ц §Щ§С§б§Ъ§г§Ъ §Ъ§Щ TmpSaldo1 §Ъ §а§й§Ъ§л§С§Ц§д §б§Ц§в§Ц§Ю§Ц§Я§н§Ц }
function Store_ReInit : boolean ; far ;
{ §У§н§Ф§в§е§Ш§С§Ц§д §У§а §У§в§Ц§Ю§Ц§Я§Я§е§р §д§С§Т§Э§Ъ§и§е TmpSaldo §У§з§а§Х§с§л§Ъ§Ц §а§г§д§С§д§Ь§Ъ §б§а §в§С§Щ§в§Ц§Щ§е }
{ §г§Ь§Э§С§Х §Ю§а§Э §б§С§в§д§Ъ§с }
{ §д§в§Ъ §б§а§г§Э§Ц§Х§Я§Ъ§з §б§С§в§С§Ю§Ц§д§в§С §б§в§Ъ §Щ§Я§С§й§Ц§Я§Ъ§Ъ TRUE §У§н§Ф§в§е§Ш§С§р§д §У TmpSaldo }
{ §У§г§Ц §Щ§С§б§Ъ§г§Ъ §Я§Ц §Щ§С§У§Ъ§г§Ъ§Ю§а §а§д §г§а§а§д§У§Ц§д§г§д§У§е§р§л§Ц§Ф§а §в§С§Щ§в§Ц§Щ§С }
{ §б§в§Ъ §Щ§Я§С§й§Ц§Я§Ъ§Ъ FALSE - §б§в§а§Ъ§Щ§У§а§Х§Ъ§д§г§с §Ф§в§е§б§б§Ъ§в§а§У§Ь§С }
{ -2 §а§Щ§Я§С§й§С§Ц§д §в§С§Т§а§д§е §г §д§С§Т§Э§Ъ§и§Ц§Ы Pick }
procedure Store_Run(dDate : longint; cMC, cPodr, cMol, cParty : comp;
TakePodr, TakeMol, TakeParty : boolean); far ;
{ §в§С§г§й§Ъ§д§н§У§С§Ц§д §б§Ц§в§Ц§Ю§Ц§Я§н§Ц Store_NalSum, Store_NalKol }
{ §б§а §г§ж§а§в§Ю§Ъ§в§а§У§С§Я§Я§а§Ы §д§С§Т§Э§Ъ§и§Ц TmpSaldo1 }
{ §Ј§а§Щ§в§С§л§С§Ц§д TRUE §Ц§г§Э§Ъ §Ь§а§Э §Ъ§Э§Ъ §г§е§Ю§Ю§С §Я§Ц §Я§а§Э§о }
{ -1 §а§Щ§Я§С§й§С§Ц§д §в§С§Т§а§д§С §г §Ї§µ§­§¦§Ј§Ѕ§® §Щ§Я§С§й§Ц§Я§Ъ§Ц§Ю }
function Store_Calc(cMC, cPodr, cMol, cParty, cVal : comp) : boolean ; far ;
{ §У§н§Щ§У§С§Ц§д §б§а§г§Э§Ц§Х§а§У§С§д§Ц§Э§о§Я§а Run §Ъ Calc }
{ §С§У§д§а§Ю§С§д§Ъ§й§Ц§г§Ь§Ъ §Щ§С§б§а§Э§Я§с§с §б§а§Э§с §д§Ъ§б§С boolean §Ъ§г§б§а§Э§о§Щ§е§Ц§Ю§н§Ц §У Run }
{ §Ј§а§Щ§в§С§л§С§Ц§д TRUE §Ц§г§Э§Ъ §Ь§а§Э §Ъ§Э§Ъ §г§е§Ю§Ю§С §Я§Ц §Я§а§Э§о }
{ §­§µ§№§є§¦ §Ї§¦ §±§°§­§ѕ§©§°§Ј§Ў§ґ§ѕ§і§Б, §д.§Ь. §б§Ц§в§Ц§б§е§д§С§Я§н §а§б§в§Ц§Х§Ц§Э§Ц§Я§Ъ§с -1 }
function Store_ReCalc(dDate : longint;
cMC, cPodr, cMol, cParty, cVal : comp) : boolean ; far ;
{ §б§Ц§в§Ц§Ь§Э§р§й§С§Ц§д §д§Ъ§б §а§г§д§С§д§Ь§а§У TRUE-§У§з§а§Х§с§л§Ъ§Ц/FALSE-§Ъ§г§з§а§Х§с§л§Ъ§Ц }
procedure Store_TypeOstatki (typ: boolean) ; far ;
{ §Щ§С§Ь§в§н§д§Ъ§Ц §д§С§Т§Э§Ъ§и, §е§Х§С§Э§Ц§Я§Ъ§Ц §а§Т§м§Ц§Ь§д§а§У }
procedure Store_Done ; far ;

{ TRUE §Ц§г§Э§Ъ §б§в§Ц§в§У§С§Э§Ъ }
function Store_WasStopped : boolean ; far ;
{ §У§а§Щ§в§С§л§С§Ц§д §г§е§Ю§Ю§е §У §Ї§Ґ§¦}
function Store_Summa : double ; far ;
{ §У§а§Щ§в§С§л§С§Ц§д §У§С§Э§р§д§Я§е§р §г§е§Ю§Ю§е §У §Т§С§Щ§а§У§а§Ы §У§С§Э§р§д§Ц }
{ !!! §У§г§Ц§Ф§Х§С §У §Т§С§Щ§а§У§а§Ы §У§С§Э§р§д§Ц }
{ §б§Ц§в§Ц§г§й§Ц§д §б§в§а§Ъ§Щ§У§а§Х§Ъ§д§г§с §Я§С §Х§С§д§е §в§С§г§й§Ц§д§С §Я§С§Э§Ъ§й§Ъ§с Store_Run(dDate... }
function Store_SummaV : double ; far ;
{§У§а§Щ§в§С§л§С§Ц§д §Ь§а§Э§Ъ§й§Ц§г§д§У§а }
function Store_Kol : double ; far ;
{ §Х§Э§с §Ю§Я§а§Ф§а§У§С§Э§р§д§Я§а§Ф§а §е§й§Ц§д§С - §У §У§С§Э§р§д§Ц §в§С§Щ§в§Ц§Щ§С }
procedure Store_ForceInVal( Value_:boolean ) ; far ;
{§Ц§г§Э§Ъ §Я§Ц §Т§н§Э§а §Х§У§Ъ§Ш§Ц§Я§Ъ§с §б§а §®§ё §б§а§г§Э§Ц §е§Ь§С§Щ. §Х§С§д§н, §д§а §ж§а§в§Ю§Ъ§в. §Щ§С§б§Ъ§г§Ъ §г§а §г§д§С§в§н§Ю§Ъ §Щ§Я§С§й§Ц§Я§Ъ§с§Ю§Ъ }
procedure Store_DoSpace( Value_:boolean ) ; far ;
{§г§й§Ъ§д§С§д§о §б§а §г§Ь§Э§С§Х§С§Ю §Ъ§Э§Ъ §У §б§в§а§Ъ§Щ§У§а§Х§г§д§У§Ц}
procedure Store_SkladProizv( Value_: word ) ; far ;
{§а§д§Ь§Э§р§й§Ъ§д§о §У§Ь§Э§р§й§Ъ§д§о §Х§Ъ§С§Ф§Я§а§г§д§Ъ§Ь§е: §Ь§а§Я§д§в§а§Э§о §Ь§е§в§г§а§У §У§С§Э§р§д }
procedure Store_DiagnosticOn ; far ;
procedure Store_DiagnosticOff ; far ;

IMPLEMENTATION

Uses
atFields ,
Messages ,
ExRegist
;

function Store_Init ;
begin
if (var_store = nil) then begin
var_store := New(PStoreOstatki1,Init) ;
if not Dictionary.WasOpenTable(Store_fTmpSaldo1,
Store_bTmpSaldo1,
coTMPSaldo1,
fmNormal,
'TMPSALDO1')
then begin
Dispose(var_store,Done) ;
Store_fTmpSaldo1 := nil ;
Store_Init := FALSE ;
Exit;
end;
end ;
vStore_WasStopped := FALSE ;
Store_Init := var_store <> nil ;

if (var_store <> nil) then begin
var_store^.DisableDiagnostic ;
vStore_Date := 0 ;
end ;
{Assign(store_F, 'protokol.$$$');}
{Rewrite(store_F);}

end;

function Store_ReInit ;
begin
Store_ReInit := FALSE ;
if (Store_fTmpSaldo1 <> nil) then
Store_ReInit := Store_fTmpSaldo1^.DeleteAll = tsOk ;
vStore_Summa := 0 ;
vStore_SummaV := 0 ;
vStore_Kol := 0 ;
end;

procedure Store_Run ;
begin
if (var_store = nil) then begin
StrMessage(''#3'§°§Т§м§Ц§Ь§д StoreOstatki1 §Я§Ц §б§в§а§Ъ§Я§Ъ§и§Ъ§С§Э§Ъ§Щ§Ъ§в§а§У§С§Я !!!',mfError+mfOkButton);
EXIT ;
end;
{ Store_fTmpSaldo1^.DeleteAll ; §Я§С§Х§а §Х§Ц§Э§С§д§о Store_ReInit }
var_store^.RunStore( dDate, cMC, cPodr, cMol, cParty,
TakePodr, TakeMol, TakeParty, FALSE );
vStore_Date := dDate ;
end;

function Store_Calc ;
var
RecCount,KeyCount : LongInt ;
cur_index : LongInt ;
reduce_nseg : byte;
begin
Store_Calc := FALSE ;

vStore_Summa := 0 ;
vStore_SummaV := 0 ;
vStore_Kol := 0 ;

if (Store_fTmpSaldo1 = nil) then begin
StrMessage(''#3'§Ї§Ц §а§д§Ь§в§н§Э§С§г§о §д§С§Т§Э§Ъ§и§С TmpSaldo1 !',mfError+mfOkButton);
EXIT ;
end;

Store_fTmpSaldo1^.GetInfo(RecCount,KeyCount,tiTmpSaldo105) ;

if (RecCount=0) then
Exit;

{ §е§г§д§С§Я§а§У§Ь§С bound-§а§У }
cur_index := -1 ;
reduce_nseg:= 0;

if (cMC = 0) then begin
if (cPodr <> 0) then begin
if (cMol <> 0) then begin
cur_index := tiTmpSaldo105; {cPodr + cMOL }
{if (cParty = 0) then} reduce_nseg:=2;{§Я§Ц§д §У §Ъ§Я§Х§Ц§Ь§г§Ц +cParty }
end
else begin { cMOL =0 }
cur_index := tiTmpSaldo109; {cPodr + cParty}
if (cParty = 0) then reduce_nseg:=1;
end
end
else { cPodr=0 }
if (cMol <> 0) then begin
cur_index := tiTmpSaldo110; {cMOL + cParty}
if (cParty = 0) then reduce_nseg:=1;
end
else begin { cMOL =0 }
cur_index := tiTmpSaldo108; {cParty}
if (cParty = 0) then cur_index := tiTmpSaldo100;{§Я§Ъ§й§Ц§Ф§а §Я§Ц §Щ§С§Х§С§Я§а}
end
end
else { cMC<>0 }
if (cPodr <> 0) then begin
if (cMol <> 0) then begin
cur_index := tiTmpSaldo101; {cMC + cPodr + cMOL + cParty}
if (cParty = 0) then reduce_nseg:=3;
end
else begin { cMOL =0 }
cur_index := tiTmpSaldo107; {cMC + cPodr + cParty}
if (cParty = 0) then reduce_nseg:=2;
end
end
else { cPodr=0 }
if (cMol <> 0) then begin
cur_index := tiTmpSaldo102; {cMC + cMOL + cParty}
if (cParty = 0) then reduce_nseg:=2;
end
else
if (cParty <> 0) then cur_index := tiTmpSaldo103 {cMC + cParty}
else cur_index := tiTmpSaldo104; {cMC}

if reduce_nseg<>0 then
Store_fTmpSaldo1^.SetReduce(cur_index,reduce_nseg,bfFullLength) ;

if (cur_index <> -1) then begin
if (cMC =-1) then Store_bTmpSaldo1^.cMC := 0
else Store_bTmpSaldo1^.cMC := cMC ;
if (cPodr =-1) then Store_bTmpSaldo1^.cPodr := 0
else Store_bTmpSaldo1^.cPodr := cPodr ;
if (cMol =-1) then Store_bTmpSaldo1^.cMol := 0
else Store_bTmpSaldo1^.cMol := cMol ;
if (cParty=-1) then Store_bTmpSaldo1^.cParty := 0
else Store_bTmpSaldo1^.cParty := cParty ;
Store_fTmpSaldo1^.SetTopBound(cur_index, rEqual);
Store_fTmpSaldo1^.SetBotBound(cur_index, rEqual);
end
else
cur_index := tiTmpSaldo104 ;

{ §г§С§Ю §б§а§Х§г§й§Ц§д §б§Ц§в§Ц§Ю§Ц§Я§Я§н§з }
if (Store_fTmpSaldo1^.GetFirst(cur_index) = tsOk) then
REPEAT
{ §ж§Ъ§Э§о§д§в §б§а §Ю§а§Э }
if (cMol=-1) then begin
if Store_bTmpSaldo1^.cMol <> 0 then CONTINUE ;
end
else
if (cMol<>0) then
if Store_bTmpSaldo1^.cMol <> cMol then CONTINUE ;

{ §ж§Ъ§Э§о§д§в §б§а §б§С§в§д§Ъ§Ъ }
if (cParty=-1) then begin
if Store_bTmpSaldo1^.cParty <> 0 then CONTINUE ;
end
else
if (cParty<>0) then
if Store_bTmpSaldo1^.cParty <> cParty then CONTINUE ;

{ §ж§Ъ§Э§о§д§в §б§а §У§С§Э§р§д§Ц }
if (cVal=-1) then begin
if Store_bTmpSaldo1^.cVal <> 0 then CONTINUE ;
end
else
if (cVal<>0) then
if Store_bTmpSaldo1^.cVal <> cVal then CONTINUE ;

if (Store_bTmpSaldo1^.Kol=0) then begin
vStore_Summa := vStore_Summa + Store_bTmpSaldo1^.Price ;
vStore_SummaV := vStore_SummaV
+ var_store^.GetBaseCurrency( Store_bTmpSaldo1^.cVal,
Store_bTmpSaldo1^.VPrice,
vStore_Date ) ;
end
else begin
vStore_Summa := vStore_Summa + Store_bTmpSaldo1^.Price * Store_bTmpSaldo1^.Kol ;
vStore_SummaV := vStore_SummaV
+ var_store^.GetBaseCurrency( Store_bTmpSaldo1^.cVal,
Store_bTmpSaldo1^.VPrice,
vStore_Date )
* Store_bTmpSaldo1^.Kol ;
end ;

vStore_Kol := vStore_Kol + Store_bTmpSaldo1^.Kol ;

UNTIL Store_fTmpSaldo1^.GetNext <> tsOk ;

Store_fTmpSaldo1^.ReSetReduce(cur_index) ;
Store_fTmpSaldo1^.ReSetTopBound(cur_index) ;
Store_fTmpSaldo1^.ReSetBotBound(cur_index) ;

if (cMC=0) then
Store_Calc := (vStore_Summa <> 0) or (vStore_SummaV <> 0)
else
Store_Calc := ( (vStore_Summa <> 0) and (vStore_Kol <> 0) ) or
( (vStore_SummaV <> 0) and (vStore_Kol <> 0) ) ;

end;

function Store_ReCalc ;

var
vPodr,vMol,vParty : boolean ;

begin
Store_ReCalc := FALSE ;
if (var_store = nil) then begin
StrMessage(''#3'§°§Т§м§Ц§Ь§д StoreOstatki1 §Я§Ц §б§в§а§Ъ§Я§Ъ§и§Ъ§С§Э§Ъ§Щ§Ъ§в§а§У§С§Я !!!',mfError+mfOkButton);
EXIT ;
end;
if (Store_fTmpSaldo1 = nil) then begin
StrMessage(''#3'§Я§Ц §а§д§Ь§в§н§д§С §д§С§Т§Э§Ъ§и§С TmpSaldo1 !!!',mfError+mfOkButton);
EXIT ;
end;

Store_fTmpSaldo1^.DeleteAll ;

if (cPodr =0) then vPodr := FALSE
else vPodr := TRUE ;
if (cMol =0) then vMol := FALSE
else vMol := TRUE ;
if (cParty=0) then vParty := FALSE
else vParty := TRUE ;

var_store^.RunStore ( dDate,
cMC, cPodr, cMol, cParty,
vPodr, vMol, vParty,
FALSE
) ;
vStore_Date := dDate ;
Store_ReCalc := Store_Calc ( cMC, cPodr, cMol, cParty, cVal ) ;
end;

procedure Store_TypeOstatki ;
begin
if (var_store = nil) then begin
StrMessage(''#3'§°§Т§м§Ц§Ь§д StoreOstatki1 §Я§Ц §б§в§а§Ъ§Я§Ъ§и§Ъ§С§Э§Ъ§Щ§Ъ§в§а§У§С§Я !!!',mfError+mfOkButton);
EXIT ;
end;
var_store^.TypeOstatki := typ ;
end;

procedure Store_Done ;
begin
if (var_store = nil) then EXIT ;
Dictionary.CloseTable(Store_fTmpSaldo1);
Dispose(var_store,Done);
var_store := nil ;
Store_fTmpSaldo1 := nil;
{close(store_f) ;}
end;

function Store_WasStopped : boolean ;
begin
Store_WasStopped := vStore_WasStopped ;
end;

function Store_Summa : double ;
begin
Store_Summa := vStore_Summa ;
end;

function Store_SummaV : double ;
begin
Store_SummaV := vStore_SummaV ;
end;

function Store_Kol : double ;
begin
Store_Kol := vStore_Kol ;
end;

procedure Store_ForceInVal(value_:boolean) ;
begin
if (var_store <> nil) then
var_store^.ForceInBase := ( not value_ );
end;

procedure Store_DoSpace(value_:boolean) ;
begin
if (var_store <> nil) then
var_store^.DoSpace := ( value_ );
end;

procedure Store_SkladProizv( Value_: word ) ;
begin
if (var_store <> nil) then
var_store^.SkPr := Value_;
end;

procedure Store_DiagnosticOn ;
begin
if (var_store <> nil) then
var_store^.EnableDiagnostic ;
end;
procedure Store_DiagnosticOff ;
begin
if (var_store <> nil) then
var_store^.DisableDiagnostic ;
end;

procedure Store_SwitchCountOnOff(value_: boolean);
begin
if (var_store <> nil) then
var_store^.CountFlag:= value_;
end;

BEGIN
var_store := nil ;
Store_fTmpSaldo1 := nil ;

{ RegisterVariable('Store_WasStopped' , @Store_WasStopped , ftBoolean); }
{ RegisterVariable('Store_Summa' , @Store_Summa , ftDouble); }
{ RegisterVariable('Store_Kol' , @Store_Kol , ftDouble); }

RegisterFunction('Store_WasStopped' , @Store_WasStopped , ftBoolean,'');
RegisterFunction('Store_Summa' , @Store_Summa , ftDouble ,'');
RegisterFunction('Store_SummaV' , @Store_SummaV , ftDouble ,'');
RegisterFunction('Store_Kol' , @Store_Kol , ftDouble ,'');

RegisterFunction('Store_Init' , @Store_Init , ftBoolean,'');
RegisterFunction('Store_ReInit' , @Store_ReInit , ftBoolean,'');
RegisterFunction('Store_Run' , @Store_Run , ftVoid,
Chr(ftDate)+
Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+
Chr(ftBoolean)+Chr(ftBoolean)+Chr(ftBoolean) ) ;
RegisterFunction('Store_Calc' , @Store_Calc , ftBoolean,
Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+Chr(ftComp) ) ;
RegisterFunction('Store_ReCalc' , @Store_ReCalc , ftBoolean,
Chr(ftDate)+
Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+Chr(ftComp)+Chr(ftComp) ) ;
RegisterFunction('Store_TypeOstatki' , @Store_TypeOstatki , ftVoid, Chr(ftBoolean));
RegisterFunction('Store_DiagnosticOn' , @Store_DiagnosticOn , ftVoid, '');
RegisterFunction('Store_DiagnosticOff', @Store_DiagnosticOff, ftVoid, '');
RegisterFunction('Store_Done' , @Store_Done , ftVoid, '');
RegisterFunction('Store_ForceInVal' , @Store_ForceInVal , ftVoid, Chr(ftBoolean));
RegisterFunction('Store_DoSpace' , @Store_DoSpace , ftVoid, Chr(ftBoolean));
RegisterFunction('Store_SkladProizv' , @Store_SkladProizv , ftVoid, Chr(ftWord));
RegisterFunction('Store_SwitchCountOnOff' , @Store_SwitchCountOnOff , ftVoid, Chr(ftBoolean));
END.

Re: F_STORE.PAS Ѓ

Добавлено: 03 апр 2003, 19:58
Nuts
----------------------------------------------------„ў
„  „‚„p„ѓ„‰„u„„ „r„‡„Ђ„t„‘„‹„u„s„Ђ/„y„ѓ„‡„Ђ„t„‘„‹„u„s„Ђ „ѓ„p„|„Ћ„t„Ђ „Ѓ„Ђ „‚„p„x„‚„u„x„p„} „ 
L----------------------------------------------------
f_saldo.pas

„r„Ќ„s„‚„…„w„p„u„„ „r „„„p„q„|„y„€„… TmpSaldo1 „„„u„{„…„‹„y„u „Ђ„ѓ„„„p„„„{„y „Ѓ„Ђ „‚„p„x„‚„u„x„p„}
„ѓ„Ђ „ѓ„r„Ђ„‚„p„‰„y„r„p„~„y„u „y „q„u„x - „r „x„p„r„y„ѓ„y„}„Ђ„ѓ„„„y „Ђ„„ „Ѓ„p„‚„p„}„u„„„‚„Ђ„r

„Ѓ„‚„y „Ѓ„Ђ„ѓ„„„‚„Ђ„u„~„y„y „Ђ„„„‰„u„„„Ђ„r - „y„~„Ђ„s„t„p „…„t„Ђ„q„~„u„u „y „q„Ќ„ѓ„„„‚„u„u „r„Ќ„s„‚„…„x„y„„„Ћ
„r„Ђ „r„‚„u„}„u„~„~„…„ђ „„„p„q„|„y„€„… „r„ѓ„u „~„p„|„y„‰„y„u „r „…„{„p„x„p„~„~„Ђ„} „‚„p„x„‚„u„x„u,
„p „x„p„„„u„} „Ѓ„Ђ„ѓ„„„‚„Ђ„y„„„Ћ „~„p „Ђ„ѓ„~„Ђ„r„p„~„y„y „Џ„„„y„‡ „t„p„~„~„Ќ„‡ „Ђ„„„‰„u„„

{ „y„~„y„€„y„p„|„y„x„p„€„y„‘ }
function Store_Init : boolean ; far ;

{ „…„t„p„|„‘„u„„ „r„ѓ„u „x„p„Ѓ„y„ѓ„y „y„x TmpSaldo1 „y „Ђ„‰„y„‹„p„u„„ „Ѓ„u„‚„u„}„u„~„~„Ќ„u }
function Store_ReInit : boolean ; far ;

{ „Q„p„ѓ„‰„u„„ „r „ѓ„{„|„p„t„ѓ„{„Ђ„} „…„‰„u„„„u(0) „y„|„y „Ѓ„‚„Ђ„y„x„r„Ђ„t„ѓ„„„r„u(1). }
{ „P„Ђ „…„}„Ђ„|„‰„p„~„y„ђ - „‚„p„ѓ„‰„u„„ „r „ѓ„{„|„p„t„ѓ„{„Ђ„} „…„‰„u„„„u }
function Store_SkaldProizv(word); far ;

{ „r„Ќ„s„‚„…„w„p„u„„ „r„Ђ „r„‚„u„}„u„~„~„…„ђ „„„p„q„|„y„€„… TmpSaldo „r„‡„Ђ„t„‘„‹„y„u „Ђ„ѓ„„„p„„„{„y „Ѓ„Ђ „‚„p„x„‚„u„x„… }
{ „ѓ„{„|„p„t „}„Ђ„| „Ѓ„p„‚„„„y„‘ }
{ „„„‚„y „Ѓ„Ђ„ѓ„|„u„t„~„y„‡ „Ѓ„p„‚„p„}„u„„„‚„p „Ѓ„‚„y „x„~„p„‰„u„~„y„y TRUE „r„Ќ„s„‚„…„w„p„ђ„„ „r TmpSaldo }
{ „r„ѓ„u „x„p„Ѓ„y„ѓ„y „~„u „x„p„r„y„ѓ„y„}„Ђ „Ђ„„ „ѓ„Ђ„Ђ„„„r„u„„„ѓ„„„r„…„ђ„‹„u„s„Ђ „‚„p„x„‚„u„x„p }
{ „Ѓ„‚„y „x„~„p„‰„u„~„y„y FALSE - „Ѓ„‚„Ђ„y„x„r„Ђ„t„y„„„ѓ„‘ „s„‚„…„Ѓ„Ѓ„y„‚„Ђ„r„{„p }
{ -1 „Ђ„x„~„p„‰„p„u„„ „‚„p„q„Ђ„„„… „ѓ „„„p„q„|„y„€„u„z Pick }
procedure Store_Run(dDate : longint; cMC, cPodr, cMol, cParty : comp;
TakePodr, TakeMol, TakeParty : boolean); far ;

{ „‚„p„ѓ„ѓ„‰„y„„„Ќ„r„p„u„„ „Ѓ„u„‚„u„}„u„~„~„Ќ„u Store_NalSum, Store_NalKol }
{ „Ѓ„Ђ „ѓ„†„Ђ„‚„}„y„‚„Ђ„r„p„~„~„Ђ„z „„„p„q„|„y„€„u TmpSaldo1 }
{ „B„Ђ„x„‚„p„‹„p„u„„ TRUE „u„ѓ„|„y „{„Ђ„| „y„|„y „ѓ„…„}„}„p „~„u „~„Ђ„|„Ћ }
{ -1 „Ђ„x„~„p„‰„p„u„„ „‚„p„q„Ђ„„„p „ѓ „N„T„L„E„B„\„M „x„~„p„‰„u„~„y„u„} }
function Store_Calc(cMC, cPodr, cMol, cParty, cVal : comp) : boolean ; far ;

{ „r„Ќ„x„Ќ„r„p„u„„ „Ѓ„Ђ„ѓ„|„u„t„Ђ„r„p„„„u„|„Ћ„~„Ђ Run „y Calc }
{ „p„r„„„Ђ„}„p„„„y„‰„u„ѓ„{„y „x„p„Ѓ„Ђ„|„~„‘„‘ „Ѓ„Ђ„|„‘ „„„y„Ѓ„p boolean „y„ѓ„Ѓ„Ђ„|„Ћ„x„…„u„}„Ќ„u „r Run }
{ „B„Ђ„x„r„‚„p„‹„p„u„„ TRUE „u„ѓ„|„y „{„Ђ„| „y„|„y „ѓ„…„}„}„p „~„u „~„Ђ„|„Ћ }
{ „L„T„X„Y„E „N„E „P„O„L„]„H„O„B„@„S„]„R„`, „„.„{. „Ѓ„u„‚„u„Ѓ„…„„„p„~„Ќ „Ђ„Ѓ„‚„u„t„u„|„u„~„y„‘ -1 }
function Store_ReCalc(dDate : longint;
cMC, cPodr, cMol, cParty, cVal : comp) : boolean ; far ;

{ „Ѓ„u„‚„u„{„|„ђ„‰„p„u„„ „„„y„Ѓ „Ђ„ѓ„„„p„„„{„Ђ„r TRUE-„r„‡„Ђ„t„‘„‹„y„u/FALSE-„y„ѓ„‡„Ђ„t„‘„‹„y„u }
procedure Store_TypeOstatki (typ: boolean) ; far ;

{ „x„p„{„‚„Ќ„„„y„u „„„p„q„|„y„€, „…„t„p„|„u„~„y„u „Ђ„q„Њ„u„{„„„Ђ„r }
procedure Store_Done ; far ;

{ TRUE „u„ѓ„|„y „Ѓ„‚„u„‚„r„p„|„y }
function Store_WasStopped : boolean ; far ;

{ „r„Ђ„x„‚„p„‹„p„u„„ „ѓ„…„}„}„… „r „N„D„E}
function Store_Summa : double ; far ;

{ „r„Ђ„x„r„‚„p„‹„p„u„„ „r„p„|„ђ„„„~„…„ђ „ѓ„…„}„}„… „r „q„p„x„Ђ„r„Ђ„z „r„p„|„ђ„„„u }
{ !!! „r„ѓ„u„s„t„p „r „q„p„x„Ђ„r„Ђ„z „r„p„|„ђ„„„u }
{ „Ѓ„u„‚„u„ѓ„‰„u„„ „Ѓ„‚„Ђ„y„x„r„Ђ„t„y„„„ѓ„‘ „~„p „t„p„„„… „‚„p„ѓ„‰„u„„„p „~„p„|„y„‰„y„‘ Store_Run(dDate... }
function Store_SummaV : double ; far ;

{ „r„Ђ„x„r„‚„p„‹„p„u„„ „{„Ђ„|„y„‰„u„ѓ„„„r„Ђ }
function Store_Kol : double ; far ;

{ „t„|„‘ „}„~„Ђ„s„Ђ-„r„p„|„ђ„„„~„Ђ„s„Ђ „…„‰„u„„„p - „r „r„p„|„ђ„„„u „‚„p„x„‚„u„x„p }
procedure Store_ForceInVal( Value_:boolean ) ; far ;

{ „u„ѓ„|„y „~„u „q„Ќ„|„Ђ „t„r„y„w„u„~„y„‘ „Ѓ„Ђ „M„W „Ѓ„Ђ„ѓ„|„u „…„{„p„x. „t„p„„„Ќ, „„„Ђ „†„Ђ„‚„}„y„‚. „x„p„Ѓ„y„ѓ„y „ѓ„Ђ „ѓ„„„p„‚„Ќ„}„y „x„~„p„‰„u„~„y„‘„}„y }
procedure Store_DoSpace( Value_:boolean ) ; far ;

{ „Ђ„„„{„|„ђ„‰„y„„„Ћ „r„{„|„ђ„‰„y„„„Ћ „t„y„p„s„~„Ђ„ѓ„„„y„{„…: „{„Ђ„~„„„‚„Ђ„|„Ћ „{„…„‚„ѓ„Ђ„r „r„p„|„ђ„„ }
procedure Store_DiagnosticOn ; far ;
procedure Store_DiagnosticOff ; far ;

Что такое скодировкой

Добавлено: 03 апр 2003, 19:58
Nuts
движок делает?

Re: Вопрос по поводу функций расчета складских остатков на о

Добавлено: 03 апр 2003, 19:59
oilcrazy
А если можно про -2 поподробней, как я понимаю, Store_Run при наличии этого параметра откуда-то берет список подразделений(МЦ,МОЛов,Партий)... Так вот откуда? Если из Pick, то с каким WListом их туда засовывать???

Может еще про

Store_TypeOstatki();
Store_DoSpace();

кто-то расскажет???

Спасибо, с уважением Александр.

Re: Вопрос по поводу функций расчета складских остатков на о

Добавлено: 03 апр 2003, 20:06
Nuts
Посмотри тут разместили:

http://galpro.itpark.ru/cgi-bin/windor. ... 12agfctabi

в разделе ARD,VIP,SQL / Расчет входящего/исходящего сальдо по разрезам

(Требуется регистрация)

Re: Вопрос по поводу функций расчета складских остатков на о

Добавлено: 03 апр 2003, 21:13
ecasoft
wList как и у стандартного выбора..те же самые ничего нового

7 - МЦ
8 - МОЛ
10 - партия
11 - Подразделение

Две остальные функции я не очень понял, если чесно..я же говорю..не использовал.

Ну вообщем они устанавливают флаги перед расчетом. Одна -тип остатков..входные исходные...Хотя я так и не понял, что имели виду...
А вторая, doSpace - это от слова ПУСТО, т.е. если не было движения, то что туда ставить..что то Типа я так понял флага, который ставиться при засчете остатков в Галактике.

И у меня такая просьба, если можно ..когда разберетесь, напишите сюда, получилось или нет и какие нюансы - и мне и всем остальным бы пригодилось. Ok? Спасибо. Я конечно могу разобраться, но просто раз Вы взялись уже..

C уважением, Игорь.

Re: Вопрос по поводу функций расчета складских остатков на о

Добавлено: 04 апр 2003, 16:46
oilcrazy
По поводу Store_TypeOstatki() оказалось все просто: входящие - без учета прихода-расхода за заданную дату, исходящие соответственно с учетом... Проверил, догадка сходится с реальностью, и почему сразу не догадался:-)))

А Store_DoSpace... в паскалевом файле где есть описание данной функции написано следующее:

"Если не было движение по МЦ после указанной даты, то формировать старое значение"... Как сие понимать я не знаю... Может все-таки кто-то поведает... буду очень признателен... потому как самому очень интересно...

Спасибо, удачи...