Добавлено: 15 мар 2006, 16:08
Sytin
СФ печатается просто по данным из накладной,она не обязательно должна быть сформирована.
Код:
.LinkForm 'CrSF' prototype is tovn
.NameInList 'MAPT.СФ по накладной'
.group 'Приходные накладные'
#include summa.frn
.DEFO LANDSCAPE
.p 60
!.O1 8
.Set Filler = '-'
.var
Nom,NomFull,kol1,fixkol1,kol2,fixkol2 :Word;
KolItog, MassaBrItog, MassaNetItog, Sum1Itog, Sum2Itog,Sum3Itog :Double;
KolItogFull, MassaBrItogFull, MassaNetItogFull, Sum1ItogFull, Sum2ItogFull,Sum3ItogFull :Double;
СтНДСНац : double
СтНацБН : double
СтНацСН : double
СпСимвол, strEmpty:string
DoverOrg : string;
.endvar
#include org_decl.frn
#include mfo.frn
#include format.frn
.{
#include sum_calc.frn
.begin
end.
!Организация, выдавшая доверенность
.begin
end.
.if tovn01
.end
.if tovn02
.end
.{
!.[h Skip
.{?Internal;kol1=fixkol1 or kol2=fixkol2
.begin
end.
.}
!.]h
.begin
end.
#include CodeMC.frn
!.[f
.{?Internal;kol1=fixKol1 or kol2=fixkol2
.{?Internal;kol1<количество_SpSopr
.}
.}
!.]f
.}
.{?Internal;kol1>fixKol1 and kol2<fixkol2
.}
.{?Internal;kol1>fixKol1 and kol2<fixkol2 and kol1<количество_SpSopr
.}
.{?Internal;kol1<fixKol1 and kol1=количество_SpSopr
.}
.{ CHECKENTER TOVNUSL
.}
.{
.}
#ifdef __SKYSHOP__
#include sky.inc
#end
.}
.create view TabKpp
as select *
from katsopr,katorg
where (( накладная_нрек==katsopr.nrec and
KatSopr.cOrg == KatOrg.NREC));
.create view TabKppPoluch
as select *
from katorg
where (( Получатель==KatOrg.name));
.create view TabNakl
as select *
from katsopr,katmc,katotped,spsopr,KatParty,Exclassname,Exclassval,Exclassseg,attrval,attrnam,SpDocNal
where (( накладная_нрек/==katsopr.nrec and
KatSopr.Nrec==SpSopr.cSopr and
SpSopr.cmcusl==KatMC.nrec and
spsopr.COTPED == katotped.nrec AND
KatMC.Ced==KatEd.nrec and
SpSopr.cparty==KatParty.nrec and
Katparty.nrec==exclassval.crec and
1430==exclassval.wtable and
2==exclassval.classcode and
exclassval.classcode==exclassname.classcode and
exclassval.cclassseg==exclassseg.nrec and
KatParty.nrec==attrval.crec and
1430==attrnam.wtable and
'ГТД'==attrnam.name and
attrnam.nrec==attrval.cattrnam and
1430==attrval.wtable and
Spsopr.nrec==spdocnal.cspdoc));
.var
MCName:string;
MCed:string;
MCkol:double;
MCCena:double;
StoimBezNal:double;
Country:string;
GTD:string;
curotped:string;
.endvar
.var i,k:integer;
SumNal,SumNalTot:double;
StoimWithNal,StoimWithNalTot:double;
.endvar
.begin
var XlRes : boolean;
i:=0;k:=0;
SumNalTot:=0;
StoimWithNalTot:=0;
XlRes := True;
//XlRes :=xlOpenNewExcel(false);
//xlRes:=xlOpenWorkBook('SchetFact');
//if(xlRes=False)xlCreateExcelWithTemplate('SchetFakt',true);
xlCreateExcelWithTemplate(Номер,true);
//xlAddSheet;
//xlAddSheet;
//xlAddSheet;
XlRes := xlIsExcelValid;
XLCREATEMATRIX(176,100);
end.
.{table TabKpp
.}
.{table TabKppPoluch
.}
.begin
Xlsetfontsize(10,1,1,1,1);
xlSTWriteToMatrix(1,1,'Счет-фактура № от '+Дата);
xlSTWriteToMatrix(2,1,'Продавец: '+Поставщик);
xlSTWriteToMatrix(3,1,'Адрес: '+Поставщик_адрес);
Xlstwritetomatrix(4,1,'инн/кпп продавца '+поставщикунн+'/'+tabKpp.katorg.kodplatnds);
xlSTWriteToMatrix(5,1,'Грузоотправитель и его адрес: '+Грузоотправитель+' '+Грузоотправитель_Адрес);
xlSTWriteToMatrix(6,1,'Грузополучатель и его адрес'+Грузополучатель+' '+Грузополучатель_Адрес);
xlSTWriteToMatrix(7,1,'К платежно-расчетному документу № '+Номер+' от '+Дата);
xlSTWriteToMatrix(8,1,'Покупатель '+Получатель);
xlSTWriteToMatrix(9,1,'Адрес '+Получатель_Адрес);
xlSTWriteToMatrix(10,1,'ИНН/КПП покупателя '+ПолучательУНН+'/'+tabKppPoluch.KatOrg.KodPlatNDS);
xlSTWriteToMatrix(11,12,'валюта "рубли"');
Xlsetrowheight(1,12,1,14,12);
Xlsetrowheight(53,15,1,15,12);
xlAlignCellsEx(3,2,15,1,16,12);
xlWrapText(15,1,15,12);
Xlsetcolumnwidth(1,15,1,15,1);
Xlsetcolumnwidth(24,15,2,15,2);
xlSTWriteToMatrix(15,2,'Наименование товара (описание выполненных работ,оказанных услуг)');
xlSetColumnWidth(10,15,3,15,3);
xlSTWriteToMatrix(15,3,'Единица измерения');
xlSetColumnWidth(6,15,4,15,4);
xlSTWriteToMatrix(15,4,'Количество');
xlSetColumnWidth(8,15,5,15,5);
xlSTWriteToMatrix(15,5,'Цена(тариф)за единицу измерения');
Xlsetcolumnwidth(9,15,6,15,6);
xlSTWriteToMatrix(15,6,'Стоимость товаров(работ,услуг),всего без налога');
Xlsetcolumnwidth(7,15,7,15,7);
xlSTWriteToMatrix(15,7,'В том числе акциз');
Xlsetcolumnwidth(6,15,8,15,8);
xlSTWriteToMatrix(15,8,'Налоговая ставка');
Xlsetcolumnwidth(8,15,9,15,9);
xlSTWriteToMatrix(15,9,'Сумма налога');
xlSetColumnWidth(11,15,10,15,10);
xlSTWriteToMatrix(15,10,'Стоимость товаров(работ,услуг),всего с учетом налога');
xlSetColumnWidth(10,15,11,15,11);
xlSTWriteToMatrix(15,11,'Страна происхождения');
xlSetColumnWidth(22,15,12,15,12);
Xlstwritetomatrix(15,12,'номер грузовой таможенной деклорации');
for(k:=1;k<=11;k:=k+1)
{
Xlstwritetomatrix(16,k+1,k);
}
end.
.{table TabNakl;
.begin
xlSTWriteToMatrix (17+i,2,TabNakl.KatMC.name);
curotped:=TabNakl.KatOtpEd.name;
if(curotped='штука')curotped:='шт';
xlSTWriteToMatrix (17+i,3,curotped);
xlSTWriteToMatrix (17+i,4,TabNakl.SpSopr.kolfact);
xlSTWriteToMatrix (17+i,5,TabNakl.SpSopr.price);
xlSTWriteToMatrix (17+i,6,TabNakl.SpSopr.kolfact*TabNakl.SpSopr.price);
xlSTWriteToMatrix (17+i,8,TabNakl.SpDocNal.Nalog);
SumNal:=TabNakl.SpDocNal.Nalog/100*TabNakl.SpSopr.kolfact*TabNakl.SpSopr.price;
xlSTWriteToMatrix (17+i,9,SumNal);
SumNalTot:=SumNalTot+SumNal;
StoimWithNal:=SumNal+TabNakl.SpSopr.kolfact*TabNakl.SpSopr.price;
xlSTWriteToMatrix (17+i,10,StoimWithNal);
StoimWithNalTot:=StoimWithNalTot+StoimWithNal;
xlSTWriteToMatrix (17+i,11,TabNakl.Exclassseg.name);
Xlstwritetomatrix (17+i,12,tabnakl.attrval.vstring);
i:=i+1;
end.
.}
.begin
Xlframecells(63,2,0,0,15,2,16+i,12);
Xlsetfontsize(8,2,1,23+i,12);
xlMergeCells(17+i,2,17+i,8);
Xlframecells(63,2,0,0,17+i,2,17+i,10);
Xlframecells(63,2,0,0,17+i,9,17+i,9);
Xlstwritetomatrix (17+i,2,'Всего к оплате');
Xlstwritetomatrix (17+i,9,SumNalTot);
Xlstwritetomatrix (17+i,10,StoimWithNalTot);
Xlstwritetomatrix (19+i,1,'Руководитель организации');
Xlstwritetomatrix (21+i,1,'Индивидуальный предприниматель');
Xlstwritetomatrix (23+i,1,'ПРИМЕЧАНИЕ.Первый экземпляр-покупателю,второй продавцу');
Xlstwritetomatrix (20+i,2,'(подпись)');
Xlstwritetomatrix (22+i,2,'(подпись)');
Xlstwritetomatrix (20+i,4,'(ф.и.о)');
Xlstwritetomatrix (22+i,4,'(ф.и.о)');
Xlstwritetomatrix (19+i,6,'Главный бухгалтер');
Xlstwritetomatrix (20+i,8,'(подпись)');
Xlstwritetomatrix (20+i,10,'(ф.и.о)');
end.
.begin
//xlFrameCells(2,6,8,3,12,1,100,11);
xlWriteMatrixToExcel(1,1);
xlFreeMatrix;
xlSaveWorkBookByName(Номер);
xlKillExcel;
//crSF.fexit;
end.
.endform
Когда утилиту запускаешь для печати одной накладной,то она выдает одну СФ в Excele,а когда для печати нескольких накладных,то она выдает последнюю.Возможно надо использовать другую функцию для открытия Excel.