Отчёт из PostgreSQL в приложении .NET 5 под управлением Astra Linux

04.12.2020

Сегодня мы поговорим о российской операционной системе Astra Linux. Эта система получила в последнее время довольно широкое распространение. Разработкой и сопровождением Astra Linux занимается АО «НПО РусБИТех». Существуют разные редакции системы, в том числе и специального назначения. Мы будем рассматривать систему общего назначения Astra Linux Орёл 2.12 в связке с СУБД PostgreSQL 9.6.15 и платформой .NET 5, с помощью которых мы попробуем сделать простое веб-приложение с использованием генератора отчётов FastReport .NET Core. Стоит отметить, что большинство моментов, которые мы будем применять на практике далее, также будут работать и в редакциях Astra Linux специального назначения (Смоленск, Новороссийск, Севастополь и других).

Начнем с установки операционной системы Astra Linux

Скачать ISO образ Astra Linux можно с официального сайта.

Подробно процесс установки и первоначальной настройки рассказывать нет смысла – есть очень подробная документация на сайте производителя. Вся процедура проста и понятна – достаточно следовать инструкциям на экране.

Если вы планируете установить систему для экспериментов в качестве виртуальной машины  Hyper-V (входит в состав Windows Professional и Enterprise), то следует обратить внимание на следующие моменты:

  • Виртуальная машина должна быть первого поколения;
  • Нужно использовать IDE контроллер для жесткого диска и DVD-ROM;
  • Поддерживается legacy сетевой адаптер;
  • При старте инсталляции на первом экране нужно выбрать опцию установки acpi=off;
    После установки системы нужно скачать с помощью браузера пакет поддержки Hyper-V и затем установить его командой в консоли:
    sudo dpkg -i hyperv-daemons_5.3.9-2_amd64_signed.deb
    после этого нужно перезагрузить систему.

Astra Linux Орёл

Для экспериментов нам нужен фреймворк .NET 5

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

wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/9/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

После этого нужно обновить репозиторий пакетов и установить .NET 5 следующими командами:

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y dotnet-sdk-5.0

Правильность установки .NET 5 можно проверить, выполнив команду запроса версии в консоли (5.0.100 на момент написания статьи):

dotnet --version

Если вы планируете всерьез заниматься разработкой программ на Astra Linux, то вам понадобится редактор Visual Studio Code. Для того, чтобы его установить, нужно скачать пакет с официального сайта. Далее пакет нужно установить (имя файла пакета может отличаться, указано актуальное на момент написания статьи):

sudo dpkg -i code_1.51.1-1605051630_amd64.deb

Для дальнейшей работы нам нужны Git и библиотека libgdiplus, ставим их с помощью команд:

sudo apt install git
sudo apt install libgdiplus

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

git clone https://github.com/fediachov/FastReportSamples

Настало время установить и настроить СУБД PostgreSQL

Вероятно, вы всё уже установили в процессе выбора компонентов операционной системы. Если нет, то выполняем команду в консоли:

sudo apt install postgresql-astra postgresql-contrib

Ждем завершения установки. Убедимся, что установлена нужная нам версия – выполним в консоли команду запуска утилиты psql (важный момент - она должна работать от имени пользователя postgres):

sudo -u postgres psql

Далее вводим команду получения номера версии:

SELECT version();

Проверка номера версии PostgreSQL

Выходим из psql (клавиши Ctrl+D) и переходим к настройке СУБД. Если предполагается доступ к СУБД с других компьютеров (или хостовой системы в случае с Hyper-V), то необходимо добавить нужную подсеть в файл конфигурации /etc/postgresql/9.6/main/pg_hba.conf:

host all all 192.168.1.0/24 md5

Также нужно внести изменения в файл конфигурации /etc/postgresql/9.6/main/postgresql.conf:

# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;

После изменений нужно перезапустить Postgres:

sudo systemctl restart postgresql

Теперь нужно создать тестовую базу данных и пользователя с нужными правами для доступа к ней. Для этого снова запускаем утилиту psql и выполняем в ней следующие команды:

CREATE DATABASE frdemo;
create user fastreport with encrypted password 'fastreport';
grant all privileges on database frdemo to fastreport; 

Выходим из psql и импортируем тестовую базу из дампа примера (дамп находится в папке ~/FastReportSamples/PostgreSQL/database):

cd ~/FastReportSamples/PostgreSQL/database
sudo -u postgres psql frdemo < fr-pg-demo.sql

Чтобы убедиться, что все наши таблицы созданы и доступны, запускаем psql и выполняем там команды (назначение прав, подключение к базе frdemo, вывод списка таблиц, вывод содержимого таблицы):

GRANT ALL ON ALL TABLES IN SCHEMA public TO fastreport;
\c frdemo
\dt
SELECT customerid, companyname, contactname FROM customers;

Вывод таблицы в PostgreSQL

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

Собственно, создание отчёта из PostgreSQL

Для создания и редактирования шаблона отчёта был использован продукт FastReport for DBA – в него уже встроен плагин для доступа к PostgreSQL. Если же вы планируете работать с PostgreSQL из FastReport .NET, то вам предварительно нужно скомпилировать плагин из папки установки FastReport .NET \Extras\Connections\FastReport.Postgres, затем зарегистрировать полученную сборку в настройках дизайнера. Также возможно использование дизайнера FastReport Designer Community Edition из комплекта поставки FastReport Open Source, но следует помнить, что этот дизайнер сильно ограничен по возможностям.

Вся работа с шаблоном отчёта на данном этапе проводилась в операционной системе Windows с подключением к СУБД PostgreSQL, работающей на Astra Linux. Упреждая вопросы, сразу скажу, что можно было бы вести разработку шаблона в графическом интерфейсе Linux, но на данный момент есть единственный продукт способный это делать – FastReport Mono. Настройка и использование фреймворка Mono на Astra Linux выходит за рамки данной статьи. Другой вариант – использование FastReport Online Designer, но он требует приобретения лицензии и не подходит для наших примеров в демонстрационной редакции.

Итак, запускаем дизайнер отчётов FastReport, выбираем создание нового отчёта и переходим к настройке подключения к СУБД PostgreSQL:

Подключение к PostgreSQL из FastReport

Далее выбираем таблицу для экспериментов, в нашем случае это employees:

Выбор таблиц для отчёта из PostgreSQL

Далее переходим к разработке шаблона отчёта. Простые руководства как сделать простой отчёт, можно посмотреть на Youtube канале. В результате мы получили такой результат:

Дизайнер шаблона отчёта FastReport

После создания шаблона отчёта можно его протестировать – вызвать предварительный просмотр:

Просмотр отчёта из PostgreSQL

В нашем случае именно этот шаблон отчёта попал к вам вместе с демонстрационным примером, который вы скачали ранее с GitHub.

Строим отчёт в Astra Linux

Возвращаемся к сборке примера веб-приложения. В качестве прототипа послужил стандартный шаблон MVC приложения, который создается командой:

dotnet new mvc

После создания проекта была добавлена модель /Models/HomeModel.cs:

public class HomeModel
{
 public WebReport WebReport { get; set; }
}

Затем были внесены правки в контроллер /Controllers/HomeController.cs - добавлен следующий код:

public IActionResult Index()
{
 var model = new HomeModel();
 model.WebReport = new WebReport();
 model.WebReport.Report.Load(
 Path.Combine("Reports", "postgres.frx"));
 model.WebReport.DesignerLocale = "ru";
 model.WebReport.Width = "100%";
 model.WebReport.Height = "800";
 // model.WebReport.Mode = WebReportMode.Designer;
 return View(model);
}

В файле Startup.cs в функцию Configure добавлен вызов:

app.UseFastReport();

Затем зарегистрирован плагин для подключения к PostgreSQL:

FastReport.Utils.RegisteredObjects.AddConnection(
 typeof(FastReport.Data.PostgresDataConnection));

Чтобы была возможность обращаться к запущенному приложению с других компьютеров в подсети, в файле Program.cs изменена функция CreateHostBuilder:

1
2
3
4
5
6
7
public static IHostBuilder CreateHostBuilder(string[] args) =>
 Host.CreateDefaultBuilder(args)
 .ConfigureWebHostDefaults(webBuilder =>
 {
 webBuilder.UseStartup<Startup>();
 webBuilder.UseUrls("http://0.0.0.0:8080");
 });

В папке Reports размещен тестовый шаблон отчёта, который был сделан ранее.

В проекте использованы Nuget пакеты FastReport .NET, они будут автоматически скачаны в момент начала сборки. Перечень пакетов хранится в файле core.csproj. Эти пакеты можно заменить на аналогичные по функционалу от продукта FastReport Open Source, если вам будет достаточно его возможностей.

Для сборки и запуска веб-приложения нужно выполнить следующие команды:

cd ~/FastReportSamples/PostgreSQL/dotnet-5
dotnet build
dotnet run

 Запуск .net5 приложения на Astra Linux

Запускаем браузер и открываем адрес http://localhost:8080

Отчёт в Astra Linux

Если у вас есть другой компьютер под рукой (например, хостовый компьютер в случае с Hyper-V), запускаем браузер там и обращаемся к серверу под управлением Astra Linux:

Отчёт на сервере Astra Linux

Открываем отчёт для редактирования в Web

Если внимательно изучить код тестового приложения, то можно заметить закомментированную строку в файле /Controllers/HomeController.cs:

// model.WebReport.Mode = WebReportMode.Designer;

Если убрать этот комментарий, наш отчёт будет открыт в режиме редактирования в FastReport Online Designer. В нашем примере его код должен находиться в папке /wwwroot/WebReportDesigner/. В данный момент там находится заглушка в виде файла index.html. Если у вас возникнет желание попробовать тестовый вариант FastReport Online Designer в этом или любом другом проекте, то вам необходимо написать соответствующий запрос в службу техподдержки компании Fast Reports support@fastreport.ru

FastReport Online Designer Astra Linux

Таким образом, редактирование будет доступно из любого современного браузера на любой платформе (включая планшеты, фаблеты и т.д.)

Нюансы

  • Нужно использовать идентичные шрифты в системе, где ведется разработка шаблонов отчётов и на сервере (или веб-приложении, если используются шрифты приложения) – это позволит избежать проблем с внешним видом веб-отчётов и PDF документов;
  • При работе с Astra Linux в консоли системы виртуализации Hyper-V интерфейс довольно сильно тормозит –  лучше установить VNC или настроить x-server на хостовом компьютере (например Xming);
  • Если есть необходимость запустить тестовое приложение под управлением .NET Core 2.2, то тестовый пример можно найти в папке ~/FastReportSamples/PostgreSQL/dotnet-core-2.2;
  • Есть возможность разработки не только веб-приложений, но и консольных программ - это позволит строить отчёты в PDF (и других форматах) путем вызова таких программ из других приложений;
  • Если вам нужна работа с отчётами в графическом интерфейсе Linux, то следует воспользоваться библиотекой FastReport Mono, так как поддержки интерфейса Linux в .NET 5 пока нет.

Подведем итоги

  • У нас есть возможность разработки полноценного веб-приложения на платформе .NET 5 под управлением операционной системы Astra Linux;
  • FastReport работает в связке с PostgreSQL;
  • Продукты семейства FastReport могут работать в кросс-платформенных решениях и объединять в инфраструктуре разные платформы;
  • Библиотеки Fast Reports имеют варианты поставки в комплекте с исходными кодами, что делает возможной последующую сертификацию.
AstraLinux Core DBA FastReport Libgdiplus Linux MVC .NET PostgreSQL
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
8 апреля 2026

Новые возможности работы с бэндами в дизайнере FastReport .NET

В версии 2026.2 FastReport .NET появилась возможность изменять порядок бэндов прямо в дизайнере — простым перетаскиванием мышью.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»