Необходимо разработать печатную форму накладной на отпуск в производство с итогами по странице, а также возможностью указывать комиссию. Т.к. нужны итоги по странице, то решил использовать FastReport, а т.к. комиссии в потоке нет, то создавать поток через свой интерфейс. FRM:
Код: Выделить всё
.LinkForm 'AktSpis_FR' Prototype is 'MANUFNAKL'
.NameInList 'Акт на списание из производства (FastReport)'
.{
.begin
RunInterface(AktSpisFRReport, KATSOPRNREC);
MANUFNAKL.fExit;
end.
.{
.if EXISTNAMELONG
.else
.end
.{
.}
.}
.}
.endform
Код: Выделить всё
TABLE STRUCT LOCAL KOMISSIA "Комиссия"(
DOLZ : STRING
, NAME : STRING
);
Interface AktSpisFRReport;
create view mainView
var
nrecsopr : string;
com : Commission;
kolkom : word;
as select * from KATSOPR, SPSOPR, KATMC, KOMISSIA, KATED, KATMOL
where ((
comp(nrecsopr) == KATSOPR.NREC
And KATSOPR.CMOLFROM == KATMOL.NREC
And KATSOPR.NREC == SPSOPR.CSOPR
And SPSOPR.CMCUSL == KATMC.NREC
And KATMC.CED == KATED.NAME
));
parameters
nrecsopr;
datastream MainStream
(
[NameOrg] sGetTune('MyOrg');
[NUMSOPR] KATSOPR.NSOPR;
[DATSOPR] KATSOPR.DSOPR;
[FROM_FIO_MOL] KATMOL.NAME;
table SPSOPR
(
[SOPRNREC] SPSOPR.NREC;
[NAME_TOVAR] KATMC.NAME;
[NOMENKL] KATMC.BARKOD;
[ED_IZM] KATED.NAME;
[PRICE] SPSOPR.PRICE;
[KOL_FACT] SPSOPR.KOL;
[SUMMA] SPSOPR.PRICE * SPSOPR.KOL;
);
table KOMISSIA
(
[DOLZKOM] KOMISSIA.DOLZ;
[FIOKOM] KOMISSIA.NAME;
);
)
end;
handleEvent
cmInit:
{
delete all KOMISSIA;
LoadVipInterface(com);
com.InitCommission(501);
com.ClearSelection;
com.RunWindowSelection(1);
if (com.GetSelection <> comp(0))
{
if (com.GetCommissionChairMan)
{
insert into KOMISSIA set
NAME := com.GetComponentFIO(0),
DOLZ := com.GetComponentPost(0);
}
kolkom := com.GetComponentsCount;
if (kolkom >= 1)
{
insert into KOMISSIA set
NAME := com.GetComponentFIO(1),
DOLZ := com.GetComponentPost(1);
}
if (kolkom >= 2)
{
insert into KOMISSIA set
NAME := com.GetComponentFIO(2),
DOLZ := com.GetComponentPost(2);
}
if (kolkom >= 3)
{
insert into KOMISSIA set
NAME := com.GetComponentFIO(3),
DOLZ := com.GetComponentPost(3);
}
if (kolkom >= 4)
{
insert into KOMISSIA set
NAME := com.GetComponentFIO(5),
DOLZ := com.GetComponentPost(5);
}
}
//nrecsopr := '100000001B733h';
if tsOk = GetFirst KATSOPR {};
RunFReport(MainStream, '', false);
Abort;
}
end;
end.
1. Если отчет формировать, то все красиво - предлагается выбрать комиссию, затем форму в FastReport, которая формируется. Если же попытаться отредактировать отчет в FastReport (F4), то все зависает - появляется окошко от frm-ки про формирование отчета и помогает только снятие процесса.
2. Как в самом отчете FastReport сделать, чтоб второй MasterData (с комиссией) печатался в самом конце, после всех итогов? Я итоги по странице печатаю в PageFooter, общие итоги - в ReportSummary.