Заміна російської одноце в обліку - проблема якої вже чимало років але віз і нині там, незважаючи на надування щік манагерами на айтішних тусовках і чиновників, що розпинаються по телевізору, яке у нас в країні супер-пупер айті.
Хоча і до формальної заборони 1С було багато спроб. Ще в нульові багато хто намагався ліпити щось подібне (як правило на Делфі). Тепер намагаються робити SAAS та мобільні додатки але з тим же успіхом.
Чому?
Ну наприклад, тому що безглуздо напряму тягатися з багатомільярдною корпорацією і робити прямі аналоги. Але можна спробувати запропонувати користувачеві плюси там, де у конкурента мінуси.
Отже, якою має бути програма, що конкурує з 1С?
Надам деякі міркування (моє ІМХО як кажуть в Одесі), засновані на багаторічному досвіді розробки облікових систем та пріоритеті здорового глузду та раціональних рішень, яка має бути альтернатива (саме альтернатива а не аналог).
Вільноросповсюджувана, з відкритим кодом тобто open-source. Кросплатформова, з веб-інтерфейсом. Iнакше кажучи у вигляді веб-сайту- це означає роботу в браузері тобто на будь-якому пристрої, можливість багатокористувацького доступу з інтернету. Бути вітчизняною розробкою, з самого початку заточеною на вітчизняний бізнес та вітчизняне законодавство. Мати можливість встановлення користувачем, де він захоче.
Програми типу Apex або Odoo, крім того що вимагають допилювання, потребують також розміщення у VDS або хмарі що коштує грошей та вимагає ІТ фахівця що не кожний малий бізнес може собі дозволити. SAAS сервіси зберігають бізнес дані клієнта у себе, на що не кожний користувач погодиться. Десктопні програми - вчорашній день, а мобільні програми трудомісткі в розробці і все одно вимагають сервера для бекенда якщо мова про колективну роботу.
Також програма не повинна бути дорогою у плані доопрацювання та супроводу. Зокрема, не повинна використовувати модні та просунуті (тобто “сучасні”) але невиправдано ускладнюючі проект технічні рішення, оскільки власникам бізнесу та їх користувачам, зазвичай людям далеким від ІТ, немає діла до того якою мовою чи фреймворком написаний продукт. Їм тре їхати, а не шашечки.
Прикладом реалізації даного підходу є облікова система Zippy CRM (https://zippy.com.ua/) .
Програма пропонує спектр функціональності, що закриває більшість потреб малого і навіть середнього бізнесу :
складський облік
торгівля, послуги
облік в кафе та ресторанах
ПРРО
виробництво, розрахунок зарплати
різноманітні інтеграції (опенкарт, нова пошта, сервіси смс розсилок тощо)
вбудований невеличкий онлайн магазин
модулі органайзера, проектів та завдань, облік робочого часу
опціонально - облік ПДВ, облік акцизних марок, бухгалтерський облік
можливість підключення торгового обладнання, принтерів чеків та етикеток
багатокористувацька робота з розділенням доступу по ролях
Незважаючи на солідний список, проект дотримується згаданих принципів - простота та дешевизна у доопрацюванні та супроводі - необхідних умов щоб проект міг залишатися безкоштовним. Також ідеологія проекту враховує, що нині залізо коштує набагато менше оплати розробника, а значить простіше прикупити проца або пам'яті, ніж возитися з прискоренням програми на пару відсотків. Це до тих, хто зазирнувши в код скаже - тут можна написати один рядок замість двох. Також слід уникати перетворення програми на монстра, як перетворилися нинішні версії 1С в порівнянні зі старою доброю 7.7 .
Технологічний стек.
PHP/Mysql. Тобто класичний сайт (хоча є і сторінки зроблені на JS там, де це має сенс). Очевидна перевага - додаток може бути встановлений на звичайний дешевий віртуальний хостинг, що не вимагає адміністрування. Для користувачів, далеких від ІТ, передбачена WAMP збірка для встановлення на ПК. Крім того PHP, на якому реалізована бізнес-логіка, знайомий більшості веб-розробників і є мовою з низьким рівнем входу. Ядро системи надає готові високорівневі об'єкти роботи з бізнес-сутностями - документами, контрагентами, ТМЦ тощо.
Також дане рішення дозволяє вносити зміни і додавати нові фічі (наприклад звіти або документи) з будь-якої перезбірки або компіляції - потрібно просто оновити/доповнити відповідні файли в папці програми (тобто в папці сайту)
Друковані форми.
Шаблони форм документів, чеків, звітів - звичайний HTML із нескладним шаблонізатором. Тобто не потрібно жодних побудовувачів лише текстовий редактор. Крім того, та ж сама друкована HTML форма легко експортується в PDF або Excel відповідними PHP бібліотеками.
Дизайн.
Готова адмінка на Twitter Bootstrap, що забезпечує роботу на будь-якому екрані. Також структурно інтерфейс проекту виконано так, щоб користувачі 1С могли перейти з мінімальними труднощами - тобто використовується схожа термінологія бізнес-сутностей та бізнес-логіки. Тобто документи, журнали, довідники, проводки і звичний первинний документообіг (зазвичай у більшості CRM - хто в ліс хто по дрова)
Сховище даних.
Звичайна реляційна БД з транзакціями. Можна зазначити леякі особливості збкрігання.
Зберігання документів -одна із стандартних проблем при розробці облікових систем, позаяк документи різних типів мають різну структуру. Спектр рішень - від документоорієнтованих БД (прощавай швидкодія та віртуальний хостинг) до створення окремих таблиць для кожного типу документа та окремих полів для кожного атрибуту (а ще є табличні частини) що ускладнює розробку і що суттево - ускладнює оперативне оновлення програми у сотень або тисяч користувачів, що вже використовують.
Zippy CRM зберігає всі документи в одній таблиці. Поля, що використовуються для відбору та сортування (зазвичай це спільні для всіх документів поля - номер, дата, статус…) зберігаються окремими полями таблиці БД. Інші упаковуються в XML Використання XML, що має іменовані теги, дозволяє при окремй необхідності виконати пошук за атрибутами з допомогою LIKE або ХPATH. Не найоптимальніший спосіб (фактично це - ленормалізація даних) але вирішує ряд проблем. По-перше, додавання нового атрибуту до шапки документа не потребує зміни структури БД. Достатньо просто оновити файли, що в випадку PHP - просте копіювання. По-друге - вирішує проблему так званих “історичних” (в термінології 1С) атрибутів. Виконаний документ не повинен змінитись тому, що змінили назву ТМЦ у довіднику номенклатури. Об'єкт ТМЦ зберігається у документітаким як був на момент запису.
За таким же принципом зберігаються і складні бізнес-об'єкти такі як ТМЦ або контрагенти - другорядні атрибути упаковуються в XML і зберігаються в текстовому блобі.
Зберігання проводок по складу касі тощо. Zippy CRM не зберігає проміжні залишки - це потребувало б постійних перерахунків залишків і ускладнило б вибірки залишків і оборотів на довільний період. Натомість - повний перерахунок при зприті даних. Ну тобто отримання кількості чи суми проводиться перерахунком по всій таблиці. Виглядає не дуже але, по-перше SUM по числовому полю не особлива проблема для сучасного сервера БД, по-друге це дозволяє скасовувати і перепровести документи (у тому числі задньою і передньою датою) без перерахунку залишків на кінець періоду тобто під руками завжди актуальні та несуперечливі дані. Знову ж таки нагадую - зарплата розробника набагато вища за ціну заліза. Деякі користувачі працюють із системою вже по кілька років і все що знадобилося зробити коли система почала підгальмовувати - просто перейти на трохи дорожчий план на хостинге.
Доступ до Бд здійснюється фреймворком на основі проекту ADODB. Така собі комбінація ORM та Active Record. Особливість - не потрібний мапінг полів об'єкта PHP та полів відповідної таблиці БД. Потрібно тільки щоб збігалися їхні назви. Далі фреймворк сам розбереться з типами та автоматичною генерацією SQL.
Оновлення системи
При виході нової версії користувач просто натискає кнопку Оновити і файли програми (нагадую це PHP і HTML) просто перезаписуются. Втім, навіть у випадку мажорних версій, виконання SQL скриптів або оновлення папки vendor виконується автоматично.
Проект розташований на гітхабі з MIT ліцензією тобто будь хто може вносити зміни у проект, зробити форк як завгодно доробляти та навіть заробляти на написанні розширень та впровадженні.
Це позбавляє користувачів від побоювань, що розробники кудись зникнуть. Або просто перестануть реагувати на фідбеки як це буває в платних системах коли охоче беруть гроші користувача але з великою неохотою реагують на фідбеки про помилки або пропозиції доопрацювання, особливо коли через невиправдано ускладнені рішення (наприклад з-за бажання розробників погратись у “круті” технології) супровід виходить досить дорогим.
Тож ще одна особливість проекту Zippy CRM – розробка будується на фідбеках користувачів. Це дозволяє зменшити трудомісткість і вартість тестування (звісно потрібно бути на зв'язку та оперативно виправляти недоліки) а також дозволяє розвиватися проекту в напрямі, що відповідає запитам реальних користувачів (а не по фантазіях манагерів) і при цьому залишатися вільно-розповсюджуваним.
Сподіваюся такі міркування та практичний приклад допоможуть тим, хто теж мріє реалізувати власного "вбивцю" 1С.