← Назад в блог

Система отчётов SQLVantage: делаем проектирование и доставку отчётов простыми и эффективными

经验分享 623 прочтений

Статья посвящена SQLVantage — легковесной веб-системе отчётов, объединяющей SQL-запросы, параметрические формы и представление результатов в едином рабочем процессе. Рассматриваются архитектура системы, установка и развёртывание, управление полным жизненным циклом отчёта, а также ключевой компонент — дизайнер отчётов с модулями SQL, FORM и HTML. Обсуждаются сценарии применения и практические ограничения.

Система отчётов SQLVantage: делаем проектирование и доставку отчётов простыми и эффективными

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

Зачем нужна отдельная система отчётов?

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

Однако на практике мы часто сталкиваемся со следующими проблемами:

  • Разрозненность данных: SQL-запросы для отчётов разбросаны по письмам, перепискам, скриптам, их сложно централизованно управлять и переиспользовать;
  • Сложность передачи параметров: при каждом запросе приходится вручную собирать SQL или менять код, что ведёт к ошибкам;
  • Неунифицированные форматы экспорта: Excel, PDF, HTML существуют каждый сам по себе, стили сложно поддерживать;
  • Слабый контроль доступа: неясно, кто и какие данные просматривал, история операций непрозрачна;
  • Дублирование разработки: для схожих отчётов в каждом проекте приходится заново писать фронтенд- и бэкенд-код.

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

Недавно я познакомился с системой отчётов под названием SQLVantage (версия v1.0.2, выпущенная 2026-07-15), которая как раз решает эти проблемы. Её дизайн понятен: единый стандартный процесс связывает три задачи — «SQL-запрос, форма параметров, представление результатов», — чтобы весь жизненный цикл отчёта был прозрачен и отслеживаем.

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

I. Что такое SQLVantage?

SQLVantage — это система отчётов с чисто веб-архитектурой. Её ключевые особенности:

  • В браузере не требуется устанавливать плагины — достаточно любого современного браузера;
  • На сервере нужен лишь один исполняемый файл + каталог конфигурации, без дополнительных сред выполнения (таких как Java, Python, Node.js и т. д.);
  • Поддержка развёртывания на Windows и Linux;
  • По умолчанию подключается к базе данных Oracle (особенно подходит для сценариев Oracle EBS), но также имеет потенциал расширения на другие СУБД.

Краткий обзор ключевых понятий

Понятие Описание
Отчёт Один отчёт = SQL-запрос + форма параметров (FORM) + представление результатов (HTML) + три конфигурационных JSON, относится к определённой «ответственности»
Ответственность Каталог классификации отчётов, соответствует концепции ответственности в Oracle EBS, используется для группировки отчётов по модулям для пользователя
Параметр Условие запроса (дата, клиент, организация и т. д.), после отправки пользователем привязывается к SQL как именованный параметр
Запрос Конкретная задача выполнения отчёта пользователем; система выполняет асинхронно и генерирует файл результата
Авторизация Файл License, контролирующий максимальное количество отчётов и срок использования

Пользовательские роли

Система разделяет две роли с полностью отдельными точками входа и правами:

  • Администратор (/admin/login): управляет пользователями, ответственностями, отчётами, авторизацией, системными настройками, может просматривать запросы всех пользователей;
  • Обычный пользователь (/login): выбирает отчёты, заполняет параметры, отправляет запросы, просматривает свои запросы, скачивает результаты, меняет пароль.

II. Установка и развёртывание: действительно «распаковал и работай»

Способ развёртывания SQLVantage можно назвать весьма прагматичным.

Windows

Распакуйте дистрибутив в любой каталог (например, D:\SQLVantage), дважды щёлкните SQLVantage.exe для запуска. По умолчанию прослушивается 127.0.0.1:8080 — откройте в браузере и работайте.

Linux

Распакуйте в /opt/sqlvantage, выдайте права на выполнение и запускайте через nohup или systemd в фоновом режиме. Порт по умолчанию также 8080.

Автоматическая инициализация при первом запуске

При первом запуске система автоматически выполняет следующие действия, что очень удобно для администраторов:

  1. Проверяет наличие conf/data.dat (это бизнес-база данных, поставляемая в комплекте);
  2. Автоматически создаёт четыре таблицы: user, responsibility, report, request;
  3. Автоматически создаёт учётную запись администратора root с начальным паролем SQLVantage (обязательно смените после входа);
  4. Если файл авторизации отсутствует, выводит предупреждение, но система продолжает работать (с ограничением количества отчётов).

Такой подход сводит к минимуму затраты на «пробное использование с нуля».

III. С точки зрения администратора: управление полным жизненным циклом отчёта

3.1 Управление пользователями и ответственностями

Администратор может создавать обычных пользователей (роль normal), устанавливать статус active или inactive (при увольнении — отключить, без удаления учётной записи).

Управление ответственностями соответствует концепции ответственности в Oracle EBS и также может создаваться вручную. Отчёт должен быть привязан к определённой ответственности — тогда в пользовательском интерфейсе меню отчётов будет автоматически сгруппировано по ответственностям, обеспечивая ясную навигацию.

3.2 Управление отчётами: управление на основе состояний

У отчёта есть три состояния:

  • Draft (черновик): этап разработки, невидим для пользователей;
  • Release (опубликован): виден и исполняем пользователями;
  • Discard (архивирован): невидим для пользователей, но запись сохраняется.

Опубликованный отчёт нельзя удалить напрямую — сначала нужно перевести его в статус черновика или архивный. Это решение хорошо защищает от случайного удаления производственных отчётов.

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

3.3 Управление авторизацией (License)

Файл авторизации conf/license.dat контролирует максимальное количество отчётов и срок действия. Без авторизации или при истёкшем сроке система позволяет создать не более 3 отчётов; при превышении создать новый или отправить запрос будет невозможно.

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

IV. Дизайнер отчётов: ключевое преимущество

Если в SQLVantage и есть функция, заслуживающая детального изучения, — это дизайнер отчётов.

Он разделяет процесс разработки отчёта на три независимых, но взаимосвязанных модуля, объединённых в одном интерфейсе.

4.1 Макет дизайнера

Откройте список отчётов, нажмите кнопку «Код» (фиолетовая) в строке отчёта — откроется крупный дизайнер, занимающий около 98% экрана. Интерфейс разделён на:

  • Верхняя часть: выпадающий список переключения режимов (SQL / FORM / HTML) + кнопка «Сохранить всё»;
  • Левая панель: редактор кода (содержимое меняется в зависимости от режима);
  • Правая панель: динамическая панель конфигурации (отображает различные конфигурационные таблицы и предпросмотр в реальном времени в зависимости от режима).

Такой макет «слева код + справа конфигурация + предпросмотр в реальном времени» очень интуитивен для разработчика.

4.2 Модуль SQL: определение источника данных

Написание SQL

Используется синтаксис Oracle, условия запроса задаются именованными параметрами-плейсхолдерами :имя_параметра:

SELECT company_name, ou_id, amount
  FROM fnd_ou_tl
 WHERE ou_id = :P_OU_ID

Здесь P_OU_ID должно совпадать с именем параметра, определённым в модуле FORM.

Конфигурация метаданных столбцов — ключ к экспорту в Excel

На правой панели можно настроить для каждого столбца:

  • field: имя столбца из вывода SQL
  • title: заголовок (также заголовок столбца в Excel)
  • type: text / number / percent / date / month / time / datetime
  • precision: количество знаков после запятой
  • format: пользовательский формат Excel (например, #,##0.00)
  • align: выравнивание

Эта конфигурация напрямую определяет профессиональный уровень экспорта в Excel — заголовки на русском, выравнивание чисел по правому краю, разделители тысяч, процентные форматы — всё настраивается здесь за один раз.

Иными словами, достаточно настроить метаданные столбцов, и качество экспорта в Excel больше не зависит от дополнительного бэкенд-кода.

4.3 Модуль FORM: проектирование параметров запроса

Это точка входа для взаимодействия с отчётом. В правой «таблице конфигурации параметров» каждая строка определяет один параметр запроса:

Поле Описание
Имя параметра field Должно строго совпадать с :имя_параметра в SQL
Метка label Текст, отображаемый в форме
Тип компонента type text / number / select / radio / date / month / datetime / hidden / temp
Статические опции static_options Формат ключ:значение,ключ:значение
Динамический API / SQL Поддерживает плейсхолдеры {имя_переменной} для связывания параметров

Связывание параметров (каскадная фильтрация)

Это весьма полезная функция модуля FORM: когда подчинённый выпадающий список зависит от вышестоящего параметра (например, после «выбора организации» загружается «список отделов»), в api_url или query_sql можно использовать плейсхолдер вида {P_OU_ID}.

При изменении значения вышестоящего параметра система автоматически обновляет опции подчинённого списка — без дополнительного JavaScript-кода.

В нижней части правой панели также есть область предпросмотра в реальном времени: после настройки параметров сразу виден результат рендеринга, а сгенерированный HTML-код можно одной кнопкой «скопировать и применить» в редакторе.

4.4 Модуль HTML: представление результатов

После выполнения отчёта, в каком виде результаты представляются пользователю? Этим занимается модуль HTML.

На правой панели «Конфигурация компонентов HTML-представления» можно определить несколько блоков отображения, каждый из которых включает:

  • ID контейнера
  • Заголовок
  • Ширина сетки (1–12)
  • Тип компонента: table (таблица), chart (диаграмма), card (карточка показателей), custom (пользовательский контейнер)
  • Тип диаграммы (line / bar)
  • Сопоставление полей осей X/Y

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

Этот уровень дизайна делает «презентационную часть» отчёта также конфигурируемой — больше не нужно писать отдельную фронтенд-страницу для каждого отчёта.

4.5 Процесс публикации

Весь процесс проходит по одной линии:

  1. Создайте отчёт (статус — Draft);
  2. Войдите в дизайнер, последовательно настройте SQL → FORM → HTML;
  3. Нажмите «Сохранить всё»;
  4. Вернитесь к списку отчётов, измените статус на Release;
  5. Обычный пользователь после входа увидит и сможет выполнить отчёт в соответствующем меню ответственности.

V. С точки зрения пользователя: выбор отчёта → заполнение параметров → ожидание результата

Путь обычного пользователя очень прост:

  1. Вход на главную страницу портала (поддерживается локальная учётная запись или проверка через Oracle EBS ERP);
  2. Нажмите «Новый запрос отчёта»;
  3. В меню отчётов просматривайте по группам ответственности или ищите по названию;
  4. Выберите отчёт, заполните форму параметров;
  5. Отправьте — система выполнит асинхронно;
  6. В списке «Мои запросы» отслеживайте статус; после завершения скачивайте результаты в формате Excel / HTML / JSON / TEXT через выпадающее меню «Вывод».

Переход состояний запроса

Queued (в очереди) → Processing (выполняется) → Success (успешно) → Error (ошибка) → Terminated (превышено время ожидания)

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

VI. Примечательные дизайнерские решения

1. Отчёт = три кода + три JSON-конфигурации

SQL, FORM и HTML имеют каждый как «код», так и «JSON-конфигурацию» — это оставляет пространство для дальнейшего управления версиями и переиспользования шаблонов.

2. Экспорт в Excel строго зависит от метаданных столбцов

Это не «сначала экспорт, потом постобработка» — стиль Excel определяется на этапе проектирования. Это означает: разработчик отчёта полностью контролирует качество вывода, без необходимости в дополнительных скриптах постобработки.

3. Связывание параметров без JavaScript

Механизм плейсхолдеров для реализации зависимости параметров снижает порог фронтенд-разработки.

4. Изоляция прав на запросы

Обычный пользователь видит только свои записи запросов; администратор — все. При отправке ERP-пользователем система также проверяет организационные права OU/ORG, предотвращая несанкционированный доступ.

5. Прозрачное хранение данных

Все бизнес-данные хранятся в conf/data.dat, файлы результатов создаются в каталоге data/. При миграции достаточно скопировать каталоги conf/ и data/ — всё предельно ясно.

VII. Сценарии применения и ограничения

Для каких сценариев подходит?

  • Единое управление внутренними отчётами данных предприятия, особенно для команд, уже использующих Oracle EBS;
  • Быстрая доставка отчётных задач с возможностью отслеживания определения, выполнения и результатов отчётов;
  • Снижение затрат на разработку отчётов — специалисты по SQL или DBA могут самостоятельно настраивать отчёты.

На что обратить внимание

  • Текущая версия по умолчанию адаптирована под Oracle; для других СУБД (например, MySQL, PostgreSQL) потребуется самостоятельная адаптация;
  • Без авторизации количество отчётов ограничено 3; для производственного использования необходим легальный файл авторизации;
  • Изменение системной конфигурации (порт, пароль Oracle и т. д.) требует перезапуска службы (кроме настройки тайм-аута Session).

Заключение

Общее впечатление от SQLVantage: прагматичность, сдержанность, удобство.

Система не гонится за «всем и сразу», а сосредотачивается на ключевом сценарии «отчёты», связывая управление SQL, взаимодействие через параметры, представление результатов и изоляцию прав в единую прозрачную цепочку.

Для команд, испытывающих трудности с управлением отчётами, SQLVantage — достойный вариант: его можно использовать как производственный инструмент или как учебный пример для понимания дизайна легковесных веб-систем отчётов.

Если вы тоже ищете простую в использовании, саморазвёртываемую систему отчётов — стоит начать с SQLVantage.

Данная статья подготовлена на основе официальной документации SQLVantage v1.0.2 (выпуск 2026-07-15). Подробнее — в многоязычной документации, поставляемой с проектом (каталог docs/).