Definicje elementów

Na raportach prezentowane są dane określane w definicjach raportów jako elementy. Elementy znajdują się w sekcji Elements definicji raportu, zaś poszczególny element opatrzony są sekcją Element według następującego przykładu:

Przyklad
<Elements>
<Element>

</Element>
</Elements>
Uwaga
Aby wstawiane polecenia SQL działały poprawnie należy umieścić je w znaczniku <![CDATA[ polecenieSQL ]> w celu wyłączenia spod analizy deserializatora XML.

 

Element raportu może zawierać następujące sekcje:

Nazwa Id
Opis Identyfikator elementu
Zawartość Wartość liczbowa
Parametry Brak

 

Nazwa HeaderSql
Opis Wartość tekstowa lub polecenie SQL zwracające wartość wyświetlaną w nazwie elementu na raporcie
Zawartość Dowolna wartość tekstowa lub polecenie SQL
Parametry Brak

 

Nazwa Type
Opis Typ elementu
Zawartość Jedna z poniższych wartości tekstowych:

  • Text – tekst
  • Bar – wykres słupkowy
  • Table – tabela
  • PivotTable – tabela
  • Pie – wykres kołowy
  • Line – wykres liniowy
Parametry Brak

 

Nazwa Sql
Opis Polecenie SQL zwracające dane wyświetlane w elemencie
Zawartość Polecenie SQL
Parametry Brak

 

Nazwa IsExecute
Opis Znacznik decydujący czy polecenie SQL z sekcji Sql ma zostać wykonane
Zawartość Wartość true, false lub polecenie SQL zwracające jedną z tych wartości
Parametry Brak

 

Nazwa TableHeader
Opis Nagłówek tabeli. Używane z typem elementu Table.
Zawartość Jeden element LayoutRow i jeden HeaderRow
Parametry Brak
Elementy podrzędne
  • LayoutRow
  • HeaderRow

 

Nazwa TableHeader: LayoutRow
Opis Znacznik wiersza tabeli
Zawartość Jeden lub więcej element SpaceColumn
Parametry Brak
Elementy podrzędne
  • SpaceColumn

 

Nazwa TableHeader: LayoutRow: SpaceColumn
Opis Określa szerokość kolumny
Zawartość Brak
Parametry
  • width – wartość liczbowa określająca szerokość kolumny
Przyklad
<LayoutRow>
<SpaceColumn width="10"/>
<SpaceColumn width="5"/>
<SpaceColumn width="10"/>
<SpaceColumn width="5"/>
</LayoutRow>

 

Nazwa TableHeader: HeaderRow
Opis Znacznik nagłówka tabeli
Zawartość Jeden lub więcej element TextColumn
Parametry Brak
Elementy podrzędne
  • TextColumn

 

Nazwa TableHeader: HeaderRow: TextColumn
Opis Określa nazwę kolumny w tabeli
Zawartość Dowolna wartość tekstowa
Parametry
  • align – wyrównanie zawartości (left, right, center)
  • precision – wartość liczbowa określająca precyzję
Przyklad
<HeaderRow>
<TextColumn>Rejon</TextColumn>
<TextColumn>Plan</TextColumn>
<TextColumn precision="2">Realizacja</TextColumn>
<TextColumn precision="2">%</TextColumn>
</HeaderRow>

 

Przyklad
Element typu Table:

<Element>
<Id>1</Id>
<HeaderSql><![CDATA[select 'Zrealizowane pozycje w okresie ' + left(convert(varchar, @DateFrom, 120), 10)  + ' - ' + left(convert(varchar, @DateTo, 120), 10)]]></HeaderSql>
<Type>Table</Type>
<Sql>
<![CDATA[
set @DateTo = dateadd(second, -1, dateadd(day, 1, @DateTo))
declare @CurrentOperator nvarchar(128)
select @CurrentOperator = UserName from WMS.vCurrentSession
;with data as
(
select 
CONVERT(date, coalesce(i.RealizationDate, d.DocumentAceptanceDate)) as RealizationDate,
a.Code as Article, 
d.NumberString as DocumentNumber,
dt.Code as DocumentType, 
luo.Barcode as LogisticUnit, 
i.OperatorLogin as LoginName,
i.RealizedQuantity
from wms.Documents d with (nolock)
join wms.vItems i with (nolock) on d.Id=i.DocumentId
join [WMS].[Dispatcher_GetSubordinateOperators](@CurrentOperator, 1) S on S.SubordinateLoginName = i.OperatorLogin
join wms.varticles a with (nolock) on a.id = i.articleid
join wms.DocumentTypes dt with (nolock) on d.DocumentTypeId=dt.Id
left join wms.LogisticUnitObjects luo with (nolock) on i.LogisticUnitId=luo.Id
WHERE d.DocumentStateId = 2 and 
((i.RealizationPercent >= 100 and i.RealizationDate between @DateFrom and @DateTo) 
or (i.RealizationPercent > 0 and d.DocumentAceptanceDate between @DateFrom and @DateTo)))
select 
left(convert(varchar, RealizationDate, 120), 10) as Date,
Article, 
DocumentNumber,  
DocumentType, 
LogisticUnit, 
LoginName, 
sum(RealizedQuantity) as Quantity
from data
group by RealizationDate, Article, DocumentNumber, DocumentType, LogisticUnit, LoginName
]]>
</Sql>
<TableHeader>
<LayoutRow>
<SpaceColumn width="10"/><SpaceColumn width="13"/><SpaceColumn width="8"/><SpaceColumn width="4"/><SpaceColumn width="6"/><SpaceColumn width="10"/>&lt;SpaceColumn width="10"/>
</LayoutRow>
<HeaderRow>
<TextColumn>Data</TextColumn>
<TextColumn>Towar</TextColumn>
<TextColumn>Dyspozycja</TextColumn>
<TextColumn>Typ</TextColumn>
<TextColumn>Ilość</TextColumn>
<TextColumn>Jednostka logistyczna</TextColumn>
<TextColumn>Wykonał</TextColumn>
</HeaderRow>
</TableHeader>
<NonGroupingColumns>
<SqlColumn>Date</SqlColumn>
<SqlColumn>Article</SqlColumn>
<SqlColumn>DocumentNumber</SqlColumn>
<SqlColumn>DocumentType</SqlColumn>
<SqlColumn align="right">Quantity</SqlColumn>
<SqlColumn>LogisticUnit</SqlColumn>
<SqlColumn>LoginName</SqlColumn>
</NonGroupingColumns>
</Element>

Tak zdefiniowany element w aplikacji wygląda następująco:

 

Nazwa NonGroupingColumns
Opis Łączy kolumny tabeli z kolumnami tabeli wynikowej polecenia SQL.
Zawartość Brak
Parametry Brak
Elementy podrzędne
  • SqlColumn

 

Nazwa TotalSummaryColumns
Opis Wiersz zawierający podsumowania poszczególnych kolumn na podstawie wcześniejszych wartości
Zawartość Brak
Parametry Brak
Elementy podrzędne
  • TextColumn
  • SqlColumn

 

Przyklad

Definicja powyższego wiersza podsumowania wygląda następująco:

<TotalSummaryColumns>
<TextColumn align="center">Podsumowanie</TextColumn>
<TextColumn></TextColumn>
<SqlColumn align="center" precision="2">TotalOrdersNetValue</SqlColumn>
<SqlColumn align="center" precision="2">TotalOrdersGrossValue</SqlColumn>
<SqlColumn align="center">TotalOrdersNumber</SqlColumn>
</TotalSummaryColumns>

 

Nazwa PivotTable
Opis Tabela dynamiczna. Używane z typem elementu PivotTable.
Zawartość Brak
Parametry
  • showTotalSummary – określa czy w ostatnim wierszu tabeli ma być wyświetlane podsumowanie w postaci sumy końcowej. Parametr może przyjmować wartość true lub false. Brak parametru oznacza wartość false.
  • visibleRows – wartość liczbowa określająca ilość wyświetlanych wierszy (pozostałe widoczne będą po przesunięciu scrollbar’a w dół)
Elementy podrzędne
  • RowTemplate

 

Nazwa PivotTable: RowTemplate
Opis Określa wiersz tabeli
Zawartość Brak
Parametry Brak
Elementy podrzędne
  • ColumnTemplate

 

Nazwa PivotTable: RowTemplate: ColumnTemplate
Opis Określa zawartość poszczególnych kolumn tabeli
Zawartość Brak
Parametry
  • width – szerokość elementu
  • name – nazwa kolumny widoczna w wyświetlanym raporcie
  • nameSql – polecenie sql
  • sqlColumn – nazwa kolumny wynikowej
  • showSummary – znacznik czy pokazać podsumowanie
  • align – wyrównanie zawartości komórki tabeli
  • groupingType – typ grupowania wyników, np. Sum
  • sortOrder – kolejność sortowania
  • precision – precyzja
Przyklad
Element typu Pivot:

<Element>
<Id>1</Id>
<HeaderSql>
<![CDATA[select 'Szczegółowy raport pracy magazynierów za okres ' + left(convert(varchar, @DateFrom, 120), 10)  + ' - ' + left(convert(varchar, @DateTo, 120), 10)]]>
</HeaderSql>
<Type>PivotTable</Type>
<Sql>
<![CDATA[
set @DateTo = dateadd(second, -1, dateadd(day, 1, @DateTo))
declare @CurrentOperator nvarchar(128)
select @CurrentOperator = UserName from WMS.vCurrentSession
;with DocumentsOperatorsData as
(select distinct i.OperatorLogin, i.DocumentId from wms.items i with (nolock)
where I.RealizationPercent > 0 and i.OperatorLogin is not null), data as
(select O.LoginName, E.Name, E.Surname, DT.Code AS DispositionCode, 
case DT.Id 
when 1 then 'Awizo dostawy' 
when 2 then 'Zlecenie wydania z magazynu' 
when 3 then 'Przesunięcie wewnątrzmagazynowe' 
when 4 then 'Inwentaryzacja' 
when 5 then 'Bilans stanu towarów' end as DispositionName,
left(convert(date, d.DocumentAceptanceDate), 10) as DocumentDate, count(*) as DispositionsCount
from [WMS].[vOperators] O with (nolock)
join [WMS].[Dispatcher_GetSubordinateOperators](@CurrentOperator, 1) S on S.SubordinateLoginName = O.LoginName
left join @Operators_SelectedOperators so on so.Item = O.LoginName
join [WMS].[vEmployees] E with (nolock) ON E.Id = O.EmployeeId
join DocumentsOperatorsData DO on DO.OperatorLogin = O.LoginName
join [WMS].[Documents] D with (nolock) on D.Id = DO.DocumentId 
join [WMS].[DocumentTypes] DT with (nolock) on Dt.Id = D.DocumentTypeId
where d.DocumentAceptanceDate is not null and d.DocumentAceptanceDate between @DateFrom and @DateTo
and (so.Item is not null or @Operators_SelectedOperators_all = 1)
group by O.LoginName, E.Name, E.Surname, DT.Code, DT.Id, convert(date, d.DocumentAceptanceDate))
select LoginName + 
case when (Name <> '' or Surname <> '') then ' (' + Name + ' ' + Surname + ')' else '' end as Operator, DispositionCode + ' (' + DispositionName + ')' as DispositionType, DocumentDate, DispositionsCount from data
]]>
</Sql>
<PivotTable showTotalSummary="true">
<RowTemplate>
<ColumnTemplate width="2" name="Operator" sqlColumn="Operator" showSummary="true"/>
<ColumnTemplate width="2" name="Typ dyspozycji" sqlColumn="DispositionType" showSummary="true"/>
<ColumnTemplate width="2" name="Data wykonania" sqlColumn="DocumentDate" />
<ColumnTemplate width="1" name="Ilość zadań" groupingType="Sum" sqlColumn="DispositionsCount" align="right" />
</RowTemplate>
</PivotTable>
</Element>

Tak zdefiniowany element w aplikacji wygląda następująco:

 

Nazwa ChartColumns
Opis Wykres.
Zawartość Brak
Parametry Brak
Elementy podrzędne
  • LabelsSqlColumn
  • SeriesSqlColumn
  • ValuesSqlColumn

 

Nazwa ChartColumns: LabelsSqlColumn
Opis Etykieta wartości wynikowych
Zawartość Dowolna wartość tekstowa
Parametry
  • title – nazwa etykiety wyświetlana jako nazwa kolumny wyświetlanej pod wykresem kołowym

 

Nazwa ChartColumns: SeriesSqlColumn
Opis Nazwa serii dla wykresów wieloseryjnych
Zawartość Dowolna wartość tekstowa
Parametry
  • wartość tekstowa

 

Nazwa ChartColumns: ValuesSqlColumn
Opis Znacznik wartości wynikowych
Zawartość Dowolna wartość tekstowa
Parametry
  • precision – precyzja
  • title – wartość tekstowa wyświetlana jako nazwa kolumny w tabeli wyświetlanej pod wykresem kołowym
  • titileSql – polecenie SQL zwracające dane wartości
  • align – wyrównanie zawartości (left, right, center)
Przyklad
Element typu Line wykorzystujący ChartColumns:

<Element>
<Id>1</Id>
<HeaderSql>...</HeaderSql>
<Type>Line</Type>
<Sql>...</Sql>
<ChartColumns>
<LabelsSqlColumn>Date</LabelsSqlColumn>
<SeriesSqlColumn>LoginName</SeriesSqlColumn>
<ValuesSqlColumn>DispositionsCount</ValuesSqlColumn>
</ChartColumns>
</Element>

Tak zdefiniowany element w aplikacji wygląda następująco:

 

 

Czy ten artykuł był pomocny?

Leave A Comment?