100% согласен, просто ошибка возникла изначально не в том виде в котором я показал исходник вначале. Итерация всего одна была.Одно очевидно: инициализировать табель нужно до начала цикла обхода лицевых счетов, а не на каждой его итерации.
Вы правы. Не мог подумать что это из-за writemessagelog но вот код, окторый 100% у меня падает, а если коментирую строчки с writemessagelog то все гуд. Чорт, столько времени грешил на writemessagelog страшно подумать, решение было перед носом!!! Штоб я еще раз стал пользоваться writemessagelog - НИЗАЧТОНасчет того, что причина падения LoadWorkingTable - вызов ее в функции - это домыслы.

Код: Выделить всё
interface f1_Pererabotka 'Переработки' (,hcNoContext,) escclose, gray;
show at (,,65,12);
create view vDB;
screen OptionsScreen;
buttons
cmOk, default,, 'Сформировать отчет',, sci1Esc;
cmClose,,, 'Закрыть окно',, sci1Esc;
<<
<.Сформировать.> <. Отмена .>
>>
end; // screen OptionsScreen
//---------------------------------------------------------------------------------------------------------//
function GetUpperHours(ds, de: date; Chel : comp): double;
{
GetUpperHours := 0;
WriteMessageLog(string(ds) + ' ' + string(de) + ' ' + string(chel));
if InitWorkingTable
{
writemessagelog('InitWorkingTable');
// Message('Табель загрузился', mfInformation or OkButton);
if LoadWorkingTable(chel, 9, 2009) = 0
{
writemessagelog('LoadWorkingTable');
WT_AddDayRangeFilter(1, 31)
if WT_LoadMonthlyAbsences = 0
{
writemessagelog('WT_LoadMonthlyAbsences');
}
}
else
writemessagelog('Табель не загрузился');
// Message('Табель не загрузился', mfError or OkButton);
DoneWorkingTable;
}
}
handleevent
cmOk:
{
if OpenMessageLog('D:\tmp\1\vasya.log', mfLog2Screen + mfBatch) = false {}
GetUpperHours(Date(1, 9, 2009), Date(30, 9, 2009), 85568392920071951);
CloseMessageLog;
CloseInterface(cmDone);
Exit;
}
end
end.