Ако човек се занимва с компютри достатъчно дълго време – рано или късно се сблъсква с някакъв вид счетоводен софтуер. Моите сблъсъци от последната една година са доста неприятни и болезнени. Реших да споделя малко опит на тази тема. Най-яркия пример за проблеми с такъв софтуер, за който се сещам е от преди няколко месеца. Имах за задача да извадя списък с имена на фирми, адреси и булстат от една счетоводна програма (няма да казвам коя, защото в никакъв случай не искам да и правя реклама). Предположих, че това трябва да е рутинна справка, която се прави така или иначе в едно счетоводство. Отидох на място, обясних какво и защо ми трябва. Срешнах страх, не разбиране и смели предположения. Предложиха ми да седна на компютъра и да “направя каквото е необходимо”. Порових 10 минути в някакъв грозен графичен интерфейс, видях няколко тъпи съобщения за грешки, няколко явни глупости вкарани в полето “булстат” и няколко прозореца за автентикация (за какво и къде, не беше ясно). Нямаше как да губя повече времето на хората и взех радикално решение – пуснах един Find и намерих в коя директория е инсталиран този софтуер. След това си включих USB flash паметта в машината и преписах всичко на нея. Бях твърдо решен да взема тези данни, и при положение, че това неможеше да стане през интерфейса, трябваше да се правя на хакер. Прибрах се вкъщи, ръгнах флаша на моята машина, преписах всичките неща в една директория и започнах да разглеждам. Най-напред разгледах .exe файла на програмата, като извадих всички стрингове от него, в опит да разбера за какво става въпрос. Нищо толкова изненадващо, очевидно стара програма, използваща една камара технологии, като се започне от някакви 20 годишни DOS неща и се стигне до най-новите Microsoft/Borland измишльотини. С две думи – пълна каша. Продължих нататък, оказа се, че в директорията на програмата има поне 20 различни версии на базата данни. Някои от тях бяха в различни поддиректорий, други бяха просто преименувани, трети бяха архивирани. Намерих най-новите файлове по дата, имах съмнения дали са те – кой знае какво време показва компютъра там. Оказа се, че те са и най-големите по размер. Вероятността това да са нещата, които ми трябват нарастваше значително. Файловете (доста на брой) завършваха с най-разнообразни окончания – .DB, .PX, YG0 и др. Нямах никаква идея какво по дяволите е това. Извадих стринговете от него, оказа се че всичко е в plain text, очевидно някаква база данни, която прилича на dBase. Веднага се сетих, че едва ли е някакъв “прост” dBase, по-скоро трябва да е нещо базирано на него. След кратко ровене, стана ясно, че това е Paradox. Добре, вече знаех какво е, по имената на файловете и полетата (които вадех с командата strings) добих представа къде, какво има. Остана да успея някакси да ги прочета тези неща. Тъй като тази технология е по-възрастна от мен, мислех си, че четенето няма да е кой знае какъв проблем. Би трябвало да има някакъв прост драйвер за тази работа. Тогава попаднах на pxtools нямах особени надежди да свърши работа, защото версията беше (и още е) 0.0.20. Но програмката проработи и с нейна помощ направих всичките файлове на CSV. Малко ме е гнус да говоря за нещата, които излезнаха от там. Най-меко казано – змий и гущери:
- Цялата кирилица в тях беше с кодировка MIK. Да същата тази DOS кодировка, която никой не ползва/поддържа от години и която никъде не е стандартизирана (освен може би в някой БДС стандарт, мой набор).
- В една част от файловете, всички букви бяха главни.
- Полетата нямаха никакъв тип, защото някъде вместо телефонен номер беше написано името на град, вместо булстат името на фирмата и т.н.
- Градовете бяха отделени в отделна таблица, като потребителите явно са можели да пишат там каквото си поискат, защото “София”, “СОФИЯ” и “СОфия” са три абсолютно различни града (имаше и други интересни комбинации, част от “Софиите” бяха написани с английско “o” примерно. Много ми е интересно как някой от въпросната фирма би направил справка за “всички фирми в София”.
Разправиите с тези бисери ми отнеха адски много време, и ако не беше помощта на няколко “роби” нямаше да се справя с кашата. В крайна сметка всичко се приведе в приличен вид минавайки през Excel, с доста ръчна работа. Накрая го вкарах в една PostgreSQL база данни, където до момента нещата са наред. Бях доволен от свършената работа и най-вече радостен, че съм се отървал от този кошмар. Реших, че просто хората са избрали възможно най-лошата програма за счетоводство писана някога. И така си живеех, щастлив и в заблуда, до преди няколко дни…
Нали ще ставам “управител” на фирма, имам си счетоводителка, и в съвсем скоро трябва да реша каква счетоводна програма ще ползвам. Търсих ли, търсих в Интернет, инсталирах, пробрах, махах, краквах и т.н. Оказа се, че всички счетоводни програми, които пробрах са на подобен хал. То не бяха InterБase, xBase, dBase, Paradox и тук там някой MSSQL за цвят. Реших, че няма да ми пука какво е отдолу, важното е да има добър интерфейс. Е да, ама няма. Шарений, глупави съобщения за грешки, безмислени потребители и пароли, дървени принтерски интерфейси, екзотични и липсващи шрифтове. Човек тъкмо реши, че може и да свърши нещо и бива подканен да си плаща с някакъв грозен прозорец или липсваща функционалност. Не се имам за “велик програмист”, но се чудя как може тези хора да пишат подобни глупости при положение, че прибират подобни суми пари. Толкова ли за всичките тези години не можаха да се научат да работят с една истинска база данни, да използват истински релационен модел, да напишат един грамотен интерфейс.
Оказва се, че ако човек се нуждае от някаква простичка счетоводна програма, най-добре да си я напише сам. На мен ми трябва нещо супер просто, което да печата фактури и да води кръчмарски сметки приход-разход. Не ми е проблем да си я напиша, проблем ми е, че не е само тя. Проблем е, че не може човек всичко сам да си прави. Трябва понякога да разчиташ и на околните (пишейки това изречение, за трети път през последното денонощие спря тока, ако нямах UPS щях да си загубя писанието). Но стига съм се оплаквал! Когато все пак седна да напиша нещо такова на Ruby on Rails, ще го пусна FREE as in FREEDOM. До тогава мога само да съчуствам на хората, които се борят със счетоводните програми. Ето няколко други неща, които вършат работа за “влизане отзад” на въпросните програми: