Raporty
Comarch WMS Zarządzanie umożliwia kierownikowi monitorowanie na bieżąco efektów pracy magazynierów, zrealizowanych dyspozycji oraz analizę ruchów magazynowych przez dostęp do odpowiednich raportów.
Po zaznaczeniu tej opcji operator będzie mieć dostęp do standardowych raportów:
Jeżeli opcja “Dostęp do modułu raportów” zostanie odznaczona, wówczas w menu głównym aplikacji nie będzie wyświetlana zakładka Raporty.
1. Uprawnienia do modułu Raporty
Aby operator mógł przeglądać raporty należy nadać mu odpowiednie uprawnienia. W tym celu należy przejść do Ustawień Operatorów i dla wybranej grupy operatorów zaznaczyć opcję „Dostęp do modułu raportów” w sekcji Zarządzanie – Inne uprawnienia (Rys. poniżej).
Po zaznaczeniu tej opcji operator będzie mieć dostęp do standardowych raportów:
Jeżeli opcja “Dostęp do modułu raportów” zostanie odznaczona, wówczas w menu głównym aplikacji nie będzie wyświetlana zakładka Raporty.
Uwaga
W aplikacji Comarch WMS Zarządzanie istnieje możliwość modyfikowania już istniejących oraz dodawania/stworzenia własnych, nowych raportów dostosowanych do potrzeb konkretnych Klientów. Więcej informacji na ten temat znajduje się w artykule Definicje raportów dostępnych w WMS Zarządzanie.
2. Raporty standardowe
W ramach standardowych raportów w Zarządzaniu udostępnione zostały:- Raport średniej wydajności (prezentujący średnią realizację dyspozycji, towarów oraz pozycji w zadanym przedziale czasu przez operatów z wykorzystaniem dostępnych procesów),
- Raport zrealizowanych dyspozycji przez operatorów (według daty wykonania)-jakie dokumenty magazynowe (AWD/ZWM/MP) zostały zrealizowane w konkretnym przedziale czasowym przez operatorów,
- Raport zrealizowanych dyspozycji (grupowanie według dni lub miesięcy)-dane dotyczące dyspozycji zrealizowanych w konkretnym przedziale czasowym),
- Szczegółowa analiza wydajności pracowników (prezentujący wykres wydajności dziennej pracowników, dane odnośnie średniej wydajności pracowników, rodzaje dyspozycji realizowanych przez pracowników oraz tabelę dziennej wydajności, czyli ilość dyspozycji zrealizowanych w ciągu dni),
- Raport operacji magazynowych powiązanych z towarem (prezentujący listę zadań wykonanych w konkretnym przedziale czasowym dla towarów),
- Raport operacji magazynowych powiązanych z położeniem (prezentujący ruchy towarów w obrębie konkretnego magazynu na położeniach w konkretnych ramach czasowych, widoczne są operacje przyjęć, wydań i przesunięć dla towarów znajdujących się na wskazanych położeniach w raporcie),
- Raport zrealizowanych pozycji (prezentowana jest lista pozycji zrealizowana we wskazanym przedziale czasowym prezentująca dyspozycje, zasoby w ramach tych dyspozycji, operatora, który zrealizował pozycje oraz ilość),
- Ranking magazynierów (prezentowany jest wykres wydajności magazynierów we wskazanym przedziale czasowym według dni lub miesięcy),
- Raport wydań do kontrahenta (zestawienie ile dokumentów lub pozycji wydawanych jest dla wybranego kontrahenta w określonym przedziale czasu);
- Porównanie stanów magazynowych w WMS oraz ERP (prezentowane są stany towarów w ramach jednego magazynu z uwzględnieniem stanów magazynowych i handlowych),
- Raport stanów towarowych (prezentowana jest lista z podziałem na grupy towarowe, towary znajdujące się we wskazanej grupie oraz ilość zasobu),
- Stan jednostek logistycznych (zestawienie jednostek kaucjonowanych zajętych i pustych w ramach wskazanego magazynu).
Przykładowy raport dziennej wydajności pracowników
Definicje raportów dostępnych w WMS Zarządzanie
Definicje raportów domyślnych znajdują się w katalogu z zainstalowaną aplikacją, a dokładnie Comarch WMS\Management\ReportDefinitions\Common.
Definicja XML raportu składa się z następujących głównych sekcji:
1. Nazwa raportu
Nazwa raportu podana w elemencie <Name> jest wyświetlana na górnej belce widoku raportu oraz na kafelkach listy raportów.
Przykład użycia:
<Name>Raport wydajności pracowników</Name>
- Nazwa raportu
- Opis
- Definicje argumentów
- Definicje elementów raportu
- Definicja klas CSS
- Definicja układu elementów raportu (layout)
1. Nazwa raportu
Nazwa raportu podana w elemencie <Name> jest wyświetlana na górnej belce widoku raportu oraz na kafelkach listy raportów.
Przykład użycia:
<Name>Raport wydajności pracowników</Name>
2. Opis raportu
Opis raportu podany w elemencie jest wyświetlany na kaflach listy z raportami.
Przykład użycia:
<Description>Raport wydajności pracowników według dni</Description>
3. Elementy raportu
Raport może składać się z wielu elementów następującego typu:
- Tabela płaska
- Tabela wielopoziomowa
- Wykres słupkowy
- Wykres liniowy
- Wykres kołowy
- Tekst
Definicje elementów raportu należy umieścić w sekcjach wewnątrz sekcji :
Elementami XML wspólnymi dla każdego typu jest:
- Identyfikator elementu (unikalna liczba całkowita) w elemencie
, np. 1 ,
- Typ elementu określony w węźle
, np. PivotTable , dostępne wartości:
- Table – tabela płaska
- PivotTable – tabel wielopoziomowa
- Bar – wykres słupkowy
- Pie – wykre kołowy
- Line – wykres liniowy
- Text – element typu tekst
- Zapytanie SQL pobierające dane do elementu raportu określone w elemencie
, np.
Dodatkowo dla tabel oraz wykresów można zdefiniować tytuł wyświetlany nad elementem w sekcji <Header>, np.
<Header>Wykres dziennej wydajności pracowników</Header>.
Struktura XML wspólna dla wszystkich elementów jest następująca:
4. Definicja układu elementów raportu
W ostatniej sekcji należy określić układ poszczególnych elementów raportu, wykorzystując sekcje:
Przykładowo chcąc umieścić dwa elementy raportu jeden nad drugim należy ustawić layout w następujący sposób:
3. Elementy raportu
Raport może składać się z wielu elementów następującego typu:
- Tabela płaska
- Tabela wielopoziomowa
- Wykres słupkowy
- Wykres liniowy
- Wykres kołowy
- Tekst
Definicje elementów raportu należy umieścić w sekcjach wewnątrz sekcji :
Elementami XML wspólnymi dla każdego typu jest:
- Identyfikator elementu (unikalna liczba całkowita) w elemencie
, np. 1 ,
- Typ elementu określony w węźle
, np. PivotTable , dostępne wartości:
- Table – tabela płaska
- PivotTable – tabel wielopoziomowa
- Bar – wykres słupkowy
- Pie – wykre kołowy
- Line – wykres liniowy
- Text – element typu tekst
- Zapytanie SQL pobierające dane do elementu raportu określone w elemencie
, np.
Dodatkowo dla tabel oraz wykresów można zdefiniować tytuł wyświetlany nad elementem w sekcji <Header>, np.
<Header>Wykres dziennej wydajności pracowników</Header>.
Struktura XML wspólna dla wszystkich elementów jest następująca:
4. Definicja układu elementów raportu
W ostatniej sekcji należy określić układ poszczególnych elementów raportu, wykorzystując sekcje:
Przykładowo chcąc umieścić dwa elementy raportu jeden nad drugim należy ustawić layout w następujący sposób:
Elementami XML wspólnymi dla każdego typu jest:
- Identyfikator elementu (unikalna liczba całkowita) w elemencie
, np. 1 ,- Typ elementu określony w węźle
, np. PivotTable , dostępne wartości:- Table – tabela płaska
- PivotTable – tabel wielopoziomowa
- Bar – wykres słupkowy
- Pie – wykre kołowy
- Line – wykres liniowy
- Text – element typu tekst
- Zapytanie SQL pobierające dane do elementu raportu określone w elemencie
, np. - Typ elementu określony w węźle
Dodatkowo dla tabel oraz wykresów można zdefiniować tytuł wyświetlany nad elementem w sekcji <Header>, np.
<Header>Wykres dziennej wydajności pracowników</Header>.
Struktura XML wspólna dla wszystkich elementów jest następująca:
4. Definicja układu elementów raportu
W ostatniej sekcji należy określić układ poszczególnych elementów raportu, wykorzystując sekcje:
Przykładowo chcąc umieścić dwa elementy raportu jeden nad drugim należy ustawić layout w następujący sposób:
Definicje argumentów
Raport może wykorzystywać podane przez użytkownika aplikacji po kliknięciu w ikonę
argumenty (parametry). Wszystkie argumenty znajdują się w sekcji Arguments definicji raportu, zaś poszczególne argumenty opatrzone są sekcją Argument według następującego przykładu:
Argument może zawierać następujące sekcje:
Przykład
<Arguments>
<Argument>
...
</Argument>
</Arguments>
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.
| Nazwa | Type |
| Opis | Typ argumentu. |
| Zawartość |
|
| Nazwa | Name |
| Opis | Nazwa argumentu wykorzystywana w definicji raportu. |
| Zawartość |
|
| Nazwa | VisibleName |
| Opis | Nazwa argumentu widoczna na wyświetlanym raporcie. |
| Zawartość |
|
| Nazwa | DefaultSql |
| Opis | Wartość parametru ustawiana domyślnie. Jeżeli wartość pozostanie pusta (ustawiona na <![CDATA[]]>) to wartość parametru w aplikacji ustawi się na ‚Brak wartości’ i konieczny będzie wybór tego parametru przed otwarciem raportu. |
| Zawartość |
|
| Nazwa | ListSql |
| Opis | Wartości parametru możliwe do wyboru. |
| Zawartość |
|
Przykład
<ListSql>
<![CDATA[
SELECT 0, 'Zamówień'
UNION ALL
SELECT 1, 'Ofert'
UNION ALL
SELECT 2, 'Faktur'
]]>
</ListSql>
| Nazwa | IsRequired |
| Opis | Znacznik czy dany argument ma być wymagany przy otwarciu raportu |
| Zawartość |
|
| Nazwa | CustomTypeName |
| Opis | Nazwa typu. Używane z typem raportu Custom. |
| Zawartość |
|
| Nazwa | AutocompleteSqlProc |
| Opis | Używane z typem raportu Autocomplete. Umożliwia automatyczną podpowiedź podczas uzupełniania pola. |
| Zawartość | Brak |
| Elementy podrzędne |
|
| Nazwa | AutocompleteSqlProc: Name |
| Opis | Nazwa procedury na bazie SQL zwracającej podpowiedzi. |
| Zawartość |
|
| Nazwa | AutocompleteSqlProc: Parameters |
| Opis | Znacznik parametrów, które przyjmuje procedura. |
| Zawartość | Brak |
| Elementy podrzędne |
|
| Nazwa | AutocompleteSqlProc: Parameters: ArgumentValueParameter |
| Opis | Identyfikator argumentu. |
| Parametry |
|
| Zawartość |
|
Wskazówka
Odwołanie do poszczczególnych argumentów odbywa się poprzez znak @ np. @WarehouseId.
Przykład
Argument typu List:
Po kliknięciu w pole wartości, możliwy jest wybór wartości z listy:
<Argument> <Type>List</Type> <Name>DocumentType</Name> <VisibleName>Licz dla</VisibleName> <DefaultSql> <![CDATA[ DECLARE @docTypeId INT SET @docTypeId = (SELECT COALESCE( ( SELECT TOP 1 CAST(ruav.ArgumentValue AS nvarchar(max)) FROM esm.ReportsUserArguments ruav WHERE ruav.UserName = @LoginName AND ruav.ReportFileName = @ReportFileName AND ruav.ArgumentName = 'DocumentType' ) , ( SELECT 1) )) SELECT * FROM ( SELECT 0 as Id, 'Zamówień' as Name UNION ALL SELECT 1, 'Ofert' UNION ALL SELECT 2, 'Faktur' ) p WHERE p.Id = @docTypeId ]]> </DefaultSql> <ListSql> <![CDATA[ SELECT 0, 'Zamówień' UNION ALL SELECT 1, 'Ofert' UNION ALL SELECT 2, 'Faktur' ]]> </ListSql> </Argument>Powyższa definicja argumentu w aplikacji wygląda następująco:
Po kliknięciu w pole wartości, możliwy jest wybór wartości z listy:
Przykład
Argument typu Data:
Po kliknięciu w pole wartości możliwy jest wybór daty.
<Argument> <Type>Date</Type> <Name>DateFrom</Name> <VisibleName>Data początkowa</VisibleName> <DefaultSql> <![CDATA[ SELECT COALESCE( ( SELECT TOP 1 CAST(ruav.ArgumentValue AS DATETIME) FROM esm.ReportsUserArguments ruav WHERE ruav.UserName = @LoginName AND ruav.ReportFileName = @ReportFileName AND ruav.ArgumentName = 'DateFrom' ) , ( SELECT esm.GetDateFromParts ( YEAR(GETDATE()), 1, 1 ) ) ) ]]> </DefaultSql> <ListSql></ListSql> </Argument>Powyższa definicja argumentu w aplikacji wygląda następująco:
Po kliknięciu w pole wartości możliwy jest wybór daty.
Przykład
Argument typu Custom:
Używając parametru IsRequired konieczny będzie wybór conajmniej jednej wartości.
<Argument> <Type>Custom</Type> <CustomTypeName>Operators</CustomTypeName> <Name>Operators</Name> <VisibleName>Operatorzy</VisibleName> <IsRequired>true</IsRequired> </Argument>Powyższa definicja argumentu w aplikacji wygląda następująco:
Używając parametru IsRequired konieczny będzie wybór conajmniej jednej wartości.Przykład
Argument typu Text:
Możliwe jest wpisanie dowolnej wartości tekstowej.
<Argument> <Type>Text</Type> <Name>ArticleCode</Name> <VisibleName>Kod artykułu</VisibleName> <IsRequired>false</IsRequired> </Argument>Powyższa definicja argumentu w aplikacji wygląda następująco:
Możliwe jest wpisanie dowolnej wartości tekstowej.
Przykład
Argument typu Autocomplete:
Podczas wpisywania wartości wyświetlane są podpowiedzi.
<Argument> <Type>Autocomplete</Type> <Name>LocationCode</Name> <VisibleName>Położenie</VisibleName> <AutocompleteSqlProc> <Name>WMS.Reports_GetLocationsAutocompleteData</Name> <Parameters> <ArgumentValueParameter paramname="WarehouseId">WarehouseId</ArgumentValueParameter> </Parameters> </AutocompleteSqlProc> <DefaultSql></DefaultSql> <IsRequired>false</IsRequired> </Argument>Powyższa definicja argumentu w aplikacji wygląda następująco:
Podczas wpisywania wartości wyświetlane są podpowiedzi.
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:
Element raportu może zawierać następujące sekcje:
Definicja powyższego wiersza podsumowania wygląda następująco:
Przykład
<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.
| 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 |
|
Przykład
<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 |
|
Przykład
<HeaderRow> <TextColumn>Rejon</TextColumn> <TextColumn>Plan</TextColumn> <TextColumn precision="2">Realizacja</TextColumn> <TextColumn precision="2">%</TextColumn> </HeaderRow>
Przykład
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"/><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 |
|
Przykład
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 |
|
Przykład
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 |
|
| 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 |
|
Przykład
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:
Definicja układu elementów
Układ elementów
Układ elementów znajdujących się w raporcie definiowany jest za pomocą sekcji VerticalLayout. Każdy z elementów może znajdować się bezpośrednio w tej sekcji lub w jednym ze znaczników: Horizontal lub Vertical, które mogą być względem siebie zagnieżdżone jak w poniższym przykładzie:
Wartości ID na zrzucie odpowiadają wartości w sekcji Element definicji układu raportu.
Układ raportu może składać się z następujących sekcji:
Klasy CSS
W definicji raportu możliwe jest wykorzystanie języka CSS do stylizacji elementów. W sekcji Css raportu zdefiniować można odpowiednie klasy owołujące się do poszczególnych elementów raportu. Odwołanie odbywa się poprzez znacznik Element definicji układu raportu, w którym to podany jest identyfikator danego elementu raportu.
Przykład
<VerticalLayout width="1" height="1000px"> <WidthSql><![CDATA[ select cast(300 + DATEDIFF (day , @DateFrom , @DateTo) * 30 as varchar)+'px' ]]></WidthSql> <Element height="2">2</Element> <Horizontal height="3" minwidth="925"> <Vertical width="5"> <Element height="3">3</Element> <Element cssclass="average-performance-element" height="2">4</Element> </Vertical> <Element width="7">1</Element> </Horizontal> </VerticalLayout>Tak zdefiniowany układ wygląda następująco:
Wartości ID na zrzucie odpowiadają wartości w sekcji Element definicji układu raportu.
| Nazwa | VerticalLayout |
| Opis | Sekcja definicji układu elementów raportu. Elementy w tej sekcji domyślnie układane są poziomo. |
| Zawartość | Sekcje:
|
| Parametry |
|
| Nazwa | WidthSql |
| Opis | Polecenie SQL zwracające wartość liczbową, która jest szerokością danego elementu |
| Zawartość | Polecenie SQL |
| Parametry | Brak |
| Nazwa | Element |
| Opis | Definiuje wielkość danego elementu raportu |
| Zawartość | Identyfikator elementu raportu |
| Parametry |
|
| Nazwa | Horizontal |
| Opis | Układ elementów poziomy |
| Zawartość | Elementy i/lub sekcje Vertical |
|
| Nazwa | Vertical |
| Opis | Układ elementów pionowy |
| Zawartość | Elementy i/lub sekcje Horizontal |
|
Przykład
<Css>
.avg-perf { color: white; font-weight: bold; height: 100%; }
.avg-perf-value { font-size: 5em; }
.avg-perf-title { font-size: 2em; }
.customHeaderColumn {height: 35px;}
.average-performance-element>.report-element-content { background-color: #a8c6d5; padding: 5px 50px 15px 50px; }
.weekend-day { color: red; }
</Css>
Eksport danych z raportów
Eksport danych z raportów umożliwia pobranie wygenerowanego raportu do pliku xlsx. Pozwala to na uzyskanie spersonalizowanych danych – dostosowanie danych, wyliczanie funkcji itp. za pomocą narzędzi udostępnionych w Excelu. Dodatkowo użytkownik będzie mógł przesyłać pliki jako formę raportu osobom zarządzającym.
W celu eksportu danych należy przejść na zakładkę raporty:
Następnie należy wygenerować wybrany raport:
W prawym górnym rogu znajduje się ikona eksportu:
Po jej kliknięciu automatycznie pobierze się plik Excel zawierający dane z wybranego raportu.

Następnie należy wygenerować wybrany raport:
W prawym górnym rogu znajduje się ikona eksportu: 


