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:
<Element>
…
</Element>
</Elements>
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:
|
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 |
|
Nazwa | TableHeader: LayoutRow |
Opis | Znacznik wiersza tabeli |
Zawartość | Jeden lub więcej element SpaceColumn |
Parametry | Brak |
Elementy podrzędne |
|
Nazwa | TableHeader: LayoutRow: SpaceColumn |
Opis | Określa szerokość kolumny |
Zawartość | Brak |
Parametry |
|
<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 |
|
Nazwa | TableHeader: HeaderRow: TextColumn |
Opis | Określa nazwę kolumny w tabeli |
Zawartość | Dowolna wartość tekstowa |
Parametry |
|
<HeaderRow> <TextColumn>Rejon</TextColumn> <TextColumn>Plan</TextColumn> <TextColumn precision="2">Realizacja</TextColumn> <TextColumn precision="2">%</TextColumn> </HeaderRow>
<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"/><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 |
|
Nazwa | TotalSummaryColumns |
Opis | Wiersz zawierający podsumowania poszczególnych kolumn na podstawie wcześniejszych wartości |
Zawartość | Brak |
Parametry | Brak |
Elementy podrzędne |
|
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 |
|
Elementy podrzędne |
|
Nazwa | PivotTable: RowTemplate |
Opis | Określa wiersz tabeli |
Zawartość | Brak |
Parametry | Brak |
Elementy podrzędne |
|
Nazwa | PivotTable: RowTemplate: ColumnTemplate |
Opis | Określa zawartość poszczególnych kolumn tabeli |
Zawartość | Brak |
Parametry |
|
<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 |
|
Nazwa | ChartColumns: LabelsSqlColumn |
Opis | Etykieta wartości wynikowych |
Zawartość | Dowolna wartość tekstowa |
Parametry |
|
Nazwa | ChartColumns: SeriesSqlColumn |
Opis | Nazwa serii dla wykresów wieloseryjnych |
Zawartość | Dowolna wartość tekstowa |
Parametry |
|
Nazwa | ChartColumns: ValuesSqlColumn |
Opis | Znacznik wartości wynikowych |
Zawartość | Dowolna wartość tekstowa |
Parametry |
|
<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: