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.
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 domyślnych 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
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:
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.
Układ raportu może składać się z następujących sekcji:
Nazwa |
VerticalLayout |
Opis |
Sekcja definicji układu elementów raportu. Elementy w tej sekcji domyślnie układane są poziomo. |
Zawartość |
Sekcje:
- WidthSql
- Element
- Horizontal
|
Parametry |
- width - wartość liczbowa określająca szerokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną szerokość layoutu
- height - wartość liczbowa określająca wysokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną wysokość layoutu
- cssclass - odnośnik do klasy CSS
|
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 |
- width - wartość liczbowa określająca szerokość elementu
- minwidth - wartość liczbowa okreslająca minimalną szerokość elementu
- height - wartość liczbowa określająca wysokość elementu
- minwidth - wartość liczbowa okreslająca minimalną wysokość elementu
- cssclass - odnośnik do klasy CSS
|
Nazwa |
Horizontal |
Opis |
Układ elementów poziomy |
Zawartość |
Elementy i/lub sekcje Vertical |
|
- width - wartość liczbowa określająca szerokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną szerokość layoutu
- height - wartość liczbowa określająca wysokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną wysokość layoutu
- cssclass - odnośnik do klasy CSS
|
Nazwa |
Vertical |
Opis |
Układ elementów pionowy |
Zawartość |
Elementy i/lub sekcje Horizontal |
|
- width - wartość liczbowa określająca szerokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną szerokość layoutu
- height - wartość liczbowa określająca wysokość layoutu
- minwidth - wartość liczbowa okreslająca minimalną wysokość layoutu
- cssclass - odnośnik do klasy CSS
|
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
<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>
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:
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.
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 |
|
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 |
- width - wartość liczbowa określająca szerokość kolumny
|
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 |
- align - wyrównanie zawartości (left, right, center)
- precision - wartość liczbowa określająca precyzję
|
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 |
- 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 |
|
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 |
- 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
|
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 |
- 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 |
|
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)
|
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:
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:
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.
Argument może zawierać następujące sekcje:
Nazwa |
Type |
Opis |
Typ argumentu. |
Zawartość |
- List - wybór z listy
- Date - wybór daty
- Custom - wybór jednej lub wielu wartości
- Text - pole tekstowe
- Autocomplete - pole tekstowe z autouzupełnianiem
|
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ść |
- brak sekcji - argument nie wymagany
- true - argument wymagany
- false - argument niewymagany
|
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 |
- paramname - nazwa argumentu używana w procedurze
|
Zawartość |
- wartość tekstowa określająca nazwę argumentu używanej w procedurze
|
Wskazówka
Odwołanie do poszczczególnych argumentów odbywa się poprzez znak @ np. @WarehouseId.
Przykład
Argument typu
List:
<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:
<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:
<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:
<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:
<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.
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.
