Сравнение технологических
платформ Jmix и 1С:Предприятие
сравнивать
Обе платформы предназначены для ускорения разработки бизнес-приложений за счет предоставления унифицированного фреймворка, инструментов для ускорения разработки и каталога готовых к использованию компонентов. Технологические платформы противопоставляют свои преимущества низкой скорости традиционной разработки. Однако рецепты повышения продуктивности отличаются подходами и архитектурой готового к использованию приложения. Здесь мы разберемся в отличительных чертах и сходствах каждой технологии для того, чтобы вы могли выбрать для своей задачи оптимальное решение и достигнуть лучших результатов при разработке кастомных бизнес-приложений.
вместо того, чтобы бороться с его ограничениями
Общее определение
1С:Предприятие — это платформа для разработки решений для бизнеса, которая ускоряет и упрощает разработку за счет предметно-ориентированного фреймворка и специализированной среды быстрой разработки.
1С:Предприятие — это инструмент для разработки решений для бизнеса. С одной стороны, на всю ширину — это самые разные приложения: и для управления персоналом, и для управления финансами, и для производства, и для документооборота. С другой стороны, на всю глубину: от самых малых предприятий - до самых крупных организаций.
Платформа 1С:Предприятие основана на фреймворке собственной разработки компании 1С. Исходный код фреймворка закрыт. Фреймворк предоставляет разработчику готовый набор прикладных объектов для реализации типовых задач автоматизации учета. Разработчик ведет разработку с использованием высокоуровневого предметно-ориентированного языка программирования (ЯП) и инструментов быстрой разработки, которые приближены к объектам предметной области. Среда быстрой разработки реализована в виде специализированного инструмента - Конфигуратора.
Jmix — это технологическая платформа быстрой разработки бизнес приложений, которая интегрирует высокоуровневый Java-фреймворк Jmix и среду разработки Jmix Sudio.
Фреймворк Jmix лучше всего подходит для создания ориентированных на данные приложений со сложной моделью данных, насыщенным пользовательским интерфейсом и интегрированными бизнес-процессами. Это full-stack фреймворк, что означает поддержку разработки и backend, и UI вашего приложения.
Jmix основан на Spring Boot, что является фактически стандартом для разработки корпоративных веб-приложений на Java. Это означает, что вы можете использовать множество сторонних библиотек и фреймворков после минимальной конфигурации в дополнение к функционалу самого Jmix.
Среда разработки Jmix Studio – это плагин для IntelliJ IDEA Community Edition, который помогает на всех этапах разработки приложений: создание и конфигурация проекта, определение модели данных, генерация скриптов для миграции базы данных, разработка UI экранов в визуальном редакторе. Он предоставляет продвинутую навигацию, автодополнение кода и инспекции, специфичные для Jmix-проектов.
Основные идеи платформы
Предоставить прикладному разработчику единый фреймворк для всех аспектов разработки. Важно, что все фреймворки, которые входят в платформу, тесно интегрированы. Разработчик работает с единой системой типов: одинаковый тип используется и в базе данных, и во встроенном языке на сервере, и во встроенном языке на клиенте, и на мобильном устройстве.
Еще один аспект - это быстрая разработка от предметной области. Платформа, кроме технологических инструментов, предоставляет разработчику высокоуровневые прикладные инструменты. Важно, что они отражают семантику самой предметной области - оперативный учет финансово-хозяйственной деятельности. Все, что можно, описывается декларативно. Разработчики платформы считают, что декларативное описание всегда выигрывает в сравнении с императивным кодом, который всегда более сложный: и в разработке, и в поддержке, и в наглядности. Декларативное описание позволяет повысить уровень абстракции и снизить сложность разработки.
Обеспечить прикладному разработчику высокую продуктивность при создании корпоративных информационных систем на уровне, сравнимом с Low Code платформами, сохранив при этом гибкость разработки с "нуля". Разработчик работает в удобной и высокопроизводительной среде разработки IntelliJ IDEA Community Edition, используя open source фреймворк Jmix, который обеспечивает высокоуровневый API для работы с данными, обширный набор типовых для бизнес-приложений UI-компонентов и встроенную систему безопасности с декларативной настройкой ролей и параметров доступа. Важно, что на выходе получается full-stack веб-приложение с открытым исходным кодом без ограничений на runtime, где вся разработка ведется на одном языке - Java или Kotlin на выбор разработчика.
Описанный подход снижает требования к размеру команд, избавляет разработчика от написания рутинного кода и экономит время на поиски требуемых для проекта веб-компонентов. При этом разработчик использует все могущество технологического стека Java, работает с богатой экосистемой компонентов и базой знаний технологии Spring Boot, развивает свои технические компетенции вместо изучения нишевых технологий.
Несмотря на то, что идеологически платформы различаются -
класс решаемых задач и методология разработки похожи.
Для удобства сравнения двух подходов, разберем создание небольшого проекта по «воображаемой» задаче
«воображаемого» клиента.
Предположим, есть бизнес-заказчик - владелец маленькой, но доходной нефтебазы. Каждый день нефтебаза отгружает топливо из четырех резервуаров в автомобильные цистерны. А дважды в неделю остатки пополняются и топливо приходит на нефтебазу по железнодорожной ветке. Учет операций принято вести вручную, без единой автоматизированной системы - как это водится, в электронных таблицах. Подход неплохо работал, пока обороты не стали расти, а количество клиентов увеличиваться. В целом ручной учет все еще продолжает справляться с новыми бизнес задачами, но все чаще возникают ситуации, когда критические ошибки в учете и анализе данных приводят к существенным потерям. Было принято решение о создании Автоматизированной Информационной Системы (АИС) учета прихода и расхода нефтепродуктов (НП). Рассмотрим создание АИС параллельно на двух платформах разработки.
Анализ демо-кейса
Анализ бизнес-процессов заказчика позволил определить базовые процессы для автоматизации и сформулировать требования к системе.
Нефтебаза выполняет функции приема, хранения и отгрузки НП. Есть 4 резервуара для хранения ГСМ: АИ-95, АИ-92, АИ-98, ДТ. Каждый резервуар имеет характеристику вместительности - объем.
Требуется создать учетную систему,
которая реализует следующие функции:
- Система должна предоставлять возможность ведения учета приема нефтепродуктов в разрезе поставщиков, видов транспорта, данных транспорта, видов НП по массе, объему, стоимости;
- Система должна предоставлять возможность ведения учета отгрузки нефтепродуктов в разрезе покупателей, данных транспорта, видов НП по массе, объему, стоимости;
- Система должна предоставлять возможность формировать реестр документов движения нефтепродуктов.
Среда разработки
Начнем работу над реализацией требований со знакомства со средой разработки и создания нового проекта. На этом этапе мы увидим и сравним структуру проекта в обеих средах, расположение ключевых объектов, с которыми будем работать в следующих разделах.
Предметно-ориентированная среда быстрой разработки в платформе «1С:Предприятия 8» реализована в составе конфигуратора. Она предоставляет разработчику интегрированный набор инструментов, необходимых для быстрой разработки, распространения и поддержки прикладного решения для автоматизации бизнеса. Устанавливается локально на рабочую станцию разработчика
Jmix Studio - профессиональная среда разработки на основе IntelliJ IDEA Community Edition и инструменты для ускорения разработки. Jmix Studio представляет собой плагин для IntelliJ IDEA. После установки в IDE Jmix Studio предоставляет модифицированный вид дерева проекта и интегрированный набор инструментов, необходимых для быстрой разработки, отладки, тестирования и развертывания готового бизнес-приложения. Устанавливается локально на рабочую станцию разработчика
Создание справочника
Учет в системах 1С ведется в разрезе справочников. Справочники позволяют хранить в информационной базе данные, имеющие одинаковую структуру и списочный характер. Основными справочниками в системе «Склад учета ГСМ» на нефтебазе являются «Контрагент», «Контактное лицо», «Банк», «Расчетный счет», «Нефтепродукт», «Резервуар» и «Тип транспортного средства». Рассмотрим создание справочников в 1С и в Jmix на демонстрационном примере.
Справочник - это прикладной объект конфигурации, который включает совокупность типов и объектов встроенного языка 1С, таблиц базы данных и прикладной функциональности.
Разработчик задает свойства справочника, заполняя значения параметров во вкладках конфигуратора и на встроенном языке описывает специфические алгоритмы их функционирования.
У всех справочников предопределенная структура хранения в базе данных.
В Jmix для создания справочника будут использоваться сущности JPA - это объекты Java, хранящиеся в базе данных.
При создании сущности в Jmix разработчик задает атрибуты, которые придают сущности определенное поведение на системном уровне, выбирает, как будет создаваться уникальный идентификатор сущности.
В структуре проекта Jmix сущности создаются через меню в окне инструментов Jmix, а список сущностей отображается в разделе Data Model.
Структура справочника
Каждый элемент справочника характеризуется кодом и наименованием. Коды элементам справочника
присваиваются автоматически при их записи.
На вкладке «Данные» определяют, какую информацию можно будет добавить в справочник.
Набор атрибутов элемента справочника, который подробно описывает этот элемент создается с помощью
реквизитов. Для каждого атрибута справочника создается реквизит и настраиваются его параметры.
При создании справочника автоматически создается стандартный набор индексов, например, всегда
создается индекс Код + ссылка. Собственные индексы можно добавить через свойство «Индексировать» к
реквизиту справочника.
Например, для справочника «Банк» реквизитами будут являться «ИНН», «БИК» и «Наименование».
Jmix Studio отображает три вкладки: код исходной сущности, структуру и индексы. Вместе они образуют визуальный Дизайнер сущностей.
Идентификатор сущности сопоставляется со столбцом ID и является первичным ключом таблицы базы данных. В Jmix есть выбор типов первичного ключа, можно выбрать как первичный ключ будет создаваться, а также можно определить составной первичный ключ.
В Дизайнере сущностей разработчик создает атрибуты и настраивает их параметры с помощью визуального редактора. Тут же можно настроить валидацию значений для атрибутов. На отдельной вкладке создаются индексы. Исходный код сущностей, сгенерированных студией, можно редактировать на вкладке Text. При редактировании кода доступны помощники.
У сущности «Bank» по умолчанию будет уникальный идентификатор с типом UUID, который Jmix генерирует автоматически. Дополним атрибуты «name», «bic» и «inn».
Справочники могут находиться в состоянии подчинения, т. е. элементы одного справочника могут быть подчинены элементам другого справочника, на уровне таблиц в базе данных между таблицами устанавливается связь «один-ко-многим».
Например, справочник Расчетный счет может быть подчинен справочнику Контрагенты и справочнику “Банки”. Тогда при оформлении документов можно будет выбрать расчетный счет среди расчетных счетов выбранного Контрагента. У одного Расчетного счета может быть только один Банк.
Часто в справочнике необходимо настроить определенный порядок подчинения элементов, для этого в 1С используются иерархические справочники.
Ссылочные атрибуты определяют отношения между сущностями. Ссылки могут быть одиночными значениями (отношения «to-one») или коллекциями (отношения «to-many»).
По умолчанию связь является ассоциацией, что означает, что обе сущности могут существовать независимо друг от друга, без владения. Jmix также поддерживает более сильную связь между сущностями – композицию.
Композиция подразумевает владение, т.е. экземпляр сущности может существовать только как часть сущности-владельца. Объекты, принадлежащие композиции, редактируются в UI вместе.
В Jmix вы можете быстро сделать и иерархический справочник. Пример здесь.
Формы справочника
Система может автоматически генерировать несколько форм представлений справочника. При создании справочника создается форма по умолчанию.
Для справочника «Банк» понадобятся форма списка банков, существующих в системе, и форма элемента справочника «Банк», с помощью которой можно будет просматривать, редактировать и создавать элемент справочника.
Для того, чтобы изменить стандартную форму или создать собственные формы, которые система будет использовать вместо форм по умолчанию, можно воспользоваться конструктором форм справочника.
Jmix Studio также предоставляет мастер для создания экранов из шаблонов. Чтобы создать новый экран, на панели действий в верхней части дизайнера сущностей выберите Views → Create view. На первом шаге мастера создания экранов выберите шаблон: Entity list view (Форма элемента), Entity detail view (Форма списка), Entity List and detail views (Форма элемента и Форма списка).
Любая форма представляет совокупность нескольких составляющих, включая:
- элементы — объекты, определяющие визуальное представление формы;
- реквизиты — объекты, данные которых форма использует в своей работе;
- модуль — программы на встроенном языке, отвечающие за работу с элементами и за обработку событий.
- командный интерфейс, параметры и команды.
Разработчик добавляет элементы на формы с помощью кнопки «Добавить» в списке элементов. Элементы формы отображаются на превью экрана. В блоке макета экрана возможен просмотр.
Дизайнер экранов представляет собой ряд панелей и окон инструментов, которые позволяют разрабатывать макет экрана и задавать свойства компонентов пользовательского интерфейса.
Для удобства сравнения на скриншоте указаны ссылки по аналогии с экраном 1С.
- Панель иерархии компонентов Jmix UI - содержит список элементов, из которых состоит форма;
- Данные, которые форма использует в своей работе, также находятся в панели иерархии компонентов;
- Код программы, отвечающей за работу с элементами формы и обработку событий, находится в Контроллере формы;
- Редактор исходного кода формы - позволяет редактировать форму с помощью декларативного описания в формате XML;
- Панель инспектора свойств выбранного компонента Jmix UI.
Форма списка используется для просмотра данных справочника, позволяет выполнять навигацию по справочнику, добавлять, помечать на удаление и удалять элементы справочника. Система создает форму автоматически при создании справочника.
Форма списка по умолчанию содержит кнопки создания, изменения и удаления экземпляров сущности - типовых СRUD-операций. Фильтр с возможностью поиска по любым атрибутам сущности также добавляется автоматически.
В Jmix разработчик делает необходимые пользовательские экраны самостоятельно, но с поддержкой генераторов форм по шаблонам и декларативного формата описания верстки экрана.
Создание документа
Документы — это прикладные объекты конфигурации. Они позволяют хранить в прикладном решении информацию о совершенных хозяйственных операциях.
Документ в информационной системе «Склад учета ГСМ» на нефтебазе - «Операция НП» будет содержать описательные параметры: Дата документа, Тип операции, Контрагент, Расчетный счет, данные транспортного средства и его тип.
Кроме этого, каждый документ может содержать некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, для разных документов. Например, для документа «Операция НП» это может быть информация о нефтепродуктах, плотности, резервуаре, количестве и стоимости.
Структура документа
Номер, дата и время всегда присутствуют в документе. Дополнительная информация, которая является одинаковой для всех документов конкретного вида, хранится в реквизитах документа.
Табличная часть документа обеспечивает хранение информации, структура которой одинакова для всех элементов прикладного объекта, но количество такой информации может быть различным.
В Jmix нет различий между Справочниками и Документами, как в «1С:Предприятие 8». Все они описываются сущностями, которые описываются своими атрибутами и имеют различную бизнес-логику. Совокупность сущностей приложения формирует модель данных.
Табличная часть документа реализуется с помощью установления связи Композиция между сущностью Операция (Документ) и сущностью Детали операции (Табличная часть).
Сначала создадим сущность Детали Операции и опишем атрибуты, соответствующие реквизитам Табличной части в 1С. Затем в сущности Операция добавим атрибут, который представляет собой коллекцию экземпляров Детали операции. Каждый экземпляр Детали операции создается для определенной Операции, становится его частью и не может принадлежать другой Операции. Jmix автоматически настраивает связи между сущностями при работе с Дизайнером сущностей.
Разработка экранных форм документа
С помощью редактора форм разработчик добавляет на форму данные и элементы формы.
Реквизиты формы определяют набор данных, которые будут отображаться на форме.
Редактирование реквизитов формы выполняется в списке, который позволяет создавать новые реквизиты, изменять имеющиеся и удалять ненужные реквизиты.
Для создания сущности Операция (Документ) нам понадобятся данные из нескольких сущностей.
Фетч-план (fetch plan) определяет, какой граф данных должен быть загружен из базы данных при работе с конкретным экземпляром Операции. На этапе настройки фетч-плана можно выбрать объем данных, который понадобится для работы пользовательского экрана.
При создании экрана для сущности мастер создания экрана по умолчанию предлагает фетч-план для корневой сущности и выбранных связанных сущностей.
Экран редактора сущности Операция должен позволять пользователю изменять атрибуты операции, а также создавать и редактировать строки деталей операции. В этом случае нам нужны почти все сущности предлагаемого графа данных.
Элементы формы представлены в виде иерархичной структуры, корнем которой является сама форма. С помощью элементов формируется логическое описание формы.
На основе этого описания система автоматически или при нажатии на кнопку формирует внешний вид формы для отображения пользователю.
При создании формы автоматически создаются действия для проводки документа и записи, а также для добавления новых записей в табличную часть.
После того, как все шаги будут пройдены, будет сгенерирован XML-дескриптор экрана, файл формата XML, декларативно описывающий визуальные компоненты, компоненты данных и некоторые параметры экрана, а также контроллер экранов - Java класс, описывающий логику экрана.
В главное меню приложения будет добавлен новый пункт, для только что созданного экрана.
Обработка событий
Редактор кода
Поведение формы и действия, выполняемые из формы, определяются в модуле на соответствующей вкладке редактора. Модуль формы предназначен для того, чтобы обработать действия пользователя. Для модуля формы доступны реквизиты формы, а также ее свойства, методы и события.
В модуле возможно объявление переменных, процедур и функций, которые будут доступны при работе с формой с помощью встроенного языка.
Обработка событий, а также валидация данных, вводимых на экране, и бизнес логика экрана определяется в контроллере экрана.
Контроллер экрана - это Java-класс, который содержит в себе логику инициализации экрана и обработки событий.
Контроллер связан с дескриптором экрана, который определяет компоновку экрана и контейнеры данных. В контроллере можно программно создавать визуальные и не визуальные компоненты.
Важной особенностью работы с визуальными компонентами, расположенными на форме, является способ взаимодействия контроллера и компонентов. Для того, чтобы получить доступ к компонентам формы из контроллера, нужно выполнить действие «Inject», воспользовавшись соответствующей кнопкой в верхней панели действий редактора кода. Использование кнопки Inject возможно во всех частях вашего проекта для инжектирования зависимостей в контроллеры экрана и бины Spring (сервисы бизнес или системной логики).
Форма документа
Регистры
В случае работы с документами, в 1С при проводке данные заносятся в специальные таблицы - регистры. Существует несколько видов регистров, в зависимости от цели использования. Например, для того, чтобы решить проблему отчетности по операциям Нефтебазы, нам помогут регистры накоплений и регистры сведений.
Для того, чтобы сохранить дополнительные данные справочников, например, биржевые цены на нефтепродукты, которые могут быть разные в зависимости от даты, нам помогут регистры сведений.
Отчеты
Отчеты — это прикладные объекты конфигурации. Они предназначены для обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. В 1С как правило отчеты создаются на основании данных регистров. Разберем на примере самый простой случай и создадим отчет - реестр документов по операция Нефтебазы.
В дереве объектов проектируемой конфигурации есть ветвь Отчеты, в которой содержится список доступных отчетов. В ней разработчик создает новый отчет.
Основа для построения отчета - схема компоновки данных (СКД). Схема создается с помощью визуального конструктора.
Конструктор создает текст запроса, который можно редактировать вручную, а также позволяет настроить визуальное представление данных в отчете.
Реестр документов по Операциям НП - пример простого отчета, который позволяет выгрузить список операций.
Для того, чтобы создать отчет, необходимо установить дополнение «Reports». Дополнения Jmix публикуются на маркетплейсе и устанавливаются прямо из Studio. При запуске приложения в меню появится новый раздел – «Report», он содержит список созданных отчетов и кнопки для управления ими. Существует два способа создания отчетов: с помощью мастера отчетов или редактора отчетов.
Работа с отчетами в Jmix состоит из трех этапов: определение источника данных, создание шаблона и формирование отчета. Jmix позволяет определить следующие источники данных - сущности модели данных Jmix, SQL запрос, JPQL запрос, JSON или Groovy-скрипта.
Конструктор позволяет настраивать источники данных отчета в рантайме приложения с помощью пошагового мастера. Шаблон выходной формы отчета настраивается с помощью установленных на компьютере разработчика офисных пакетов в форматах DOC/DOCX, ODT, XLS/XLSX, HTML.
Мы создали самый простой вид отчета - реестр документов.
Итоговое табличное представление отчета «Реестр документов» приведен на картинках ниже.
Запускаем приложение
Любая конфигурация 1С может работать в двух вариантах:
Файловый режим — клиентская программа 1С подключается непосредственно к информационной базе, которая включает конфигурацию, базу данных, административную информацию и хранится в файловой базе данных. Этот вариант используют для небольшого количества пользователей в локальной сети.
Клиент-серверный режим. Клиентские программы 1С подключаются к программе «Сервер 1С:Предприятие». Сервер 1С обрабатывает клиентские соединения, выполняет вычисления и получает/записывает данные в СУБД. Этот вариант предназначен для использования в рабочих группах или в масштабе предприятия.
В файловом и клиент-серверном режимах доступны два способа работы:
Работа через тонкий клиент. Тонкий клиент получает готовые данные и отображает их для пользователя, а вся работа с базой данных, объектными данными, исполнение запросов — выполняется на стороне сервера.
Тонкий клиент позволяет работать с интерфейсом «1С:Предприятия 8» через Интернет. Для этого используется веб-сервер, настроенный для работы с «1С:Предприятие 8». Тонкий клиент взаимодействует с веб-сервером по протоколу HTTP или HTTPS. В качестве веб-сервера используется Apache или IIS.
Как и любое приложение на основе Spring Boot, приложение Jmix может быть собрано и развернуто в виде исполняемого JAR, WAR, или в виде образа Docker. Приложение можно развернуть в кластере Kubernetes, в сервис AWS Elastic Beanstalk, в облаке Azure App Services или Google Cloud, выполнив инструкции, описанные в документации.
Таким образом, используя только базовые возможности платформ, мы получили приложение, которое автоматизирует базовый процесс учета прихода и расхода топлива на нефтебазе. Приложение позволяет вести справочники, создавать документы, регистрирующие операции, анализировать движение документов с помощью отчетов. Посмотрели, как можно легко и быстро создавать вспомогательные объекты - регистры для оптимальной работы с данными системы. При запуске приложения мы пользовались механизмами авторизации и аутентификации, предоставляемыми Jmix «из коробки».
Данную функциональность мы получили практически «из коробки», с минимальным написанием кода. Реальные бизнес- процессы сложнее, а бизнес-логики больше. Именно поэтому очень важно максимально автоматизировать разработку универсальных модулей и компонентов, чтобы сосредоточится только на реализации специфических требований конкретной бизнес-задачи.
Заключение
Как вы возможно смогли отметить, обе платформы предлагают схожие подходы к разработке информационных систем, хотя основаны на разных технологиях разработки и существенно отличается выходной результат. В первом случае разработчик получает исходный код, который может исполняться только в среде, контролируемой вендором. Во втором случае разработчик получает свой собственный цифровой продукт, который может быть развернут в разных окружениях и дистрибутирован множеству пользователей без «оглядки» на вендора. Если вы выбираете технологический стек для следующего кастомного энтерпрайз-проекта - оцените преимущества Jmix. Обратите внимание, что наработанные навыки разработки в 1С могут быть частично переиспользованы для работы с Jmix.
Вы можете ознакомиться с дополнительными материалами, перейдя по следующим ссылкам: