Показать сообщение отдельно
Старый 26.03.2004, 17:13   #2  
uk is offline
uk
Участник
 
14 / 10 (1) +
Регистрация: 06.05.2003
Адрес: Санкт-Петербург
Проблема была отложена, теперь настало время к ней вернуться, и решение найдено.
Возможно, кому-то эта информация окажется полезной.
При запуске Rep92 (Import Consolidation from File) некорректно считывается информация из текстовика, а именно: если значение больше 13 символов (включая оператор «-» и разделители разрядов), то последние символы обрезаются. Например, исходное значение
-171 778 298,96 (15 символов), в базу заливается только -171 778 298 (13 символов). В результате нарушается целостность таблицы GLEntry и операция прерывается.
Лечится это следующим образом:
Rep92
OnPostDataItem
……………………………

WHILE GLEntryFile.POS <> GLEntryFile.LEN DO BEGIN
GLEntryFile.READ(TextLine);
EntryNo := EntryNo + 1;
CASE COPYSTR(TextLine,1,4) OF
'<02>':BEGIN
TempGLEntry.INIT;
TempGLEntry."Entry No." := EntryNo;
EVALUATE(TempGLEntry."G/L Account No.",COPYSTR(TextLine,5,20));
EVALUATE(TempGLEntry."Posting Date",COPYSTR(TextLine,26,9));

//Меняем 13 на 19, поскольку всего в строке может быть 36+19=55 символов
//EVALUATE(TempGLEntry.Amount,COPYSTR(TextLine,36,13));
EVALUATE(TempGLEntry.Amount,COPYSTR(TextLine,36,19));
//

TempGLEntry.INSERT;
END;
'<03>':BEGIN
TempDimBuf."Table ID" := DATABASE::"G/L Entry";
TempDimBuf."Entry No." := TempGLEntry."Entry No.";
TempDimBuf."Dimension Code" := COPYSTR(TextLine,5,20);
TempDimBuf."Dimension Value Code" := COPYSTR(TextLine,26,20);
TempDimBuf.INSERT;
END;
END;
END;
………………………..