Информация об изменениях в платформе и прикладных решениях на нашем официальном телеграм канале. Подписывайтесь!

Платформа Гедымин

Высокие стандарты в области разработки экономического программного обеспечения

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

Предел был близок.

Взяв чистый лист бумаги, мы сформировали три основных требования к будущей платформе:

  1. Единая база данных, SQL и надежный клиент-сервер
  2. Унифицированный объектно-ориентированный доступ к реляционным таблицам
  3. Возможность настройки "на лету" структуры б/д, интерфейса, алгоритмов, отчетов

В 2000-м году компания Borland открыла исходные коды сервера Interbase. Так возник Firebird — молодой проект с богатой историей — естественный и единственный выбор для платформы Гедымин.

Естественный, потому как будучи продуктом из одной компании, прекрасно интегрировался на уровне прямого обращения к функциям API с разработками на Delphi и не требовал промежуточного слоя из ODBC драйверов.

Единственный, потому как на тот момент иного бесплатного сервера с открытым исходным кодом, поддержкой транзакций, многоверсионностью данных, триггерами и хранимыми процедурами просто не существовало в природе.

Режим встроенного сервера принес всю мощь и надежность SQL даже в однопользовательские установки программ на платформе Гедымин.

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

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

Бизнес-объект — наше изобретение — это пост-реляционная object-relational mapping (ORM) технология, которая решает следующие задачи:

  1. Объединяет несколько реляционных таблиц в единое целое
  2. Формирует SQL запросы для текущей структуры базы данных
  3. Управляет транзакциями и точками сохранения
  4. Организует пользовательский интерфейс
  5. Контролирует права доступа к данным и функциям
  6. Логирует изменения данных и действия пользователя
  7. Сериализует данные для записи в файл

Программист избавляется от черновой рутинной работы. Код становится проще.

Унификация пользовательского интерфейса позволяет снизить затраты на обучение пользователей и сократить срок внедрения. В Гедымине каждый бизнес-объект имеет два стандартных окна. Форма просмотра служит для отображения списка записей, фильтрации, сортировки и выбора. Диалоговое окно записи предназначено для создания/просмотра/изменения одного объекта.

Платформа включает комплект экранных элементов для отображения и редактирования наборов данных и отдельных полей бизнес-объектов.

Представление информации в табличном виде:

Поиск, выбор, создание и редактирование объекта с помощью выпадающего списка:

Выполнение вычислений непосредственно в поле ввода числовой информации:

Удобный выбор календарного периода:

Пользователю доступны пять способов поиска информации. Три выполняются на стороне клиента и два на стороне сервера. Фильтрация — самый мощный из них — позволяет оператору без знания синтаксиса SQL формировать сложные запросы. Отобразить список накладных за январь только для покупателей, которые  приобретали товар в этом же месяце год назад? Легко!

Набор фундаментальных справочников и базовые типовые документы входят в ядро платформы. Все остальное — разработчик создает в процессе решения поставленной задачи. Для нового бизнес-класса необходимо:

  1. Создать структуры данных
  2. Настроить экранные формы
  3. Написать программный код

Язык разработки на платформе Гедымин — VBScript — быстро осваивается даже далекими от компьютерной отрасли специалистами. Для эффективного программирования, отладки и профилирования предоставляется весь набор необходимых инструментов.

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

Комплект стандартных отчетов включает Журнал-ордер, Карту счета, Анализ счета, Главную книгу.

Проводки в Журнал хозяйственных операций формируются автоматически на основании данных документа по цепочке:

Документ Типовая хозяйственная операция (ТХО) Типовая проводка (ТП) Проводка в ЖХО

Алгоритмы ТХО и ТП отражают специфику предприятия и конструируются в специальном окне из готовых блоков без кодирования вручную.

Чем глубже степень автоматизации, тем больше бумаги расходуется на печать документов и отчетов. Это конечно шутка, но, как известно, в каждой шутке есть доля истины. В обозримом будущем бумажные документы сохранят свое присутствие в документообороте предприятия.

Подсистема вывода на печать платформы Гедымин построена на базе Fast Report — бэнд-ориентированном генераторе отчетов с возможностями построения многостраничных, многошаблонных и сводных (кросс-таб) отчетов, статичных и интерактивных.

Сформированный документ может быть выведен на экран, распечатан, сохранен в файле, экспортирован в популярные офисные форматы (DOC, XLS, PDF) или отправлен по электронной почте.

Специальный язык разметки предусмотрен для скоростной печати отчетов на матричных принтерах.

Защита данных предприятия обеспечивается совместно средствами сервера Firebird 3 и платформы Гедымин. Со стороны СУБД — это шифрование файла базы данных и сетевого трафика, разграничение доступа к объектам БД согласно стандарту SQL. Платформа обеспечивает дополнительные механизмы:

  1. Разграничения доступа на уровне отдельных записей в таблицах
  2. Разграничения доступа на уровне бизнес-классов
  3. Разграничения доступа к функциям системы
  4. Логирования и аудит действий пользователя
  5. Логирования изменений данных на уровне триггеров

Перенос данных из одной базы в другую - задача нетривиальная. Необходимо выявить все реляционные ссылки и строго придерживаться порядка при записи в файл. Во избежание задвоения при загрузке объекты следует сопоставлять по глобальным идентификаторам и уникальным полям. Механизмы сериализации платформы используются для обмена данными и загрузки пространств имен (программного кода и метаданных). В последнем случае используется человекочитаемый формат данных YAML.

Непосредственно в платформу Гедымин встроена функциональность web-клиента и web-сервера, что позволяет подключаться к web-сервисам, создавать web-интерфейсы и обмениваться данными по протоколу HTTP. Гедымин выступает сервером для мобильных приложений GDMN Финансы и Контроль и  GDMN Расчетный листок.

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

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

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

Платформа Гедымин предлагает обширный набор механизмов для интеграции со сторонними системами, промышленным и торговым оборудованием:

  1. Обмен данными через текстовые файлы с помощью механизма шаблонов и специального языка разметки
  2. Обмен данными через файлы в формате XML или YAML
  3. Обмен данными через файлы в формате DBF
  4. Работа в режиме COM-сервера и COM-клиента
  5. Прямое обращение к функциям API драйверов и сторонних библиотек
  6. Работа в режиме HTTP-сервера и HTTP-клиента
  7. Работа в режиме FTP-клиента
  8. Подключение к внешним базам данных через ODBC

Программное обеспечение с открытым исходным кодом имеет ряд преимуществ. Назовем некоторые из них. Во-первых, это гарантия сохранности инвестиций, поскольку продолжительность жизни промышленной системы на предприятии может составлять от 20 лет и дольше. Не всякий поставщик ПО просуществует столько времени. Во-вторых, сотрудники ИТ отдела предприятия могут участвовать в доработках и усовершенствовании программного обеспечения. В-третьих, разработчики сторонних систем имеют возможность разобраться в функционировании платформы и самостоятельно создать драйверы для интеграции своих программ. В-четвертых, это лицензионная чистота и существенное снижение общей стоимости информационной системы.

Платформа Гедымин имеет открытый исходный код* и поставляется на условиях Gedemin Public License. Суть лицензии вкратце: допускается использование исходного кода в коммерческих целях с условием, что все внесенные изменения будут размещены в открытом доступе.

Такие ключевые компоненты платформы, как СУБД Firebird и SWI-Prolog, также являются бесплатными программными продуктами с открытым исходным кодом.

Заметим, что прикладные решения, поставляемые компанией Golden Software, Ltd, не являются бесплатными и приобретаются отдельно.

* единственная библиотека, которая не является бесплатной — это генератор отчетов Fast Report. Сторонний разработчик обязан приобрести отдельную лицензию на ее использование на официальном сайте.

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

Размер файла базы данных — 100 Гб
Одновременных подключений к серверу базы данных — 170
Количество учетных записей пользователей — 300
Работающих на предприятии — 5 000
Баз данных в распределенной холдинговой структуре — 16
Рабочих мест в распределенной холдинговой структуре — 400
Документов и их позиций — 30 млн
Проводок — 30 млн
Признаков аналитического учета — 70
Счетов и субсчетов бухгалтерского учета — 500
Инвентарных карточек — 35 млн
Скрипт-функций, макросов, методов, событий — 12 000
Строк VBScript кода — 700 000
Триггеров — 5 800
Процедур — 423
Таблиц — 1 020
Полей — 10 400
Индексов — 4 700

Как ознакомиться с возможностями платформы?

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

Как приобрести решения на базе платформы Гедымин?

  1. Выберите решение из списка.
  2. Определитесь, потребуются ли работы по обучению персонала, доработке, внедрению и сопровождению ПО.
  3. Уточните цену на ПО и работы в актуальном прайс-листе.
  4. Обратитесь в офис компании за договором и счетом-фактурой для оплаты.

Как приступить к разработке на базе платформы Гедымин?

  1. Скачайте и установите дистрибутив Разработчик, который содержит однопользовательскую версию платформы Гедымин и чистую базу данных  с минимальным набором базовых скрипт-функций.
  2. Если Ваши решения будут основаны на типовых решения компании Golden Software, Ltd, то установите git и клонируйте проект gedemin-apps. Загрузите в базу данных нужные пространства имен.
  3. Читайте документацию и смотрите видео уроки на нашей wiki.
  4. Спрашивайте на форумах.

Как получить исходный код платформы Гедымин?

  1. Ознакомьтесь и примите условия лицензии Gedemin Public License.
  2. Следуйте инструкции по установке необходимого ПО и компиляции платформы Гедымин или воспользуйтесь преднастроенной виртуальной машиной.
  3. Читайте документацию и смотрите видео уроки на нашей wiki.
  4. Спрашивайте на форумах.
  5. Не забывайте сделанные изменения отправлять в общий репозиторий.