Что такое lsFusion: взгляд со стороны

от автора

Эта статья – небольшой обзор продуктов компании lsFusion и того предлагает пользователям компания lsFusion. Взялся я за него после того, как в статьях «Почему я не люблю 1С» и «Стоит ли идти в 1С программисты в 2025 году» упомянул эту систему как одну из возможных альтернатив 1С. На тот момент я только читал о том, что есть такая система как lsFusion на Хабре, из любопытства заходил на их сайт и просматривал в поиске дополнительную информацию. Тогда я ее упомянул только как «одну из систем» в перечне альтернатив, так как сами они явно позиционируют себя как учетная система.

Далее уже в комментариях я увидел большой тред, где сравнивали 1С и lsFusion. Мне стал интересен автор комментариев, оказалось, что это работник lsFusion. Я с ним связался, чтобы самому лучше понять, что же это за программный продукт. Получил ответы на многие собственные вопросы, изучил ближе саму систему. И теперь хочу поделиться тем, что узнал, чтобы помочь людям, которые находятся в поиске альтернативы 1С.

Начало треда

Начало треда

Не стоит относиться к этому материалу, как к экспертному описанию от специалиста по lsFusion. Скорее, это взгляд со стороны, так сказать, информация не изнутри компании-разработчика, а именно  со стороны. К слову, моя работа часто заключается и в таких вот исследованиях тоже.

Хотел бы сказать спасибо компании разработчику за сотрудничество и лично пользователю @CrushBy за предоставление необходимой информации .

Коротко про lsFusion ERP

Первое, что я хочу сказать, если вы ищете именно ERP-систему, далее можете даже не читать. lsFusion ERP вам не подойдет, так как там вообще нет производства, это система для управления розничными продажами.

Я и сам был удивлен, даже спросил, а почему такое название? В ответ узнал, что так уж исторически сложилось. Но для организации производства она действительно не подходит. Зачем они так сделали, вопрос остается открытым.

Кроме того, компания имеет три сайта, посвященные разным продуктам линейки lsFusion. И в них очень легко запутаться.

Все они выполнены в едином стиле, более того, явно на одном шаблоне дизайна. А потому цвета, шрифты, расположение элементов на разных сайтах совпадает.

С одной стороны, это единый корпоративный стиль, брендбук и т.д. И я с этим полностью согласен. С другой, даже в рамках корпоративного стиля всегда можно сделать какие-то яркие визуальные отличия, а на этих сайтах они отсутствуют. Потому нужно внимательно читать, о каком именно продукте идет речь. Не запутайтесь.

Кстати, также интересно, но не очень понятно. При попытке сбора информации о системе поиск выдает название lsFusion. Такое название отображается даже при отображении официального сайта в поисковой выдаче, а также в их URL. А после перехода на сайт в «шапке» почему-то фигурирует надпись LSFusion. По некоторым данным, это старое название, и после ребрендинга компания не озаботилась логотипом. Впрочем, на этот вопрос лучше смогут ответить знатоки из числа сотрудников компании.

Что представляет собой lsFusion

В целом, lsFusion – это, прежде всего, система, написанная на Java. Система делится на две основные части:

  1. Среда исполнения (с использованием LSFL*).

  2. Среда разработки.

*LSFL – это мое сокращения (для простоты) названия языка  на котором пишут решения lsFusion. Если традиционно уже сравнивать с 1С, то это и есть внутренний язык, аналогичный «языку 1С», на котором пишут внутри конфигуратора lsFusion. Т.е. если у нас есть 1С программисты, то здесь нужны специалисты отдельного профиля, назовем их lsFusion программисты.

Важно отметить что возможность использования плагина для  IntelliJ IDEA для работы с LSFusion.

Язык программирования LSFL

Сам язык программирования LSFL(LS Fusion Language) – собственная разработка команды lsFusion. Но написано ядро на Java, а потому система на Java и запускается. Пример кода вы можете увидеть снизу.

Попробовать код что называется «в действии» вы можете в песочнице.

Пример кода
// logic description: https://docs.lsfusion.org/Materials_management/  REQUIRE Icon;  CLASS Stock 'Warehouse';  name 'Name' = DATA STRING[100] (Stock) IN base; address 'Address' = DATA STRING[150] (Stock) IN base;  FORM stocks 'Warehouses' OBJECTS s = Stock PROPERTIES(s) name, address, NEW, DELETE ;   CLASS Item 'Product';  name 'Name' = DATA STRING[100](Item) IN base; barcode 'Barcode' = DATA BPSTRING[13](Item) IN base;  salePrice 'Wholesale price' = DATA NUMERIC[17,2](Item) IN base;  FORM items 'Products' OBJECTS i = Item PROPERTIES(i) name, barcode, salePrice, NEW, DELETE ;   CLASS LegalEntity 'Organization';  name 'Name' = DATA STRING[100](LegalEntity) IN base; address 'Address' = DATA STRING[150](LegalEntity) IN base; inn 'TIN' = DATA BPSTRING[9](LegalEntity) IN base;  legalEntityINN = GROUP AGGR LegalEntity legalEntity BY inn(legalEntity);  FORM legalEntities 'Organization' OBJECTS l = LegalEntity PROPERTIES(l) name, inn, address, NEW, DELETE ;   CLASS Shipment 'Shipment'; CLASS ShipmentDetail 'Shipment line';  shipment 'Line document' = DATA Shipment (ShipmentDetail) NONULL DELETE; index 'Line number' (ShipmentDetail d) =         PARTITION SUM 1 IF d IS ShipmentDetail         ORDER d BY shipment(d);  number 'Shipment number' = DATA BPSTRING[10] (Shipment); date 'Shipment date' = DATA DATE (Shipment);  customer 'Customer' = DATA LegalEntity (Shipment); nameCustomer 'Customer name' (Shipment s) = name(customer(s));  stock 'Warehouse' = DATA Stock(Shipment); nameStock 'Warehouse name' (Shipment s) = name(stock(s));  item 'Product' = DATA Item (ShipmentDetail); nameItem 'Product name' (ShipmentDetail d) = name(item(d));  quantity 'Quantity' = DATA NUMERIC[16,4](ShipmentDetail); price 'Selling price' = DATA NUMERIC[17,2](ShipmentDetail); sum 'Sale amount' (ShipmentDetail d) = quantity(d) * price(d);  price(ShipmentDetail d) <- salePrice(item(d)) WHEN CHANGED(item(d));  FORM shipment 'Shipment' OBJECTS s = Shipment PANEL PROPERTIES(s) number, date, nameCustomer, nameStock  OBJECTS d = ShipmentDetail PROPERTIES(d) nameItem, quantity, price, sum READONLY, NEW, DELETE GRID FILTERS shipment(d) = s  EDIT Shipment OBJECT s ;  FORM shipments 'Shipments' OBJECTS s = Shipment PROPERTIES(s) READONLY number, date, nameCustomer, nameStock PROPERTIES(s) NEWSESSION NEW, EDIT, DELETE   OBJECTS d = ShipmentDetail PROPERTIES(d) READONLY nameItem, quantity, price, sum FILTERS shipment(d) = s ;   CLASS Receipt 'Receipt'; CLASS ReceiptDetail 'Receipt line';  receipt 'Line document' = DATA Receipt (ReceiptDetail) NONULL DELETE;  index 'Line number' (ReceiptDetail d) =         PARTITION SUM 1 IF d IS ReceiptDetail         ORDER d BY receipt(d);  number 'Receipt number' = DATA BPSTRING[10] (Receipt); date 'Receipt date' = DATA DATE (Receipt);  supplier 'Supplier' = DATA LegalEntity (Receipt); nameSupplier 'Supplier name' (Receipt r) = name(supplier(r));  stock 'Warehouse' = DATA Stock (Receipt); nameStock 'Warehouse name' (Receipt r) = name(stock(r));  item 'Product' = DATA Item (ReceiptDetail); nameItem 'Product name' (ReceiptDetail d) = name(item(d));  quantity 'Quantity' = DATA NUMERIC[16,4] (ReceiptDetail); price 'Supplier price' = DATA NUMERIC[17,2] (ReceiptDetail); sum 'Supplier amount' (ReceiptDetail d) = quantity(d) * price(d);  FORM receipt 'Receipt' OBJECTS r = Receipt PANEL PROPERTIES(r) number, date, nameSupplier, nameStock  OBJECTS d = ReceiptDetail PROPERTIES(d) index, nameItem, quantity, price, sum READONLY, NEW, DELETE GRID FILTERS receipt(d) = r  EDIT Receipt OBJECT r ;  FORM receipts 'Receipts' OBJECTS r = Receipt PROPERTIES(r) READONLY number, date, nameSupplier, nameStock PROPERTIES(r) NEWSESSION NEW, EDIT, DELETE   OBJECTS d = ReceiptDetail PROPERTIES(d) READONLY index, nameItem, quantity, price, sum FILTERS receipt(d) = r ;   receivedQuantity 'Total income' = GROUP SUM quantity(ReceiptDetail d) BY item(d), stock(receipt(d)); shippedQuantity 'Total expenses' = GROUP SUM quantity(ShipmentDetail d) BY item(d), stock(shipment(d)); currentBalance 'Current balance' (Item i, Stock s) = receivedQuantity (i, s) (-) shippedQuantity (i, s);  CONSTRAINT currentBalance(Item i, Stock s) < 0 MESSAGE 'The balance of the product cannot be negative';  FORM currentBalanceItemStock 'Current balances'     OBJECTS si = (s = Stock, i = Item)     PROPERTIES READONLY name(i), barcode(i), name(s), currentBalance(i, s)     FILTERS currentBalance(i, s) ;   NAVIGATOR {     NEW FOLDER masterData 'Directories' FIRST WINDOW toolbar {         NEW items;         NEW stocks;         NEW legalEntities;     }     NEW FOLDER documents 'Documents' AFTER masterData WINDOW toolbar {         NEW receipts;         NEW shipments;     }     NEW currentBalanceItemStock AFTER documents; } 

Основная парадигма этого языка может быть описана как «Everything is code».

В LSFL нет «традиционного» графического интерфейса пользователя (GUI) в привычном для нас понимании. Т.е. вся логика приложения, начиная от структуры таблиц до визуального интерфейса, задается в виде файлов на языке LSFL.

Больше о самой структуре, компиляции файлов, вы сможете узнать из документации. Здесь я подробно на этом останавливаться не буду. Скажу только, что расширения этих файлов должны быть «LSF». Таким образом, прямо в коде описываются интерфейсы, а также логика работы системы. 

Тезисно об особенностях LSFL:

  • Про синтаксис ничего говорить не буду, тут дело во многом вкуса. Но мне нравится их подход, который можно назвать «Everything as Code»

  • Для подключения доступны только базы данных на PostgreSQL. 

  • Система имеет готовый API. Таким образом, если вам нужно подключить сайт или провести интеграцию с какой-то другой системой, вы сумеете это сделать. Для интеграции используется веб сервер Tomcat, который позволяет отправлять, получать и записывать данные через HTTP (методы GET и POST)

Платформа предоставляет возможность добавить методы для создания своих API запросов по HTTP.

Среда исполнения и клиентская архитектура

До версии 6 существовала собственная среда исполнения и, соответственно, локальный клиент, который можно было установить на компьютер. Клиент подключался к базе данных, а также отображал «картинку», т.е. интерфейс обращался к серверу приложений (как и служба Tomcat, только напрямую), а сервер приложения уже к базе данных.

lsFusion запускается прямо через браузер без установки специализированного клиента. Разработчики настойчиво пропагандируют именно такой подход.  Это означает, что вы открываете браузер, подключаетесь к серверу, и через него работаете с системой. К тому же как заявлено разработчиком, теперь поддерживается PWA.

Для работы системы требуется запустить сервер, который работает на платформе Tomcat – популярном Java-сервере для веб-приложений. Вы запускаете сервер, и он обеспечивает доступ к функционалу системы через HTTP. Таким образом, необходимость в локальном клиенте отпадает в принципе.

Так как система написана на Java, здесь практикуется подход одностраничного приложения (Single Window Application).Вы работаете в одном окне, и вся логика расположена внутри этого окна. Получается обычное приложение.

Хорошо это или плохо? Я считаю, что хорошо. Какой смысл писать и устанавливать какие-то специальные клиенты, которые могут работать лучше или хуже, имеют какие-то свои системные требования, нуждаются в обновлениях, если можно работать просто в браузере. Браузер точно будет работать хорошо. И к такому подходу у меня лично вопросов нет.

Сам интерфейс реализован с использованием последней версии Bootstrap (на момент написания статьи это Bootstrap 5.3.3) Таким образом, вы собираете интерфейс на Bootstrap. 

Пример интерфейса

Пример интерфейса

Решения на базе LS Fusion

Теперь, когда мы разобрались с тем, как запускается lsFusion, стоит разобраться, что же вы сможете на ней запускать? Перейдем к существующим решениям на базе lsFusion.

На самом деле, подобных решений существует множество. Большинство из них созданы, чаще всего, для себя (компаний в которых они работают). Посмотреть их нет никакой возможности, так как специальные демоверсии такие энтузиасты редко создают, а к рабочим внутренним данным никто постороннего человека не пустит. К тому же так как платформа не  требует активации каких либо лицензий, то и возможности узнать сколько компаний используют платформу тоже нет.

Потому рассмотрим основные три решения, созданные на платформе lsFusion:

  1. MyCompany

Учетная система, в которой вы можете фиксировать основные операции, торговые и некоторые другие. Подробно все возможности я описывать здесь не буду, их вы сможете изучить при желании самостоятельно.

Самое главное – система полностью бесплатна, а также имеет открытый код под лицензией Apache 2.0 , что позволяет вносить доработки. Таким образом, вы можете в рамках этой системы использовать стандартные торговые функции. А при желании удалить любую из них или доработать систему так, как вам это необходимо. 

Вы можете заказать услуги по доработке и сопровождению непосредственно у компании разработчика.На сайте об этом прямо написано, и насколько я понял, это основная статья доходов разработчика.

  1. WMS

Это решение для управления складом. Система пока еще находится на стадии бета-тестирования. Потому особо рассказать о ней мне нечего. Думаю, что скоро выйдет уже финальный релиз, и разработчики сами расскажут о системе подробнее, тем более, что на официальном сайте есть свой блог, где описываются все существующие продукты.

  1. lsFusion ERP

Об этом решении я уже писал выше. Напомню, что система не предназначена для организации производства, вопреки названию. Это, скорее, учетная система для розничного предприятия. 

Важно, что это коммерческое решение, т.е. в отличие от остальных систем, распространяемых под открытыми лицензиями, эта система платная. Конечно, вы можете ее скачать и пользоваться на своем компьютере, так как сам программный продукт есть в открытом доступе и доступен для скачивания. Но для полноценной работы в lsFusion ERP необходимо будет приобрести коммерческую лицензию.

Кроме того, в официальном перечне решений на сайте разработчиков, рекламируются партнерские проекты:

  • MITE — созданное на платформе lsFusion. “облачное” решение-конструктор, предназначенное для организации промышленного интернета вещей. Продукт постоянно отслеживает работу датчиков iOT, уведомляет о сбоях или изменениях в работе.

  • barSetting — еще одно “облачное” решение от партнеров,  ориентированное на работу предприятий сферы общественного питания. Поддерживает складской учет, организацию пищевого производства, контроль рецептуры, автоматический прием заказов, контроль обслуживания и т.д.

  • MyBalance — бесплатный набор форм для организации работы плановых отделов предприятий. Помогут дополнить или заменить работу с электронными таблицами. Чаще всего используются как инструменты автоматизации работы с Google-таблицами, дополняя их готовыми формами с дальнейшим автоматическим распределением данных по таблицам.

Как видите, перечень готовых программных решений на сегодняшний день не впечатляет. И предназначается преимущественно для организации отдельных аспектов работы малого и среднего бизнеса (исключение — коммерческий продукт lsFusion ERP, где можно говорить о полноценной организации работы торговой компании.

Итак, при использовании lsFusion у вас есть выбор:

  1. Создавать собственное решение.

  2. Покупать готовый продукт lsFusion ERP (подходит для торговых сетей).

  3. Выбрать готовое бесплатное решение MyCompany(подойдет для небольших торговых компаний).

Тем не менее потенциал у проекта имеется. Продукты с открытым программным кодом я в целом приветствую. Также мне в целом понравилось, что разработчики предпочитают не плодить лишние сущности — локальные клиенты с закрытым кодом, мобильные аналогичные приложения, как это делает та же компания 1С. Это избавляет пользователей от вечных проблем с обновлениями и повышает надежность работы системы.

В целом, я изучил немного количество скачиваний, отзывы и описания разных решений на lsFusion. Мой вывод: если эти решения используют, значит, они имеют право на существование. А как эта информационная система будет развиваться, будущее покажет.

Мобильный клиент

Как такового, официального отдельного мобильного приложения у lsFusion не существует. на практике они активно используют мобильные интерфейсы. Более того, как мне рассказали, многие процессы, например, в той же системе управления складом LSF WMS, выполняются именно на мобильных устройствах, часто с использованием сканеров.

Реализуется это по принципу уже всем привычного адаптивного дизайна. Когда вы открываете страницу, платформа определяет, заходите вы с компьютера или мобильного устройства, ориентируясь, в первую очередь, на размер экрана вашего устройства. И если оказывается, что вы загружаете систему со смартфона или планшета, система применяет другие стили, подходящие под мобильные устройства. А также иначе формирует навигационное меню, чтобы все корректно отображалось на небольшом экране.

Сами же формы рисуются одинаково, что для компьютера, что для мобильного устройства. Тут, скорее, дело в подходе к разработке дизайна: если предполагается работа с формы на мобильном, то ее изначально стараются сделать компактной, чтобы она помещалась на маленький экран. А дальше уже настраивается автоматическое открытие нужных форм на мобильном в зависимости от пользователя или его роли в системе.

В основе выбора такого подхода – стремление разработчиков к простоте и браузерным решениям в сочетании с наличием в современных мобильных операционных системах и браузерах возможности настроить так называемый PWA (Progressive Web App). Эта технология позволяет открыть обычный сайт как мобильное приложение, выбрав нужный ярлык на экране. И тогда он действительно очень похож на обычное приложение, установленное из магазина.

Кстати, если есть желание посмотреть, как это работает, компания предлагает демо-версию продукта MyCompany. Если зайти на него со смартфона, система автоматически предложит установить его как приложение (удалить его не проблема, потому при желании можно и согласиться). Там уже есть отдельные формы, адаптированные под мобильные устройства. В общем, можно «руками пощупать» и оценить удобство реализации. Например, в форму «Изображения» можно загружать фото товаров прямо с камеры телефона.

Поддержка и монетизация

И, напоследок, поговорим о сервисе, его рекламе и доходах. А начнем с обещанного ранее описания технической поддержки.

Поддержка осуществляется через Slack, Telegram, электронную почту и телефон. Последний вариант подходит преимущественно пользователям из России и Беларуси. Основным каналом связи считается Telegram. Об этом также говорят, что «так исторически сложилось». В целом, в поддержку люди пишут, получают помощь и ответы на вопросы. Причем, пишут туда как покупатели пользователи бесплатных базовых версий, так и программисты, которые заинтересовались работой в системе lsFusion.  В целом, поддержка работает и как классическая помощь пользователям, и как некое профессиональное сообщество на официальном Telegram-канале.

«Локомотивом» продвижения продукта служит, как я понял, сама платформа. Она распространяется бесплатно и служит базой для остальных решений. А зарабатывают они преимущественно на продаже коммерческой конфигурации, сопровождении, доработках и дополнительных услугах.

Можно ли рассматривать  lsFusion  как конкурента 1С?

Если рассматривать систему lsFusion на уровне платформы, возможностей здесь значительно меньше, чем в 1С. И с этой точки зрения можно сказать, что lsFusion явно проигрывает.

С другой стороны, далеко не все возможности бывают нужны. Более того, 1С и я, и многие другие как раз критикуют за излишек ненужных функций. ( в том числе и я ), которые невозможно удалить, так как структуре недостает модульности. 

И что мне особенно нравится в lsFusion, что здесь нет такой жесткой привязки к предметной области. Здесь нет обязательных регистров, планов счетов и т.д. Я, как человек, который привык работать с DRUPAL, PHP, Java-скриптами, Java, т.е. с языками программированиями как таковыми, это очень высоко ценю. При работе с этими инструментами я свободен от обязательной предметной области.

Еще один плюс lsFusion — бесплатная платформа. А потому здесь есть открытый код, и нет ограничения по количеству пользователей, что также заметный плюс. Кроме того, платформа lsFusion написана на Java. А этот язык нетребователен к ресурсам. А потому и готовая система также занимает намного меньше места на диске, не столь требовательна к ресурсам сервера и локальных компьютеров, как 1С. 

А вот с точки зрения готовых решений lsFusion, несомненно, проигрывает. Число готовых продуктов здесь несопоставимо меньше, чем в 1С. Количество различных готовых конфигураций 1С огромно, можно найти подходящий продукт практически для любого типа бизнеса. О качестве конфигураций 1С я здесь говорить не буду, а вот количество вызывает уважение. 

Система lsFusion пока что не может похвастаться особым разнообразием. Но при желании вы всегда можете скачать бесплатное решение MyCompany, изучить его, возможно, доработать или заказать доработки, и попробовать с ним работать. 


ссылка на оригинал статьи https://habr.com/ru/articles/895688/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *