Overview

Reporting

Reportistica operativa su route #/<route>/report-viewer.

Screenshot reference (manuale utente)

  • manual__reporting__01.png: apertura report viewer con rendering report e toolbar operativa.
  • manual__reporting__02.png: esempio runtime con parametri/filtro applicati al report.

Report viewer

Il report-viewer esegue e mostra report Stimulsoft associati alla route metadata corrente.

Feature principali:

  • apertura report da list/grid con nome report (reportName) e parametri opzionali.
  • rendering dati lato runtime con toolbar viewer (zoom, export, stampa).
  • supporto filtro/parametri propagati dalla pagina chiamante.

Riferimento al designer

Per creazione o modifica del report .mrt, vedi la sottosezione

Report designer in Designer & Workflow.

Parametri report (variabili SQL filtrate)

Per filtrare un report su una specifica entita (es. stampa di una singola fattura), il pattern canonico e':

1. Nel `.mrt`: dichiara una Variable nel Dictionary con AllowUseAsSqlParameter = True (Stimulsoft 2026.1+). Usa la variabile come @nomeParam nelle SqlCommand:

Snippet 1SQL
   SELECT ... FROM fatture_inviate WHERE id = @fattura_id
   SELECT ... FROM fatture_inviate_righe WHERE fattura_id = @fattura_id

> Trappola: NON usare il pattern legacy <StiDataParameter> block nel DataSource — non e' piu' supportato dalla versione corrente di Stimulsoft e produce ArgumentException: Int32 is not a valid value for Int32. (Parameter 'value') durante report.Load().

2. Nell'URL del viewer: passa il valore via query param parameters (NON come query param diretto):

Snippet 2text
   ✅ #/<route>/report-viewer?reportName=Report.mrt&parameters=fattura_id%7C%7Ceq%7C%7C42
   ❌ #/<route>/report-viewer?reportName=Report.mrt&fattura_id=42   <-- ignorato

Sintassi parameters URL-encoded: nome||eq||valore (separati da @ per piu' parametri).

3. Da row action o link UI: usa il callback canonico per costruire l'URL:

Snippet 3js
   const recordId = (record && record.id && record.id.value) ?? (record && record.id);
   const params = 'fattura_id||eq||' + recordId;
   window.location.hash = '#/<route>/report-viewer?reportName=Report.mrt&parameters='
                       + encodeURIComponent(params);

Setup backend obbligatorio

In appsettings.json dell'app, deve esistere AppSettings.reportQueryTimeout (es. "120"). Senza, ReportViewerController.prepareDataSql lancia int.Parse(null) → 500. Esempio:

Snippet 4JSON
"AppSettings": {
  "reportQueryTimeout": "120"
}

Screenshot

reporting / report viewer filter
reporting / report viewer filter
reporting / report viewer main
reporting / report viewer main