Все выходные ломал голову над этой задачей - точнее, ее частью.
Уточню: речь идет о доработке стандартного FR3-отчета "Форма Т12 - Страница 2". Если у сотрудника был переход в межпериод, нужно вытащить данные о счете, субсчете и аналитике из закладки "Отнесение затрат".
Прежде всего, я сделал Alter интерфейса Vedt12_1, в котором формируется поток.
Все данные в FR3-форму попадают из таблицы tmp_tabel_s2. Вот ее структура:
Код: Выделить всё
table struct tmp_tabel_s2
(
tabn : string,
fio : string,
dolgn : string,
day : array [1..31] of string,
chas : array [1..31] of double,
kolDay1 : integer,
kolDay2 : integer,
kolChas1 : double,
kolChas2 : double,
Code : array [1..4] of string,
Days : array [1..4] of integer,
pererab : double,
Night : double,
Evening : double,
VihPrazd : double,
neyavki : integer,
vihday : integer,
UseLayer2 : boolean,
Day_L2 : array [1..31] of string,
Chas_L2 : array [1..31] of double,
KolDay1_L2 : integer,
KolDay2_L2 : integer,
KolChas1_L2: double,
KolChas2_L2: double
);
Запись этой таблицы формируется внутри процедуры
, которая вызывается в цикле по таблице Perexod. В качестве параметра она получает Nrec из Perexod (для первой части месяца, до перехода, она получает 0).
Казалось бы, вот оно, счастье. Бери параметр Change и вытаскивай по нему данные. Если он 0 - то из LSTAB.CSCHETD, LSTAB.CSUBSCHETD и LSTAB.CKAUD[n], если не 0 - из PEREXOD.CSCHETD, PEREXOD.CSUBSCHETD и PEREXOD.CKAUD[n].
Но возникла проблема - куда передать, где сохранить эти данные, что бы до них мог добраться FastReport? Добавлять поля в таблицу tmp_tabel_s2 я не могу (насколько я знаю). Создал свою таблицу tmpdata, записал данные в нее(PEREXODNREC, CSCHETD, CSUBSCHETD, CKAUD[n]), но как связать эту таблицу с tmp_tabel_s2, ведь у tmp_tabel_s2 нет ни одного Nrec?
Я эту процедуру ProcessTable в своем Alter'е перегрузил и добавил в нее код для создания записей в таблице tmpdata, но при запуске отчет по обоим диапазонам (как до перехода, так и после) выдает данные "после перехода".
В общем, в контексте моей задачи - как мне связать таблицы tmp_tabel_s2 и tmpdata между собой, чтобы FastReport понимал, из какой строки брать данные?