28 авг. 2009 г.

BS-Client? Скажем нет!

Новая программа банк-клиент, используемая БелАПБ, не перестает радовать своими сообщениями. Казалось бы пустяк: в текстовом файле с платежкой дата указана не в том формате. Нормальная программа так и сказала бы: в файле таком-то в строке такой-то дата указана в неправильном формате. И, возможно, даже подсказала бы верный формат: yyyy-mm-dd. Но, BS-Client идет дальше, значительно дальше:

EBLLError : Error in external call in module 'ACBAPBIMP.BLL' at line 376:
EVDBEngineError:Invalid data size 213471868, must be 4
CallStack:
Line 0376. Module ACBAPBIMP.BLL
Line 1136. Module ACBAPBIMP.BLL
Line 1590. Module ACBAPBIMP.BLL; LibraryName:acbapbimp.bll;
FunctionName:impbapb_crystal; SchemeName: LinkBS; SchemeType:
stSimple(0); OperationName: ImportBAPB; OperationType: otSimpleBLL(0)
-------------------------------------------
Module  :
Thread : 00000B58 (LinkBS.ImportBAPB)
Instance: 3402
PID/Comp/User: 3956/BUH2/Администратор

Формат текстового файла экспорта этой программы заслуживает отдельного упоминания. XML, JSON, YAML, INI — это всё для лузеров. Мысль конечно прослеживается: сделаем простой формат, текстовый файл, где одна строка содержит одно поле. По первому символу в строке будем узнавать, что за поле. Для обозначения полей будем использовать латинские символы и цифры. Только потом оказалось, что полей больше чем доступных символов. Вместо очевидного решения использовать два первых символа, для новых полей начали использовать коомбинацию из ^ и символа латинского алфавита или цифры. Без документации под рукой не упомнишь что есть что. Например, просто 6 — это УНН плательщика, а ^6 — это уже Тип конверсии. Да еще повсюду, какие-то магические ограничения: "ширина строк не более 113 символов" — цитата из спецификации. О форматах дат и чисел по большей части надо догадываться самому. Например, в документации по рублевому импорту поле "Сумма платежа" описано как "20,2 (разделитель – ‘.’или’,’)". Оно же для валютной платежки — "Сумма перевода (дробная часть ч/з «,», 2 знака)".

Комментариев нет:

Отправить комментарий