NALT
Добавлено: 06 окт 2010, 12:30
Добрый день ) я как всегда к вам со своими больными вопросами))
Имею код
проблема в том что на определенной позиции которая есть в базе на остатках в стандартных отчетах показывает 50
а у меня при пользовании функцией nalt показывает 0 ...????????
вот именно в этом месте
В чем я не права?
Имею код
Код: Выделить всё
const
xlColorBlack = 0;
end;
interface _gt_nalich 'Наличие по складам' (,,sci178InsPM) escclose;
Table struct tOstMcParty
(
name:string[80],
barkod:string[31],
kol:double,
price:double,
ed:string[10],
party:string[40],
proizw:string[100],
kodparty:string[21],
dbegin:date,
dend:date
)
with index
(idx1=barkod+kodparty, idx2=name);
Table struct tKatPodr
(
nrec:comp,
name:string[80]
)
with index
(idx1=nrec, idx2=name);
create view
var
date1:date
as
select * from
katmc _katmc
, tOstMcParty
, tkatpodr _katpodr
, katpodr
, katparty
, tKatPodr
, KatEd
where
((
katpodr.nrec==_katpodr.nrec
and katparty.cmc==katmc.nrec
and 'Страна происхождения'==exclassname.name
and word(1430)==exclassname.wtable
and katparty.nrec==exclassval.crec
and exclassname.classcode==exclassval.classcode//(noindex)
and exclassval.cclassseg==exclassseg.nrec
));
//Form nalich ('out\nalich.out');
screen Scr_Sclad_Select show at (,,,3)
fields date1:,noprotect;
Buttons
cmOK, default;
cmCancel;
<<
на дату .@@@@@@@@@@
<. Ok .> <. Закрыть .>
>>
end;
Panel Pnl_Sclad_Select;
show(,4,,)
browse Brw_Sclad_Select;
table katpodr;
fields
if (isValid(#_katpodr), 'v', ''):[1],skip, {FONT = { Italic = IF( isvalid(tn_katpodr),True, false)}}, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};
katpodr.name 'Наименование склада':[30],protect, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};
end;
end;
HandleEvent
cmInit:
{
date1:=cur_date;
getfirst KatPodr;
}
cmMarkUnMark:// message ('cmMarkUnMark');
{
if not isValid(#_katpodr)
{
insert in tkatpodr set
nrec:=katpodr.nrec,
name:=katpodr.name;
if getnext katpodr = tsOk {}
}
else
{
delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
if getnext katpodr = tsOk {}
}
RescanPanel (#katpodr);
}
cmSelectAll: //message ('cmSelectAll');
{
PushPos(tnkatpodr);
_loop katpodr if not isValid(#_katpodr) insert in tkatpodr set tkatpodr.nrec:=katpodr.nrec,
name:=katpodr.name;
PopPos(tnkatpodr);
RescanPanel (#katpodr);
}
cmUnSelectAll:// message ('cmUnSelectAll');
{
PushPos(tnkatpodr);
// _loop katpodr if isValid(#_katpodr) delete from _katpodr where ((katpodr.nrec==nrec));
delete all from tkatpodr;
PopPos(tnkatpodr);
RescanPanel (#katpodr);
}
cmInvertAll: //message ('cmInvertAll');
{ // Обработка клавиши "Gray *"
PushPos(tnkatpodr);
_loop katpodr
if not isValid(#_katpodr)
{
insert in tkatpodr set nrec:=katpodr.nrec,
name:=katpodr.name;
}
else
{
delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
}
PopPos(tnkatpodr);
RescanPanel (#katpodr);
};
cmOK:
{
var i,j,l,proc:longint;
var aFileName, tmp:String;
var XlRes: Boolean
var kol:double;
var mydescr:string;
mydescr := sGetTune('USER.DESCR');
if getfirst tKatPodr<>tsOK then insert in tkatpodr set
nrec:=katpodr.nrec,
name:=katpodr.name;
InitMCInfo(date1);
_loop tKatPodr {
_loop _katmc {
// message(tKatPodr.name);
// if (getfirst _katmc where (('390002'==_katmc.barkod))=tsOk) then message(_katmc.barkod + ' ' +_katmc.name );
kol:=NalT(date1,_katmc.nrec,tKatPodr.nrec,0,comp(-1));
//message(_katmc.barkod + ' ' +_katmc.name + ' ' + kol);
if kol>0 then {
if getfirst tOstMcParty where ((_katmc.barkod==tOstMcParty.barkod and '(безпартии)'==tOstMcParty.party(noindex)))<>tsOk then {
insert into tOstMcParty set tOstMcParty.name:= _katmc.name,
tOstMcParty.barkod:= _katmc.barkod,
tOstMcParty.kol:= kol,
tOstMcParty.price:= AveragePrice(),
tOstMcParty.ed:=kated.name,
tOstMcParty.party:='(безпартии)',
tOstMcParty.proizw:=_katmc.remmc;
}
else {
update current tOstMcParty set tOstMcParty.price:= (tOstMcParty.price*tOstMcParty.kol+AveragePrice()*CountMc())/(tOstMcParty.kol+CountMc()),
tOstMcParty.kol:=tOstMcParty.kol+kol;
}
}
}
_loop katparty {
if KATPARTY.NAME='Т60575*' then message(katparty.kod + ' ' + katparty.name);
_loop katmc {
TypeOstatki(false);
kol:=NalT(date1,katmc.nrec,tKatPodr.nrec,0,katparty.nrec);
if KATPARTY.NAME='Т60575*' then message(kol);
if kol>0 then
if getfirst tOstMcParty where ((katmc.barkod==tOstMcParty.barkod and katparty.kod==tOstMcParty.kodparty))<>tsOk then {
insert into tOstMcParty set tOstMcParty.name:= katmc.name,
tOstMcParty.barkod:= katmc.barkod,
tOstMcParty.kol:= kol,
tOstMcParty.price:= AveragePrice(),
tOstMcParty.ed:=kated.name,
tOs4tMcParty.party:=katparty.name,
tOstMcParty.proizw:= exclassseg.name,
tOstMcParty.kodparty:=katparty.kod,
tOstMcParty.dbegin:=katparty.danaliz,
tOstMcParty.dend:=katparty.dgodn;
if katmc.barkod='310006' and (katparty.kod='Т60575*') then message('insert' + katmc.name + ' = ' + kol);
// if katparty.name='111007' then message('insert' + katmc.name + ' = ' + kol);
}
else {
update current tOstMcParty set tOstMcParty.price:= (tOstMcParty.price*tOstMcParty.kol+AveragePrice()*CountMc())/(tOstMcParty.kol+CountMc()),
tOstMcParty.kol:=tOstMcParty.kol+kol;
// if katmc.barkod='11104' and (katparty.kod='Z53026А' or katparty.name='Z53026А') then message('update' + katmc.name + ' = ' + kol);
// if katparty.name='111007' then message('update' + katmc.name + ' = ' + kol);
}
}
}
}
//kol:=NalT(date(01,01,2005),4611781866662850119,2,0,4639861882871432142);
//message(string(kol));
DoneMcInfo();
//nalich.write(date1);
//_loop tOstMcParty
//{
// nalich.puteventbyid(feDoLoop, fcinv01) ;
// nalich.write(tOstMcParty.name);
// nalich.write(tOstMcParty.kol);
//}
//nalich.puteventbyid(feBreak, fcinv01) ;
//nalich.write(Cur_Date) ;
//nalich.Showfile;
aFileName := GetStringParameter('Files','OutputFilesDirectory',0) +'nalich.xls';
DeleteFile(aFileName);
XlRes := xlCreateExcel((aFileName), True);
if (XlRes) XlRes := xlIsExcelValid;
If (not XlRes)
{
message('Ошибка создания EXEL файла');
Exit;
}
xlCreateMatrix ( recordsintable(#tOstMcParty)+10, 11 );
tmp:='';
_loop tkatpodr tmp:=tmp+tkatpodr.name+' ';
xlSTWriteToMatrix(1,1,'Наличие материальных ценностей на складах: '+tmp+' на '+DateToStr(date1,'DD.MM.YYг.'));
xlMergeCells(1,1,1,11);
xlSetFontStyle ( xlBold, 1 , 1 , 1 , 11);
i:=3;
xlSTWriteToMatrix(i,1,'№');
xlSTWriteToMatrix(i,2,'Наменование');
xlSTWriteToMatrix(i,3,'Ном.номер');
xlSTWriteToMatrix(i,4,'Партия');
xlSTWriteToMatrix(i,5,'Кол-во');
xlSTWriteToMatrix(i,6,'Цена');
xlSTWriteToMatrix(i,7,'Сумма');
xlSTWriteToMatrix(i,8,'Дата выпуска');
xlSTWriteToMatrix(i,9,'Годен до');
xlSTWriteToMatrix(i,10,'%');
xlSTWriteToMatrix(i,11,'Производитель');
xlAlignCells(xlCenter,i,1,i,11);
xlFrameCells ( xlBorderL, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderR, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderT, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderB, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlInsideV, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlInsideH, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
getfirst tOstMcParty(idx2);
_loop tOstMcParty
{ //message(tOstMcParty.kol);
i:=i+1;
xlSTWriteToMatrix(i,1,string(i-3));
xlSTWriteToMatrix(i,2,tOstMcParty.name);
xlSTWriteToMatrix(i,3,tOstMcParty.barkod);
xlSTWriteToMatrix(i,4,tOstMcParty.party);
xlDOWriteToMatrix(i,5,tOstMcParty.kol);
if upcase(mydescr)='GUT' or upcase(mydescr)='GTB' or upcase(mydescr)='ST' then {
xlDOWriteToMatrix(i,6,tOstMcParty.price);
xlDOWriteToMatrix(i,7,tOstMcParty.price*tOstMcParty.kol);
}
if tOstMcParty.dbegin>date(1,1,1900) xlSTWriteToMatrix(i,8,DateToStr(tOstMcParty.dbegin,'DD.MM.YYг.'));
if tOstMcParty.dend>date(1,1,1900) xlSTWriteToMatrix(i,9,DateToStr(tOstMcParty.dend,'DD.MM.YYг.'));
proc:=integer((to_days(tOstMcParty.dend)-to_days(date1)) / (to_days(tOstMcParty.dend)-to_days(tOstMcParty.dbegin))*100);
if proc>0 then xlDOWriteToMatrix(i,10,proc);
xlSTWriteToMatrix(i,11,tOstMcParty.proizw);
xlFrameCells ( xlBorderL, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderR, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderT, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlBorderB, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlInsideV, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
xlFrameCells ( xlInsideH, xlThin, xlLineStyleNone, xlColorBlack, i, 1, i, 11 );
}
i:=i+1;
xlWriteMatrixToExcel ( 1, 1 );
xlFreeMatrix;
xlSetNumberFormat ( '# ##0,00', 1, 5, MaxExcelRow, 7 );
xlSetFontSize ( 8 , 1 , 1 , MaxExcelRow , MaxExcelCol ); // по всему файлу - шрифт "8"
xlAutoFit(1,1,MaxExcelRow , MaxExcelCol);
xlAlignCells(xlCenter,1,4,MaxExcelRow,4);
xlAlignCells(xlCenter,1,8,MaxExcelRow,11);
xlImportModule('c:\gal584\macros.bas');
xlRunMacro('landscope');
// XLSETCOLUMNWIDTH(word, longint, longint, longint, longint) : boolean; external ;
if upcase(mydescr)<>'GUT' and upcase(mydescr)<>'GTB' and upcase(mydescr)<>'ST' then XLSETCOLUMNWIDTH(0, 1, 6, MaxExcelRow, 7);
xlKillExcel;
delete all from tOstMcParty;
//closeinterface(cmDone);
}
cmCancel:
{
delete all from tOstMcParty;
closeinterface(cmDone);
}
end;
end.
а у меня при пользовании функцией nalt показывает 0 ...????????
вот именно в этом месте
Код: Выделить всё
if KATPARTY.NAME='Т60575*' then message(katparty.kod + ' ' + katparty.name);
_loop katmc {
TypeOstatki(false);
kol:=NalT(date1,katmc.nrec,tKatPodr.nrec,0,katparty.nrec);
if KATPARTY.NAME='Т60575*' then message(kol);