Логическая таблица такая:
Код: Выделить всё
create view
var
cPodr : comp;
bDate : date;
eDate : date;
WTLF : WorkingTableListFunctions;
avSum : double;
motherVac : integer;
as select *
from
StaffStruct,
ExtCatLinks,
Tables
where ((
11 == ExtCatLinks.ObjType
and 1 == ExtCatLinks.ModType
and cPodr == ExtCatLinks.ExtCat
and ExtCatLinks.StaffCat == StaffStruct.Department
and StaffStruct.nRec == Appointments.StaffStr
))
and (
(StaffStruct.dClose = date(0,0,0)
or StaffStruct.dClose >= eDate)
and StaffStruct.dInput <= eDate
and (Appointments.DismissDate = date(0,0,0)
or eDate <= Appointments.DismissDate)
)
;
Добавлю то, что писал на Тюмбитовском форуме, может, это важно:
Используется такой код:
Код: Выделить всё
function collect(var workingTable: Type$LsTab; subject: comp; periodBeginning: date): integer;
{
clearBuffer(#Tables);
Tables.cLsch := workingTable.cLschet;
Tables.Month := workingTable.MesN;
Tables.Year := workingTable.YearN;
insert current Tables;
}
procedure proc;
{
delete all Tables;
mCount := bDate;
while (mCount <= eDate) {
bindEvent(collect, WTLF.collectTable);
WTLF.refreshTableListExt(0, cPodr, mCount, validator);
unBindEvent(collect, WTLF.collectTable);
mCount := add_months(mCount, 1);
}
_loop Tables {
//....
}
}
WTLF - это штатный объект типа WorkingTableListFunctions, который в refreshTableListExt просматривает табеля по подразделению cPodr и для каждого табеля вызывает мою функцию collect. Для одних подразделений всё проходит верно, но по некоторым cPodr не работает _loop. Как я выяснил, из-за того, что в Tables нет записей. Смотрю отладчиком - все строки функции collect отрабатывают верно, insert возвращает 0. Поэтому я попробовал getFirst (как в первом примере) - он возвращает 4.