WAPRO Fakir Finanse i księgowość
Definiowanie źródła wierszy dla raportów użytkownika
Zobacz także Wyślij opinię
WAPRO Fakir - dokumentacja > Definicje > Raporty użytkownika > Definiowanie źródła wierszy dla raportów użytkownika

Glossary Item Box

Definiowanie kolumn raportu




Rysunek. Definiowanie kolumn raportu użytkownika



Dla każdego raportu, poza kolumną z treścią pozycji,  możemy zdefiniować od 1 do 20 kolumn z wartościami, a następnie tym kolumnom przypisać definicje, na podstawie których będą wyliczane wartości. Przy czym możemy zdecydować, czy definicje te będą wspólne dla wszystkich kolumn, czy też każda kolumna będzie miała niezależny zestaw definicji. W tym drugim przypadku definicje utworzone dla jednej kolumny  możemy automatycznie skopiować do kolejnych, przy pomocy przycisku w prawym dolnym rogu okienka definiowania składowych pozycji.

Dodatkowo istnieje możliwość nadania nazwy każdej kolumnie oraz wskazania roku obrotowego, z którego funkcje definicyjne mają pobierać wartości.

Zaznaczenie opcji BO przy danej kolumnie powoduje, że funkcje pobierające dane z kont (obroty, salda) będą zawsze odwoływać się do bilansu otwarcia w danym roku.



 

Definiowanie źródeł danych dla wierszy raportu użytkownika


Dla każdego wiersza (a po wybraniu niezależnej definicji kolumn - także dla każdej kolumny) zestawienia możemy określić formułę, na podstawie której będą wyliczane wartości na wydruku tego zestawienia. Formuła taka, wpisywana w oknie edycyjnym w dolnej części okna, musi być poprawnym wyrażeniem składającym się z wartości liczbowych, operatorów arytmetycznych, nawiasów oraz predefiniowanych funkcji.

Wartości liczbowe i operatory możemy wpisywać bezpośrednio w oknie edycyjnym (alternatywnie operatory możemy wstawiać przy pomocy dodatkowych przycisków narzędziowych znajdujących się nad tym oknem), natomiast w celu wstawienia funkcji,  należy dwukrotnie kliknąć myszą  odpowiednią pozycję na liście funkcji.





W zależności od tego, jaka funkcja została wybrana, program wyświetli odpowiednie okno pozwalające na podanie argumentów dla tej funkcji. I tak:

UWAGA -
Po zapisaniu w formule funkcji z parametrami takimi jak identyfikatory pozycji czy węzłów MPK, program jako parametry wstawi wewnętrzne identyfikatory tych pozycji. Użytkownik może jednak zobaczyć, jakie wartości kryją się pod tymi identyfikatorami - w tym celu należy wybrać górny przycisk znajdujący się z prawej strony okna edycyjnego.

Środkowy przycisk z prawej strony okna edycyjnego formatuje formułę w ten sposób, że poszczególne jej fragmenty (oddzielone operatorami arytmetycznymi) znajdują się w kolejnych wierszach formuły, co zwiększa jej czytelność.
Przykład:

Załóżmy że źródłem danych dla pozycji raportu ma być suma obrotów debetowych na kontach 011, 012 i 013 pomniejszona o kwotę 10.000 PLN. W celu zdefiniowania odpowiedniego źródła danych wykonujemy następujące operacje:
  • Na drzewie z lewej strony okna ustawiamy się na odpowiednim wierszu raportu
  • Z prawej strony ekranu, na liście funkcji klikamy dwukrotnie na pozycję ODT()
  • Po wyświetleniu się planu kont zmieniamy jego widok na listę (Ctrl+W lub przycisk w pasku narzędzi okna) i zaznaczamy odpowiednie konta, a następnie wybieramy przycisk Wybierz
  • W oknie formuł powinniśmy otrzymać wyrażenie będące sumą obrotów wskazanych kont
  • Do wstawionego wyrażenia należy dopisać -10000
  • Następnie wybieramy przycisk Zastosuj aby zapisać naszą definicję
  • Po zakończeniu operacji nasze źródło danych dla wiersza powinno mieć postać ODT('011') + ODT('012') + ODT('013') –10.000
UWAGA -
Należy pamiętać, aby przed wykonaniem raportu, którego składowe korzystają z pozycji innych zestawień wykonać najpierw kolejno wszystkie tamte zestawienia (w przeciwnym razie zostanie przy próbie wykonania raportu wyświetlony komunikat o błędzie). Na użytkowniku ciąży również samodzielna kontrola, czy definicje raportów wzajemnie się nie "zakleszczają" (tzn. raport A korzysta z pozycji raportu B, zaś raport B - z pozycji raportu A).



 

Funkcje odwołujące się do planu kont


Jak to już zostało to powiedziane wyżej, argumentami funkcji odwołujących się do planu kont mogą być poza samymi numerami kont również numery zespołów kont w planie kont oraz kategorie kont. Na poniższym przykładzie widoczny jest fragment domyślnego, predefiniowanego planu kont programu:



Rysunek. Zespół 1 domyślnego planu kont programu.



Poza kontami widoczne są na nim numer zespołu i nazwa zespołu kont jak również numery kilku kategorii i ich nazwy:

Każda kategoria kont dzieli się oczywiście dalej na konta księgowe. Numery zespołów oraz numery kategorii mogą być wykorzystywane jak argumenty funkcji obliczających BO, salda i obroty w raportach użytkownika, dokładnie tak samo jak numery kont księgowych. Dla przykładu, jeżeli w tworzonym raporcie wymagane jest np. obliczenie w aktywach trwałych wartość środków na rachunkach bankowych oraz wartość kredytów bankowych można to wykonać tworząc formułę obliczeniową:

Korzystanie w argumentach funkcji z numerów zespołów konto oraz kategorii kont zamiast numerów kont z jednej strony upraszcza tworzone formuły obliczeniowe w raportach a z drugiej strony, raport nie traci aktualności po dodaniu nowego konta syntetycznego i nie trzeba go za każdym razem aktualizować.

Dodatkowo, dla bardziej wyrafinowanych zastosowań, w argumentach funkcji odwołujących się do planu kont można stosować tzw. znaki globalne:

Korzystanie ze znaków globalnych pozwala bardzo precyzyjnie wybierać konta do obliczeń przez funkcje obliczeniowe raportów. Formuła SDT('1*5') obliczy saldo DT wszystkich kont, których pierwszy znak numeru konta to 1 a ostatni to 5 czyli 105, 115, 135 itd jeżeli są to konta syntetyczne nie posiadające analityk ponieważ ciąg znaków numeru składa się tylko z 3 znaków ale użyta w argumencie funkcji maska numeru konta będzie spełniona dla kont posiadających podpoziomy analityczne również 107-1-01-5. Bardziej precyzyjne maski kont można tworzyć przy użyciu znaku ?. Dla przykładu maska '1?5' ogranicza nam długość numeru konta do dokładnie trzech znaków co w naszym przykładzie oznaczałoby obliczenie salda kont syntetycznych zespołu nr 1, które jako ostatni znak mają znak 5. Nie oznacza to oczywiście, że z znaku * nie należy korzystać w maskach kont. Dla przykładu jeżeli wśród kont kategorii 11 znajdują się konta, które na pierwszym poziomie analitycznym mają jeden znak oraz konta, które mają na tym poziomie dwa znaki, maska '11?-?-5' odrzuci konta z dwuznakową analityką na pierwszym poziomie. W takim przypadku zastosowanie maski '11?-*-5' rozwiąże ten problem ponieważ uwzględnione zostaną konta, które licząc od lewej, pomiędzy dwoma pierwszymi znakami '-' mają dowolną ilość, dowolnych znaków. Korzystanie z masek kont w formułach obliczeniowych odwołujących się do planu kont wymaga nieco wprawy ponieważ konta, które nie pasują do maski nie zostaną uwzględnione w obliczeniach i przez nieuwagę, bardzo łatwo można popełnić błąd.



 

Zaawansowane formuły definicji danych

Poza wykorzystaniem funkcjonalności opisanej powyżej, zaawansowani użytkownicy mogą samodzielnie konstruować formuły, na podstawie których program wyliczał będzie dane w poszczególnych wierszach/kolumnach zestawienia. Składnia tak wprowadzanych wyrażeń musi być poprawną składnią z punktu widzenia języka SQL. Możliwe jest w szczególności deklarowanie i wykorzystywanie własnych zmiennych, wykorzystywanie dowolnych funkcji języka SQL, składni warunkowej itp., przy czym istnieją następujące ograniczenia:

UWAGA -
Użytkownik definiujący formuły posiada nieograniczony dostęp do danych - w szczególności może wstawiać formuły pobierające wartości z kont, do których w normalnym trybie nie ma dostępu. Dlatego należy generalnie ograniczyć w uprawnieniach dostęp do modułu definicyjnego (na poziomie funkcji menu), tak aby mogli z niego korzystać tylko wybrani użytkownicy.
Przykład:
Załóżmy że mamy do zdefiniowania wyrażenie warunkowe. Jeśli saldo debetowe konta 400 będzie dodatnie, to źródłem danych dla pozycji raportu będzie to saldo, w przeciwnym razie formuła powinna zwrócić zero. Prawidłowo zdefiniowane wyrażenie powinno wyglądać następująco:

IF SDT('400') > 0
SET @wynik = SDT('400')
ELSE
SET @wynik = 0
Przykład:
W poprzednim przykładzie funkcja SDT użyta jest dwukrotnie - za każdym razem następuje odwołanie do bazy danych i wyliczenie odpowiedniej wartości. Z punktu widzenia wydajności nie jest to korzystne, zwłaszcza gdybyśmy zamiast tak prostej funkcji mieli do czynienia z kosztowną funkcją złożoną. W takiej sytuacji można usprawnić kod wyrażenia, wykorzystując własną zmienną:

DECLARE @moja_zmienna DECIMAL(15,2)
SET @moja_zmienna = SDT('400')
IF @moja_zmienna > 0
SET @wynik = @moja_zmienna
ELSE
SET @wynik = 0

Program ułatwia tworzenie formuł warunkowych - wystarczy w tym celu wcisnąć przycisk uaktywniający zaawansowane funkcje znajdujący się z prawej strony przycisków operatorów arytmetycznych. Otrzymamy wówczas dostęp do bardziej zaawansowanych mechanizmów, takich jak warunki IF...ELSE czy CASE. Po wybraniu odpowiedniego warunku program wstawi szkielet prawidłowego wyrażenia, który należy tylko wypełnić oczekiwanymi wartościami.

UWAGA

Maksymalna długość formuły nie może przekroczyć 4.000 znaków. Dłuższa formuła nie zostanie prawidłowo zapisana.

W przypadku gdy wewnątrz formuły użyjemy nieprawidłowej składni lub też formuła zwróci wartość inną niż liczbowa, albo - wewnątrz złożonej formuły - nie dokonamy przypisania SET @wynik, formuła co prawda zostanie zapisana (bez informacji o błędach), ale przy próbie jej wykonania (wydrukowania raportu) zostanie zgłoszony błąd.

Użytkownik ma możliwość sprawdzenia poprawności składniowej aktualnie wyświetlanej formuły poprzez wciśnięcie dolnego przycisku z prawej strony okna formuły. Może też sprawdzić poprawność wszystkich formuł w bieżącym zestawieniu, wybierając w oknie definicji przycisk Sprawdź. Należy pamiętać, że sprawdzanie składni wszystkich formuł może być operacją czasochłonną.



 

Szczegółowy wykaz funkcji




 

Zobacz także

WAPRO Fakir Finanse i księgowość