W Comarch ERP Enterprise rozróżniane są dane wyjściowe i raportowe dokumentów. Dokumenty wyjściowe różnią się od dokumentów raportów tym, że generują dane pojedynczego wyjścia i dlatego zazwyczaj wymagają identyfikatora GUID jako parametru. Z drugiej strony dokumenty raportów wyświetlają dowolne dane w formie tabelarycznej. Zwykle mają kilka parametrów, dla których użytkownik może bezpośrednio określić wartości. Oba typy danych wyjściowych są oparte na Crystal Reports. Raport (Crystal Reports) może być generowany bezpośrednio w Crystal Reports lub w Comarch ERP Enterprise. Wydanie w Comarch ERP Enterprise odbywa się za pośrednictwem System Output Manager (SOM).
Podczas przetwarzania raportów (Crystal Reports) nie jest konieczne rozróżnianie między dokumentami raportów a dokumentami końcowymi. Istnieją jednak naturalne różnice. Na przykład dokumenty raportów są zwykle wyprowadzane w formacie poziomym, podczas gdy dokumenty końcowe są zwykle wyprowadzane w formacie pionowym.
Niniejszy dokument opisuje mechanizmy dostarczane przez Comarch ERP Enterprise do edycji raportów i wyprowadzania danych. Ma on na celu wsparcie użytkownika w tworzeniu i edycji raportów oraz zwrócenie uwagi na szczególne okoliczności.
Definicje pojęć
- Dokument końcowy — wyjście raportu do urządzenia wyjściowego, takiego jak drukarka, lub do pliku tworzy dokument raportu lub dokument końcowy. Dokument raportu zawiera listę obiektów, na przykład listę adresów. Dokument końcowy zawsze zawiera obiekt, na przykład zamówienie sprzedaży. Dokumenty mogą być archiwizowane lub wysyłane do partnera, na przykład faksem lub pocztą elektroniczną.
- Plik raportu — plik raportu służy do definiowania wyglądu dokumentu raportu. W tym celu pliki raportów są edytowane w Crystal Reports. Pliki raportów mogą być zależne lub niezależne od języka.
- Szablon raportu — szablon raportu to specjalny plik raportu, który służy jako szablon do tworzenia raportów, które mają być wysyłane za pośrednictwem ERP System Output Manager (SOM). Szablon raportu zawiera w tym celu szereg standardowych parametrów i funkcji zdefiniowanych przez użytkownika. Ponadto ustawienia w szablonie raportu są wybierane w taki sposób, aby czas wykonania i wynikające z niego obciążenie były jak najbardziej zminimalizowane. Nowe pliki raportów powinny być zawsze tworzone w oparciu o szablon raportu.
- Sterownik ODBC systemu ERP — sterownik ODBC systemu ERP umożliwia dostęp do odczytu danych w różnych bazach danych systemu Comarch ERP. Narzędzia do raportowania lub aplikacje pakietu Office, na przykład, mogą z niego korzystać w celu uzyskania dostępu do tych danych. Uprawnienia zdefiniowane w systemie Comarch ERP Enterprise są również brane pod uwagę przy zapytaniach.
- ERP System Output Manager (SOM) — menadżer wydruków systemu ERP (SOM) przetwarza żądania wydruków dla jednego lub więcej systemów Comarch ERP Enterprise. SOM generuje dokumenty wyjściowe i może je drukować, faksować, wysyłać pocztą e-mail lub przechowywać w Knowledge Store.
Wymagania wstępne
Do edycji raportów musi być używana wersja Crystal Reports wydana przez Comarch. Wydane wersje można znaleźć w dokumencie Wymagania systemowe. Ponadto muszą być używane źródła danych określone w dokumencie Źródła danych ODBC.
Osoba przetwarzająca raporty musi posiadać wiedzę na temat modelu danych Comarch ERP Enterprise. Ponadto wymagana jest wiedza zawarta w dokumencie Interfejs ODBC.
Przed rozpoczęciem tworzenia raportu należy upewnić się, że Crystal Reports jest skonfigurowany zgodnie z opisem w artykule Konfiguracja Crystal Reports.
Tworzenie lub dostosowywanie raportu
Raporty edytowane w Crystal Reports do użytku w Comarch ERP Enterprise muszą spełniać określone wymagania, aby raporty mogły być generowane zgodnie z wymaganiami. Z tego powodu każdy raport powinien być tworzony na podstawie dostarczonego szablonu raportu. Zawiera on wiele ustawień i funkcji potrzebnych do poprawnego zaprojektowania.
Jeśli ma zostać utworzony nowy raport, należy zacząć od szablonu raportu lub zduplikować istniejący raport. Nie należy używać funkcji Crystal Reports do tworzenia nowego raportu lub raportu za pomocą kreatora, ponieważ raporty utworzone w ten sposób nie są oparte na szablonie raportu i będzie konieczne ręczne dodanie wszystkich ustawień i funkcji szablonu raportu.
Szablon raportu można pobrać za pomocą aplikacji Raporty, więcej informacji można znaleźć w dokumencie Raporty. Istniejący raport można wyeksportować w aplikacji Raporty lub w aplikacji Obiekty deweloperskie w widoku Report.
Struktura szablonu raportu
Znajomość szablonu raportu jest niezbędna do tworzenia i konfiguracji raportów. Z tego powodu najpierw opisano ogólną strukturę tego szablonu. Następnie w kolejnych sekcjach opisano użycie poszczególnych konstrukcji.
W szablonie raportu wszyscy partnerzy, którzy są również pracownikami, są wyświetlani w tabeli app_general_Partner (partner). Tabela ta służy jako przykład formatowania danych wyjściowych. Nie ma ona jednak znaczenia dla mechanizmów szablonu raportu i dlatego nie została tutaj opisana bardziej szczegółowo.
Wybór zestawu danych został tak dobrany, aby zminimalizować obciążenie bazy danych i ilość przesyłanych danych. Wybór zestawu danych
{app_general_Partner.maintainingOrganisation} = GetOrganisationGuid ({?SystemVariables}, {?SystemValues}))
wyświetlani są tylko ci pracownicy, dla których aktywna organizacja może przetwarzać dane. Jeśli dane wyjściowe są w Crystal Reports, kontekst organizacji nie jest zdefiniowany, a funkcja GetOrganisationGuid zwraca nieprawidłowy identyfikator Guid. W takim przypadku nie są wyświetlani żadni pracownicy. Jeśli dane mają być również wyświetlane w Crystal Reports, należy zmienić wybór zestawu danych lub określić nazwę i prawidłowy identyfikator Guid jako parametr zmiennej systemowej ORGANIZATION_GUID.
Szablon raportu używa czcionki Arial o rozmiarze 9. Linie wiodące są zaprojektowane dla siatki o rozmiarze 2 mm. Tylko po prawej stronie strony ostatnia linia prowadząca jest wyrównana do prawej strony strony, a nie do siatki.
Obsługa linii prowadzących
Nagłówek raportu a zawiera pola tekstowe, które mogą być używane do definiowania linii prowadzących, które dzielą raport na obszary o równej szerokości.
Nagłówek raportu b zawiera pola tekstowe, które wizualizują minimalną szerokość pól danych różnych typów danych w celu uniknięcia przerw lub obcięcia danych.
Te dwa obszary nie są wyświetlane w danych wyjściowych. W razie potrzeby obszary te można usunąć z szablonu raportu przed zaimportowaniem gotowego pliku raportu do Comarch ERP Enterprise.
Ustawienia danych wyjściowych w Crystal Reports
W Nagłówku raportu c informacje o formatowaniu są inicjowane w formule @_DefaultFormattingOptions. Ustawienia są skuteczne, jeśli raport jest wysyłany bezpośrednio w Crystal Reports, a nie za pośrednictwem ERP System Output Manager (SOM). Jeśli raport jest wysyłany za pośrednictwem SOM, ustawienia te są zastępowane przez informacje o formatowaniu specyficzne dla użytkownika w podraporcie Formatowanie.
Ustawienia w formule zostały wybrane tak, aby różniły się od zwykłego formatowania w Niemczech. Ułatwia to sprawdzenie, czy pole wyjściowe zostało sformatowane przez użytkownika, czy nie.
Inicjalizacja raportu
Inicjalizacja zmiennych systemowych i stałych tekstowych odbywa się w Nagłówku raportu d. Obszar ten nie jest wyświetlany w danych wyjściowych. Zapisane pola są polami formuły i zaczynają się od _Initialise. Ten przedrostek ma na celu wskazanie charakteru inicjalizacji pól. Formuły mogą być wykonywane w dowolnej kolejności w obszarze.
Inicjalizacja zmiennych systemowych
W raporcie można wykorzystać różne informacje, które system ERP posiada o raporcie, wykonującym serwerze aplikacji systemu ERP, używanych bazach danych i wykonującym użytkowniku. Informacje te są dostarczane jako zmienne przez pole formuły _InitialiseSystemValues i mogą być używane w odpowiednich polach. Listę zmiennych systemowych można znaleźć w rozdziale Zmienne systemowe.
Inicjowanie stałych tekstowych
Stałe tekstowe są używane do tworzenia raportu niezależnie od języka. Raporty niezależne od języka mogą być następnie tłumaczone bezpośrednio w Comarch ERP Enterprise bez użycia Crystal Reports. Wartości stałych tekstowych raportu są udostępniane jako zmienne w polu formuły _InitialiseTextValues. Dla każdej stałej tekstowej tworzone jest osobne pole formuły, które zwraca zawartość odpowiedniej zmiennej. Używane stałe tekstowe muszą być dostosowane do każdego raportu. Opis funkcji można znaleźć w rozdziale Raporty niezależne od języka.
Inicjalizacja miejsc dziesiętnych
Liczba miejsc dziesiętnych jest pobierana ze zmiennych systemowych w polu formuły _InitialiseDecimals. Miejsca dziesiętne ustawia się w Comarch ERP Enterprise w aplikacji Konfiguracja. Korzystając z dostarczonych zmiennych, raport może teraz mieć takie samo formatowanie liczb, ilości, kwot i cen, jak w Comarch ERP Enterprise. Użycie miejsc dziesiętnych zostało opisane w rozdziale Formatowanie liczb.
Formatowanie
W Nagłówku raportu e znajduje się podraport o nazwie Formatowanie. W tym podraporcie informacje o formatowaniu są odczytywane z funkcji wirtualnej pgm_Formats i udostępniane w zmiennych. Istnieją różne powody, dla których dane są odczytywane w raporcie cząstkowym. Podraport zapewnia, że zapytanie do bazy danych jest zawsze wykonywane. Jednocześnie zapewnia to, że żądanie jest wykonywane tylko raz. Ponadto używana funkcja nie pojawia się w oknie dialogowym kreatora bazy danych dla raportu głównego.
Dane wyjściowe Nagłówka raportu e nie mogą być tłumione, ponieważ w przeciwnym razie dane z funkcji wirtualnej pgm_Formats nie zostaną odczytane. Zamiast tego funkcja Pomiń pusty podraport jest aktywowana w formatowaniu podraportu w zakładce Podraport.
Informacje o formatowaniu specyficzne dla użytkownika w podraporcie zastępują informacje o formatowaniu w formule @_DefaultFormattingOptions w Nagłówku raportu c. Jeśli raport jest wyprowadzany bezpośrednio w Crystal Reports, a nie za pośrednictwem SOM, wówczas użytkownik nie jest znany w Comarch ERP Enterprise. W takim przypadku wyjście podraportu jest wyłączone. Oznacza to, że ustawienia w Nagłówku raportu c są nadal skuteczne.
Dokładne wykorzystanie informacji o formatowaniu zostało opisane w rozdziałach:
Nagłówki
Nagłówki są przechowywane w sekcjach raportu, które zaczynają się od Sekcji nagłówka. Istnieje obszar dla nagłówka raportu, linia separatora, obszar dla nagłówków kolumn i kolejna linia separatora.
Nagłówek raportu
Nagłówki raportu są przechowywane w Nagłówku strony a i są podzielone na sekcję lewą i sekcję prawą. Używane pola są polami formuły i mają odpowiednio nazwy _LeftHeading i _RightHeading. Parametr ReportTitle jest wyświetlany w polu _LeftHeading przez formułę, jeśli nie jest pusty. Jeśli parametr jest pusty lub zawiera znak „*”, jako tytuł raportu używana jest zmienna systemowa _ReportDescription. Pole formuły _RightHeading jest zwykle wypełniane przez zmienne systemowe (więcej informacji można znaleźć w rozdziale Zmienne systemowe).
Nagłówki kolumn
Szablon raportu jest niezależny od języka. Nagłówki kolumn w Nagłówku strony c zawierają stałe tekstowe. Stałe te zostały zainicjalizowane na początku raportu (więcej informacji można znaleźć w rozdziale Inicjowanie stałych tekstowych). Tylko odpowiednie zmienne są przywoływane w polach formuł nagłówków kolumn.
Treść
Treść składa się z obszarów nagłówka grupy, szczegółów i stopki grupy.
Nagłówek grupy
Szablon raportu ma poziom grupowania dla przynależności partnera. Dane wyjściowe są wyświetlane w Nagłówku grupy 1 wraz ze stałą tekstową dla oznaczenia.
Przy każdym nowym powiązaniu licznik koloru tła jest resetowany do zera za pomocą pola formuły _LineCounterReset. Oznacza to, że pierwszy wiersz w obszarze szczegółów może być zawsze zaznaczony tym samym kolorem tła.
Opcja grupy Powtarzaj nagłówek grupy na każdej nowej stronie jest aktywna dla poziomu grupowania.
Szczegóły
Szczegóły są podzielone na dwa obszary. Szczegóły a nie są wyświetlane i zawierają pole formuły do zwiększania numeru wiersza.
Jeśli wybrano ustawienie Kolor tła podczas drukowania dokumentu raportu, np. w aplikacji Drukuj dokumenty raportu, wiersze listy mogą być kolorowane naprzemiennie. Automatycznie wybierany jest kolor odpowiadający bieżącemu motywowi kolorystycznemu. Kolor tła wierszy jest ustawiany dla parzystych numerów wierszy. Oddzielny licznik jest używany w szablonie raportu, dzięki czemu może być również używany w raportach podrzędnych. Funkcja zliczania Crystal Reports Recordnumber nie została użyta, ponieważ uruchamia się ponownie w raportach podrzędnych, a zatem kolor tła nie zawsze może być ustawiony poprawnie. Ponieważ pole formuły służące do zwiększania numeru wiersza pojawia się przed polami danych w obszarze Szczegóły b, kolorowane są pierwsze i wszystkie nieparzyste wiersze. Jeśli inkrementacja jest wykonywana po wyprowadzeniu danych, pierwszy wiersz nie jest kolorowany. W takim przypadku kolorowane są wszystkie parzyste wiersze.
Rzeczywiste wyprowadzanie danych odbywa się w obszarze Szczegóły b. Jako przykład wyprowadzanych jest sześć kolumn. Pierwsza zawiera identyfikację partnera w postaci tekstu. W drugiej kolumnie nazwa partnera jest wyświetlana jako tekst. Kolejne kolumny zawierają datę wprowadzenia i datę ostatniej zmiany partnera, a także identyfikator partnera powiązanego użytkownika. Kolumny daty mogą być używane jako przykład formatowania informacji o czasie i dacie.
Stopka grupy
Każdy poziom grupowania ma stopkę grupy. Obszar Stopka grupy 1 odpowiada obszarowi Nagłówek grupy 1. Ten obszar nie jest wyprowadzany. Stopka grupy 1 jest pomijana, jeśli jest to ostatni rekord danych. Zapobiega to sytuacji, w której pusta stopka grupy na końcu raportu powoduje wyświetlenie dodatkowej, pustej strony.
Stopka raportu
Wyjście stopki raportu jest wyłączone. Zapobiega to sytuacji, w której pusta stopka raportu na końcu raportu powoduje wyświetlenie dodatkowej, pustej strony.
Stopka strony
Linia podziału pojawia się na końcu każdej strony przed właściwą stopką strony. Nazwa klienta jest wyświetlana w lewym dolnym rogu za pomocą pola formuły _Company. Pole formuły _PageCount, które zawiera numer strony, jest wyświetlane pośrodku. W prawym dolnym rogu wyświetlana jest data wydruku w odniesieniu do strefy czasowej źródła danych za pomocą pola formuły _PrintDateTime.
Funkcje zdefiniowane przez użytkownika
Funkcje raportu zdefiniowane przez użytkownika są przechowywane w szablonie raportu w celu inicjalizacji zmiennych systemowych, stałych tekstowych i wartości liczbowych. Funkcje te są wymienione poniżej w kolejności alfabetycznej.
Funkcja GetDecimals
Funkcja GetDecimals służy do określania liczby miejsc dziesiętnych dla różnych typów liczb, np. kwot. Można jej użyć do wyodrębnienia liczby z ciągu znaków dla klucza. Funkcja ma dwa stałe i jeden opcjonalny parametr. Pierwszym parametrem jest klucz. Drugi parametr zawiera wszystkie klucze wraz z ich wartościami. Poszczególne treści są oddzielone od siebie spacjami, a po każdym kluczu następuje jego wartość. Drugi parametr może mieć następującą zawartość, na przykład: KWOTA 2 CZAS TRWANIA 3 CENA 1 ILOŚĆ 2. Trzeci parametr funkcji definiuje wartość domyślną, jeśli drugi parametr był pusty lub klucz nie został określony w drugim parametrze. Jeśli trzeci parametr nie został określony, przyjmuje się, że jego wartość wynosi 2.
Funkcja GetLineColor
Funkcja GetLineColor przyjmuje numer wiersza i numer koloru jako parametry. Wywołanie tej funkcji umożliwia określenie naprzemiennych kolorów tła dla szczegółów. Jeśli przekazany numer wiersza jest liczbą nieparzystą, zwracany jest przekazany kod koloru. W przypadku parzystych numerów wierszy zwracany jest numer koloru brak koloru. Sposób użycia opisano w rozdziale Szczegóły.
Funkcja GetOrganisationGuid
Funkcja GetOrganisationGuid określa identyfikator organizacji na podstawie zmiennych systemowych. Jeśli identyfikator GUID organizacji nie istnieje, zwracana jest wartość INVALID_GUID. Funkcji tej można użyć bezpośrednio w warunku WHERE, aby ograniczyć zestaw danych do danych bieżącej organizacji. Jako zmienna systemowa, wartość zostałaby określona zbyt późno i nie mogłaby zostać uwzględniona w warunku WHERE. Dlatego w tym przypadku należy użyć funkcji. Funkcja wymaga parametrów raportu SystemVariables i SystemValues.
Funkcja GetValue
Funkcja GetValue określa wartość zmiennej. Jest ona wymagana do określenia zmiennych systemowych (więcej informacji można znaleźć w rozdziale Zmienne systemowe) i stałych tekstowych (rozdział Niezależność językowa raportów). Ma trzy parametry obowiązkowe i jeden parametr opcjonalny. Pierwszy parametr to nazwa zmiennej. Drugi parametr zawiera listę wszystkich znanych nazw zmiennych. Trzeci parametr zawiera listę wartości zmiennych. Czwarty parametr może definiować wartość domyślną. Jeśli wartość domyślna nie jest zdefiniowana, jako wartość domyślna używany jest pusty ciąg znaków.
Standardowe pola parametrów
Szablon raportu zawiera następujące standardowe pola parametrów:
- ReportTitle — zawiera nazwę raportu zdefiniowaną w Comarch ERP Enterprise
- SystemVariables — zawiera nazwy zmiennych systemowych (więcej informacji można znaleźć w rozdziale Zmienne systemowe)
- SystemValues — zawiera wartości zmiennych systemowych (więcej informacji można znaleźć w rozdziale Zmienne systemowe)
- TextConstants — zawiera nazwy stałych tekstowych dla niezależności językowej (rozdział Niezależność językowa raportów)
- TextValues — zawiera wartości dla niezależności językowej (rozdział Niezależność językowa raportów)
Instrukcje
Niniejszy rozdział opisuje kroki wymagane do utworzenia raportu i pracy z nim.
Przed nawiązaniem połączenia z Comarch ERP Enterprise należy sprawdzić ustawienia raportu. Sposób wyboru ustawień raportu został opisany w dokumencie Konfiguracja Crystal Reports.
Za pomocą Crystal Reports można uzyskać dostęp do danych Comarch ERP Enterprise poprzez sterownik ODBC systemu ERP. Dostęp poprzez sterownik ODBC odbywa się w systemie Windows poprzez źródło danych (DSN, Data Source Name). DSN można zdefiniować w aplikacji Źródła danych (ODBC) w Panelu sterowania systemu Windows. Comarch ERP Enterprise oferuje prostszą opcję tworzenia DSN. Sposób tworzenia DSN został opisany w dokumentacji Źródła danych ODBC.
Nazwy symboliczne dla DSN
W przypadku użycia jednej z poniższych nazw symbolicznych dla źródła danych (DSN), utworzony plik raportu może być wyprowadzony na dowolny system Comarch ERP Enterprise.
- Semiramis OLTP
- Semiramis OLAP
- Semiramis Repository
- Konfiguracja Semiramis
Jeśli wykorzystywane są inne źródła danych, te źródła danych muszą być również utworzone w SOM. W przeciwnym razie SOM nie będzie mógł uzyskać dostępu do danych podczas wyprowadzania i anuluje wyprowadzanie.
Wiele źródeł danych
Raport utworzony w Crystal Reports może zawierać kilka nazw symbolicznych jako źródła danych. Na przykład dwa źródła danych Semiramis OLTP i Semiramis OLAP mogą być używane w tym samym raporcie.
Jeśli jednak raport zawiera źródła danych dla kilku baz danych OLTP, raport może być wyprowadzany za pośrednictwem SOM (pod warunkiem, że źródła danych są tam utworzone), ale raport nie może być wyprowadzany za pośrednictwem klienckiej wersji sterownika ODBC systemu ERP. Oznacza to, że raport ze źródłami danych dla kilku baz danych OLTP można testować interaktywnie w Crystal Reports tylko w ograniczonym zakresie. Ograniczenie to dotyczy również sytuacji, gdy źródło danych drugiej bazy danych OLTP pojawia się w raporcie podrzędnym. W takich przypadkach raport powinien zostać zaewidencjonowany lub zaimportowany, a następnie przetestowany przy użyciu aplikacji Raport: Dokumenty raportów.
Wybór źródła danych (DSN)
Należy uruchomić Kreatora bazy danych w menu Baza danych. Otworzy się okno dialogowe z dwiema zakładkami. Po pierwszym uruchomieniu Kreatora bazy danych można otworzyć okno dialogowe wyboru ODBC, wybierając folder Dodaj nowe połączenie i podfolder ODBC (RDO). Teraz należy wybrać nazwę źródła danych, które zostało zdefiniowane dla dostępu do Comarch ERP Enterprise. Domyślnie jest to źródło danych Semiramis OLTP. Następnie kliknij [Zakończ] w oknie dialogowym, aby zamknąć okno dialogowe.
Wybór tabel
Wpis bazy danych Semiramis OLTP pojawi się w folderze ODBC (RDO). Poniżej wpisu bazy danych znajduje się katalog główny CISAG z jego podkatalogami i zawartymi w nich tabelami. Wybierz żądane tabele z podkatalogów i przenieś je do listy Wybrane tabele.
Łączenie tabel
Przed zamknięciem okna dialogowego Kreatora bazy danych należy dostosować powiązania między tabelami. Jeśli łącza istnieją, należy sprawdzić, czy wszystkie są potrzebne. Należy także dostosować opcje łączy.
Nowe łącza można tworzyć, przeciągając i upuszczając kolumnę tabeli, z której ma pochodzić łącze, na kolumnę, która ma być celem łącza. Alternatywnie, linki mogą być tworzone automatycznie.
Dostępne są dwa warianty automatycznego tworzenia linków:
- Można utworzyć łącze na podstawie nazw kolumn. Powiązanie za pomocą nazw rzadko jest poprawne. Przykładowo, większość tabel w Comarch ERP Enterprise posiada klucz główny dla kolumny tabeli Guid. Link poprzez ten atrybut działa dla linku pomiędzy artykułem a artykułem sprzedaży. Jeśli jednak chcemy powiązać zamówienie sprzedaży z pozycją zamówienia sprzedaży, wówczas kolumna w pozycjach nazywa się Nagłówek, a nie Guid.
- Klucze tabel Comarch ERP Enterprise mogą być odpytywane, a relacje tworzone za pomocą kluczy. Tylko automatyczne linki są tworzone dla tabel, które nie zostały jeszcze połączone.
Od wersji Crystal Reports 10 istnieją dwa wyzwalacze do tworzenia automatycznych linków:
- Pierwszy jest wyzwalany przez naciśnięcie przycisku [Połącz] na karcie Łącza. To zachowanie jest identyczne z zachowaniem Crystal Reports 9.
- Ponadto łącza mogą być tworzone automatycznie po wybraniu tabeli na karcie Dane. Łącza są wtedy tworzone Według nazwy i zazwyczaj nie są poprawne. Jeśli Crystal Reports został skonfigurowany zgodnie z artykułem Konfiguracja Crystal Reports, tworzenie powinno być wyłączone podczas dodawania tabel.
Łącza można usuwać, naciskając klawisz [Delete] lub przycisk [Usuń łącze] po wybraniu łącza. Menu kontekstowe łącza również zawiera opcję usuwania.
Wymuś łącze
Od wersji Crystal Reports 10 opcja Wymuś łącze jest dostępna w menu Opcje łącza. Domyślna konfiguracja sprzężenia nie wymusza jego faktycznego wykonania, tj. w pewnych okolicznościach w wynikowej instrukcji SQL nie jest generowana odpowiednia klauzula JOIN i brakuje tabeli połączonej. Może to skutkować nieoczekiwanym wynikiem zapytania, którego przyczyna jest trudna do ustalenia. Crystal Reports może pominąć połączenie z tabelą, jeśli żadna kolumna tabeli nie jest używana w raporcie, np. do wyjścia lub wyboru. To, czy takie łącze zostanie faktycznie pominięte, zależy od kontekstu innych istniejących łączy w raporcie. Opcja Wymuś łącze w menu Opcje łącza (dostępna po dwukrotnym kliknięciu strzałki łącza) musi być zawsze ustawiona na Oba wymuszone, aby zapobiec pominięciu łącza.
Typy danych w Comarch ERP Enterprise
Niniejszy rozdział opisuje, w jaki sposób typy danych Comarch ERP Enterprise są zwykle używane. Dla poszczególnych typów danych podano krótki opis sposobu wyprowadzania wartości. Typy danych, ich cechy szczególne i zastosowanie zostały opisane w dokumentacji Interfejs ODBC.
GUID
Identyfikatory GUID są najczęściej używane w Comarch ERP Enterprise jako klucz główny obiektu oraz jako klucz obcy. Tabele są połączone poprzez odpowiednie atrybuty GUID. Bezpośrednie wyjście identyfikatorów GUID nie jest zazwyczaj użyteczne. Zamiast tego atrybuty klucza biznesowego powinny być zwykle wyprowadzane, np. numer artykułu.
String
Atrybuty oparte na typie String są bardzo powszechne. Nie wymagają one specjalnej obsługi.
Boolean
Wartości logiczne są wyświetlane jako True lub False w Crystal Reports. Dla lepszego zrozumienia należy zastąpić te wartości znaczącym tekstem. Formuła w używanym polu może mieć następującą treść:
Shared StringVar strCustomerSalesItemExistingFalse;
Shared StringVar strCustomerSalesItemExistingTrue;
if({app_sales_SalesItem.customerSalesItemExisting}) Then
strCustomerSalesItemExistingTrue
else
strCustomerSalesItemExistingFalse
Prawidłowo zmienne strCustomerSalesItemExistingFalse i strCustomerSalesItemExistingTrue powinny zawierać teksty do przetłumaczenia. Sposób definiowania tych tekstów i przypisywania ich do zmiennych opisano w rozdziale Raporty niezależne od języka.
Liczby
Wiele typów danych jest wyprowadzanych przez Crystal Reports jako liczby. Należą do nich: byte, char, short, integer, long i decimal number. Proste typy mogą być zwykle wyprowadzane bezpośrednio. Wartości liczb dziesiętnych muszą być specjalnie sformatowane, tak aby używane były ustawienia separatorów grup i dziesiętnych z Comarch ERP Enterprise.
Valueset
Atrybuty typu Valueset są przechowywane w bazie danych jako short. Liczby te są tłumaczone na stałe symboliczne przez sterownik ODBC systemu ERP. Wartości te nie powinny być wyprowadzane bezpośrednio. Sterownik ODBC systemu ERP dodaje wirtualną kolumnę do modelu danych. Ma ona nazwę kolumny zestawu wartości uzupełnioną o końcówkę _text. Zawiera ona tekst zdefiniowany w zestawie wartości dla wartości w oryginalnej kolumnie. Należy go użyć dla danych wyjściowych.
Czas i data
Kolumny zawierające informacje o czasie i dacie mogą być zwykle wyprowadzane bezpośrednio bez ich konwertowania. Wartości zawsze odnoszą się do strefy czasowej organizacji używanej dla źródła danych.
W kolumnach typu Timestamp czas jest zapisywany w bazie danych niezależnie od strefy czasowej. Wartości te odnoszą się do UTC (Uni-versal Time Codordinated). Dane są odpowiednio konwertowane podczas zapisywania. Czasy te są zawsze przygotowywane w odniesieniu do strefy czasowej organizacji źródła danych.
Kolumny typu CisAttributeDate i CisObjectDate są zawsze przygotowywane w odniesieniu do strefy czasowej w bazie danych. Podobnie jak w Comarch ERP Enterprise, nazwa strefy czasowej musi być wyświetlana, jeśli strefa czasowa jest inna. Strefa czasowa jest dostarczana przez sterownik ODBC systemu ERP w wirtualnej kolumnie. Kolumna ma taką samą nazwę jak oryginalny atrybut z dodatkiem _timezone. Atrybut ten musi być wyprowadzany w osobnym polu. Jeśli strefa czasowa nie różni się od strefy czasowej organizacji źródła danych, kolumna ta jest pusta.
Wszystkie informacje o czasie i dacie muszą być sformatowane oddzielnie, tak aby ta sama sekwencja dnia, miesiąca i roku oraz te same separatory daty i godziny były używane jak w Comarch ERP Enterprise.
Atrybuty BLOB
Jeśli atrybuty BLOB są wyprowadzane jako obrazy, obrazy muszą być zapisane w bazie danych w formatach obsługiwanych przez Crystal Reports.
Formaty obsługiwane przez Crystal Reports dla obrazów to
- bmp
- jpg
- png
Używanie parametrów
Do raportu można dodać dowolną liczbę parametrów zdefiniowanych przez użytkownika. Podczas importu do Comarch ERP Enterprise dla każdego parametru w raporcie tworzony jest odpowiedni parametr w Comarch ERP Enterprise. Parametry te pozwalają m.in. na wprowadzenie charakterystyki zapytania w aplikacji Raport: Dokumenty raportów.
Nazewnictwo
Parametr może składać się wyłącznie z dużych i małych liter oraz cyfr. Parametr powinien zaczynać się od nazwy raportu, po której następuje nazwa rzeczywista. Nazwa atrybutu jest używana dla atrybutów głównej jednostki biznesowej. W przypadku atrybutów z obiektów, które są przywoływane przez relacje klucza obcego, nazwa składa się z nazwy relacji i nazwy atrybutu.
Raport | Atrybut | Parametr |
SalesItem | SalesItem.abc | Abc |
Item.number | ItemNumber |
Podobne zasady muszą być zatem przestrzegane podczas przypisywania nazw parametrów dla aplikacji i raportów. Wielkość liter w nazwach nie ma znaczenia. Poniższe nazwy są używane przez parametry związane z systemem i dlatego nie mogą być używane dla parametrów zdefiniowanych przez użytkownika:
- ReportTitle
- SystemVariables
- SystemValues
- TextConstants
- TextValues
Parametr document, który również często występuje, jest używany tylko w dokumentach dokumentów. Jest on przeznaczony jako parametr transferu dla identyfikatora GUID dokumentu. Ponadto wszystkie nazwy parametrów zaczynające się od Report są zarezerwowane dla przyszłych rozszerzeń i nie mogą być używane dla parametrów zdefiniowanych przez użytkownika.
Typy danych w Crystal Reports
Poniższa tabela przedstawia typy danych, które można zaimportować z Crystal Reports do Comarch ERP Enterprise, a także inne opcje obsługiwane w oknie dialogowym Utwórz pole parametru lub Edytuj pole parametru w Crystal Reports:
Typ danych | Obsługiwane opcje | Czy możliwy jest import |
Boolean | Nie jest obsługiwane | Tak |
Waluta | Nie dotyczy | Nie |
Data | Nie dotyczy | Nie |
DateTime | Jest obsługiwany tylko w połączeniu z odpowiednim logicznym typem danych w Comarch ERP Enterprise | Tak |
Liczba | Brak ograniczeń | Tak |
String | Brak ograniczeń | Tak |
Czas | Nie dotyczy | Nie |
W przypadku braku przypisania logicznego typu danych do parametru w Comarch ERP Enterprise, specyfikacja dokonywana jest w aplikacji Raport: Dokumenty raportów zgodnie z poniższą tabelą:
Typ danych | Wielokrotność | Ukryty | Zakres | Dane |
Boolean | Nie | Tak | Nie | Wartość domyślna to Nieprawidłowe |
Liczba | Nie | Nie | Tak | Wprowadzenie danych jest obowiązkowe |
Tak | Tak | Nie | Wprowadzenie danych jest obowiązkowe | |
Tak | Nie | Tak | Wprowadzenie danych jest obowiązkowe | |
Tak | Tak | Tak | Wprowadzenie danych jest obowiązkowe | |
Ciąg znaków | Nie | Tak | Nie | Puste pole zostanie zastąpione znakiem „*” |
Nie | Nie | Tak | Wprowadzenie danych jest obowiązkowe | |
Tak | Tak | Nie | Puste pole zostanie zastąpione znakiem „*” | |
Tak | Nie | Tak | Wprowadzenie danych jest obowiązkowe | |
Tak | Tak | Tak | Wprowadzenie danych jest obowiązkowe |
Parametry z wartościami domyślnymi
W raporcie można określić wartości domyślne parametrów. Jeśli wartości domyślne są określone dla parametrów, nie może to być pojedyncza wartość domyślna określona jako „*”. Ponadto pole wyboru Zezwalaj na edycję wartości domyślnych musi być wyłączone dla parametru. W Crystal Reports 11 opcja Zezwalaj na edycję danych musi być ustawiona na False dla parametru.
Logiczne typy danych w Comarch ERP Enterprise
Podczas importu raportu do Comarch ERP Enterprise można przypisać logiczny typ danych do każdego parametru zdefiniowanego przez użytkownika.
Logiczny typ danych i przypisany do niego opis danych nadają parametrowi inne właściwości. Obejmują one pomoc wejściową i etykietowanie pola wyboru w aplikacji Raport: Dokumenty raportów, a także informację, czy podanie wartości jest obowiązkowe dla danych wyjściowych. Logiczny typ danych jest zwykle określany w aplikacji Raporty po zaimportowaniu. W przypadku niektórych prostych typów danych można pominąć specyfikację odpowiedniego logicznego typu danych. W takim przypadku nie ma pomocy wejściowej, a etykietowanie zdefiniowane w Crystal Reports jest przyjmowane przez Comarch ERP Enterprise. Etykietowanie jest również przyjmowane, jeśli w opisie danych nie określono tekstu dla etykietowania. Wszelkie inne informacje przechowywane w szablonie raportu, takie jak wartości domyślne (domyślne), nie są przyjmowane.
Podczas zapisywania szablonu raportu w Comarch ERP Enterprise system sprawdza, czy typy danych używane w Crystal Reports są zgodne z logicznymi typami danych przypisanymi w Comarch ERP Enterprise.
Dla każdego parametru raportu należy utworzyć osobny logiczny typ danych i powiązany z nim opis danych. Zapewnia to możliwość wprowadzania tekstów i bezpośredniej pomocy dla parametru. Nazwa logicznego typu danych składa się z nazwy raportu i nazwy parametru.
Zakres | Parametr | Logiczny typ danych |
com.cisag.app.sales.rpt.SalesItem | Abc | com.cisag.app.sales.rpt.SalesItemAbc |
ItemNumber | com.cisag.app.sales.rpt.SalesItemItemNumber |
Klasyfikacje
Aby uzyskać pomoc wejściową dla klasyfikacji pola parametru w aplikacji Raport: Dokumenty raportów, należy użyć logicznego typu danych, który ma specjalne właściwości. Ten logiczny typ danych musi być oparty na logicznym typie danych, który został użyty dla atrybutu path odpowiedniej klasyfikacji. Na przykład, aby uzyskać wartość help dla klasyfikacji com.cisag.app.sales.obj.SalesItemHierarchy1, logiczny typ danych dla pola parametru musi być pochodną com.cisag.app.sales.SalesItemHierarchy1Path.
Cechy szczególne DateTime
W przypadku typu danych DateTime w Crystal Reports sterownik ODBC systemu ERP przesyła specyfikację czasu związaną ze strefą czasową Greenwich Mean Time (GMT).
Wartość tę można przekonwertować na strefę czasową używaną w źródle danych (DSN) za pomocą tabeli wirtualnej. Konwersja jest jednak możliwa tylko dla pojedynczych wartości; nie można konwertować wielu wartości lub zakresów. Jeśli zakres dat jest przesyłany jako parametr w szablonie raportu, zaleca się zdefiniowanie dwóch oddzielnych parametrów z dyskretnymi wartościami bez wielu wpisów w raporcie.
Używanie parametrów w warunkach WHERE
W Crystal Reports można używać operatorów takich jak is equal to, is one of, is between lub is like do porównywania parametru wyboru w warunku WHERE.
Można również przechowywać złożone wyrażenie w formule, która jest odpytywana w warunku WHERE. To, które operatory zostaną użyte w raporcie, zależy od definicji danego parametru i logicznego typu danych używanego w Comarch ERP Enterprise.
Użycie operatorów w warunku WHERE raportu nie jest importowane do Comarch ERP Enterprise i nie jest sprawdzane. Dlatego należy zawsze upewnić się, że użyte operatory są zgodne z logicznym typem danych w Comarch ERP Enterprise. Jeśli parametr w raporcie jest typu danych string, a logiczny typ danych w Comarch ERP Enterprise dopuszcza pusty ciąg, wówczas preferowany jest operator is like. W takim przypadku nie ma potrzeby zapisywania gwiazdki (*) jako wartości domyślnej w szablonie raportu, ponieważ Comarch ERP Enterprise automatycznie zastępuje pusty ciąg gwiazdką.
Jeśli operator równości (=) zostanie użyty w warunku WHERE do porównania parametru z identyfikatorem GUID, wówczas nie można określić żadnych rekordów danych z wartością zero. Poniższy przykład pokazuje tę sytuację na przykładzie fikcyjnego szablonu raportu do wyprowadzania zleceń sprzedaży:
Szablon raportu do wyprowadzania zleceń sprzedaży ma parametr SalesRep. Parametr ten jest używany do zapytania o sprzedaż poszczególnych przedstawicieli handlowych. Jeśli nie określono żadnego przedstawiciela handlowego, należy wypisać sprzedaż wszystkich przedstawicieli handlowych.
W szablonie raportu dwie tabele bazy danych {app_sales_SalesOrder} i {app_general_Partner} są połączone lewym sprzężeniem zewnętrznym. Warunek WHERE {Partner.number} like {?SalesRep} zwraca wartość * dla wszystkich zamówień sprzedaży z przedstawicielem handlowym. Jeśli mają zostać określone zlecenia sprzedaży bez przedstawiciela handlowego, należy również sprawdzić wartość za pomocą funkcji IsNull(). Aby zapobiec sytuacji, w której niepusta wartość (np. 70030) określa również zamówienia sprzedaży bez przedstawiciela, warunek WHERE może wyglądać następująco:
({?SalesRep}=”*” and IsNull({app_sales_SalesOrder.salesRepresentatives_0_}) or ({app_general_Partner.number} like {?SalesRep}))
Zmienne systemowe
Zmienne systemowe służą do przesyłania informacji kontekstowych podczas tworzenia raportów. Umożliwiają one dostęp do informacji, które serwer aplikacji systemu ERP przekazuje do menedżera danych wyjściowych systemu ERP.
Parametry SystemVariables i SystemValues muszą być zdefiniowane w raporcie jako ciągi znaków i umożliwiają przesyłanie wielu wartości (tablic). Nazwy zmiennych systemowych zdefiniowanych w Comarch ERP Enterprise są przesyłane w parametrze SystemVariables. Wartości zmiennych systemowych przekazywane są w parametrze SystemValues. Do odczytu wartości z parametru SystemValues można wykorzystać funkcję GetValue (więcej informacji można znaleźć w rozdziale Funkcja GetValue). Wartości te są jednak zwykle udostępniane w polu formuły.
Zmienne systemowe są podzielone na kategorie. Każda kategoria jest wymieniona i opisana indywidualnie poniżej. Podana jest nazwa zmiennej systemowej, pole formuły, do którego zmienna jest kopiowana przez inicjalizacje oraz opis zmiennej:
Informacje systemowe
Poniższe informacje systemowe i wstępnie przypisane stałe tekstowe są dostarczane przez Comarch ERP Enterprise i mogą być wykorzystywane w raportach:
Zmienna systemowa | Pole | Wartość |
BACKGROUND_RED BACKGROUND_GREEN BACKGROUND_BLUE |
_Color | Wartość RGB dla koloru tła z koloru dla naprzemiennych wierszy listy aktywnego motywu tła. Jeśli kolor tła nie jest aktywowany w aplikacji Raport: Dokumenty raportów, przesyłana jest wartość RGB dla koloru białego (255, 255, 255). |
CONFIGURATION_NAME | _ConfigurationName | Nazwa bieżącej bazy danych konfiguracji. |
DELIVERY_METHOD | Wartość określa typ nośnika wyjściowego. Możliwe wartości to email, fax, drukarka i uri. | |
MULTI_SITE_ENABLED | _MultiSiteEnabled | Jeśli funkcja Wielofirmowość jest aktywna dla bazy danych OLTP, zmienna systemowa zawiera sekwencję znaków True. Jeśli funkcja nie jest aktywna, zmienna systemowa zawiera ciąg znaków False. |
MULTPLE_ORGANIZATIONS | _MultipleOrganizations | Jeśli funkcja Wielofirmowość lub Uprawnienia do treści jest aktywna dla bazy danych OLTP, oprócz organizacji klienta można zarejestrować kilka organizacji. W takim przypadku zmienna systemowa zawiera ciąg znaków True. W przeciwnym razie zawiera ciąg znaków False. |
NLS_ACTIVATED | NLS_ACTIVATED | Przetłumaczony tekst – Aktywowany |
NLS_COLON | NLS_COLON | Przetłumaczony tekst – : |
NLS_DEACTIVATED | NLS_DEACTIVATED | Przetłumaczony tekst – Dezaktywowany |
NLS_MARKED_FOR_DELETION | NLS_MARKED_FOR_DELETION | Przetłumaczony tekst – Wstawiono znacznik usuwania |
NLS_NO | NLS_NO | Przetłumaczony tekst – Nie |
NLS_PERCENT | NLS_PERCENT | Przetłumaczony tekst – % |
NLS_SLASH | NLS_SLASH | Przetłumaczony tekst – / |
NLS_YES | NLS_YES | Przetłumaczony tekst – Tak |
OLAP_DESCRIPTION | _OlapDescription | Oznaczenie bieżącej bazy danych OLAP |
OLAP_NAME | _OlapName | Nazwa bieżącej bazy danych OLAP |
OLTP_DESCRIPTION | _OltpDescription | Oznaczenie bieżącej bazy danych OLTP |
OLTP_NAME | _OltpName | Nazwa bieżącej bazy danych OLTP |
ORGANIZATION_GUID | _OrganisationGuid | Identyfikator GUID organizacji, w której kontekście odbywa się raport |
PAGE | _PageCount | Tłumaczenie słowa Page w odpowiednim języku raportu. Jeśli tłumaczenie nie jest dostępne w języku wyjściowym, używany jest główny język bazy danych repozytorium.Pole formuły przygotowuje tekst dla specyfikacji strony. Wynik zawiera również tekst dla Page. Na przykład „Strona 1 (10)”. |
REPORT_DESCRIPTION | _ReportDescription | Nazwa raportu w odpowiednim języku raportu.Jeśli nie zapisano tłumaczenia, opis jest wyświetlany w oryginalnym języku raportu. |
REPORT_LANGUAGE | _ReportLanguage | Skrót języka raportu. |
REPOSITORY_NAME | _RepositoryName | Nazwa bieżącej bazy danych repozytorium. |
RIGHT_FOOTING | _RightFooting | Ciąg znaków: Comarch ERP Enterprise.Jeśli tłumaczenie nie jest dostępne w języku wyjściowym, używany jest główny język bazy danych repozytorium. |
RIGHT_HEADING | _RightHeading | Ciąg znaków: Comarch ERP Enterprise.Jeśli tłumaczenie nie jest dostępne w języku wyjściowym, używany jest główny język bazy danych repozytorium. |
SERVER_NAME | _ServerName | Nazwa bieżącego serwera aplikacji systemu ERP. |
SYSTEM_NAME | _SystemName | Nazwa bieżącego systemu przedsiębiorstwa Comarch ERP Enterprise. |
USER_EMAIL_ADDRESS | _UserEmailAddress | Adres e-mail bieżącego użytkownika. |
USER_GUID | _UserGuid | Identyfikator GUID bieżącego użytkownika. |
USER_NAME | _UserName | Skrót nazwy bieżącego użytkownika. |
Informacje o użytkowniku
Poniższe informacje o użytkowniku są dostarczane przez Comarch ERP Enterprise i mogą być wykorzystywane w szablonach dokumentów i raportów:
Zmienna systemowa | Pole | Wartość |
USER_VALUE1 | _Company | Nazwa organizacji głównej. |
USER_VALUE2 | _DecimalPrice _DecimalAmount _DecimalsQuantity _DecimalsDuration |
Liczba miejsc dziesiętnych dla wyświetlania:
Poszczególne wartości są oddzielone od siebie spacją. Na przykład wartość PRICE 2 AMOUNT 2 QUANTITY 0 DURATION 0 oznacza, że ceny i kwoty mają być wyświetlane z dwoma miejscami po przecinku, a ilości i czasy bez miejsc po przecinku. |
USER_VALUE3 | Zmienna nie jest aktualnie używana. | |
USER_VALUE4 | Zmienna nie jest aktualnie używana. | |
USER_VALUE5 | Zmienna nie jest aktualnie używana. |
Zmienne systemowe USER_VALUE1 do USER_VALUE5 są przeznaczone do przesyłania informacji biznesowych.
Aktualnie nieużywane zmienne można wykorzystać za pomocą metody initReportUserValues() klasy com.cisag.app.general.log.ReportExtensionLogicImpl w ramach adaptacji. Należy jednak pamiętać, że przyszłe wykorzystanie w standardzie Comarch ERP Enterprise jest możliwe bez wcześniejszego powiadomienia. Dlatego zaleca się, aby najpierw użyć USER_VALUE5 do ewentualnej adaptacji, a dopiero potem USER_VALUE4 i USER_VALUE3.
Informacje wyjściowe
Podczas wysyłania na nośnik wyjściowy Faks można uzyskać dostęp do informacji z żądania wyjściowego w System Output Manager (SOM). Poniższe informacje wyjściowe są dostarczane przez Comarch ERP Enterprise i mogą być wykorzystywane w raportach:
Zmienna systemowa | Wartość |
FAX_TRANSMITTING_STATION_ID | Odpowiada polu Identyfikator nadawcy w ustawieniach wyjściowych dla nośnika wyjściowego Faks.Ta zmienna służy do wyświetlania numeru faksu nadawcy na faksie i na odbierającym urządzeniu faksowym. Dzięki temu odbiorca może otrzymać numer faksu, który różni się od centralnej usługi faksu. |
FAX_CONTROL_SEQUENCE | Odpowiada polu Sekwencja sterowania w ustawieniach wyjścia dla nośnika wyjściowego Faks. |
FAX_RECIPIENT_NUMBER | Odpowiada polu Numer faksu w ustawieniach wyjściowych dla nośnika wyjściowego Faks.W tej zmiennej można zapisać numer faksu odbiorcy. |
FAX_SCHEDULE_ACTION | Odpowiada polu Wyślij w ustawieniach wyjściowych dla nośnika wyjściowego Faks. Możliwe wartości to
Ta zmienna może być używana do określenia czasu wysyłania. |
FAX_SCHEDULE_TIME | Odpowiada polu Czas wysyłki w ustawieniach wyjścia dla nośnika wyjściowego Faks.Ta zmienna ma znaczenie tylko z wartością Dokładny czas (Nie wcześniej niż) w zmiennej systemowej |
FAX_DELIVERY_REPORT_ADDRESS | W tym polu przekazywany jest adres email użytkownika. Ta zmienna może być wykorzystywana do automatycznego potwierdzania wysyłania przez odbiorcę. |
FAX_RECIPIENT_NAME | Zmienna nie jest aktualnie używana. |
FAX_SENDER_COMPANY | Zmienna nie jest aktualnie używana. |
FAX_SENDER_DEPARTMENT | Zmienna nie jest aktualnie używana. |
FAX_SENDER_NAME | Zmienna nie jest aktualnie używana. |
FAX_BILLING_CODE | Zmienna nie jest aktualnie używana. |
Informacje wyjściowe są przesyłane tylko przy ustawieniu wyjścia Faks. Jest to istotne tylko w przypadku korzystania z oddzielnego rozwiązania faksu. ERP System Output Manager (SOM) nie uwzględnia żadnych zmiennych w dokumencie lub dokumencie raportu, ponieważ informacje te są już znane w żądaniu danych wyjściowych.
Jeśli wykorzystywana jest usługa faksu, która różni się od SOM, należy wyprowadzić zmienne systemowe wraz z raportem. Aby zapewnić, że informacje wyjściowe pozostaną niewidoczne dla odbiorcy, można je na przykład wydrukować białym kolorem czcionki na białym tle. Zazwyczaj konieczne jest wysłanie tych informacji do drukarki faksu w postaci tekstu (a nie grafiki). Dlatego należy używać czcionki obsługiwanej przez drukarkę (faksową).
Niezależność językowa raportów
Możliwy jest wydruk raportu w kilku językach. Z jednej strony można utworzyć zależne od języka pliki Crystal Reports dla każdego obsługiwanego języka wyjściowego, a następnie zaimportować je do Comarch ERP Enterprise. Z drugiej strony, można również utworzyć pojedynczy raport niezależny od języka, który może być wydrukowany w dowolnym obsługiwanym języku. Tłumaczenia elementów tekstowych zależnych od języka, takich jak etykiety pól i tytuły raportów, są przechowywane w Comarch ERP Enterprise i udostępniane raportowi przez parametr, gdy jest on wyprowadzany.
Możliwe są również kombinacje plików raportów zależnych od języka i niezależnych od języka w tym samym raporcie. W takim przypadku wszystkie szablony raportów muszą mieć te same parametry. Oznacza to, że należy również przechowywać parametry w szablonach raportów zależnych od języka w celu przeniesienia tłumaczeń. W ten sposób można na przykład utworzyć raport, który ma inny układ w zależności od języka, ale którego tłumaczenie może nadal odbywać się w Comarch ERP Enterprise.
Tłumaczenia stałych tekstowych są przenoszone w taki sam sposób jak zmienne systemowe. Są one kopiowane do zmiennych podczas inicjalizacji w polu formuły _InitializeTextValues. Przykładowo, jeśli w Comarch ERP Enterprise zapisano stałą tekstową NLS_COLUMN1, to dla nowego tekstu należy rozszerzyć formułę w _InitialiseTextValues. Dla każdego tekstu tworzone jest pole formuły, które wyświetla przetłumaczony tekst. W naszym przykładzie jest to pole formuły NLS_Column1.
Pole formuły _ReportLanguage jest dostępne w szablonie raportu EmptyReport.rpt. Za pomocą tej formuły można na przykład wybrać teksty dokumentów w raporcie podrzędnym zgodnie z odpowiednim językiem wyjściowym.
Raporty wielojęzyczne
W przypadku niektórych dokumentów raportu, na przykład do użytku w krajach z kilkoma językami urzędowymi, może być konieczne użycie różnych języków w raporcie.
Funkcja wirtualna pgm_FieldTranslationVirtualFunction służy do wyprowadzania poszczególnych wielojęzycznych atrybutów łańcuchowych lub wpisów zestawu wartości w innym języku.
Statyczne teksty w raporcie (stałe) można wywołać za pomocą wirtualnej tabeli pgm_ReportTextTranslationVirtualTable. Ta wirtualna tabela powinna być używana w pordaporcie. Stałe w żądanym języku mogą być dostarczone do raportu przy użyciu zmiennej współdzielonej w Crystal Reports.
Niektóre funkcje wirtualne zostały rozszerzone o opcjonalny parametr wejściowy in_language, aby wyświetlić zawartość w języku innym niż język wyjściowy raportu.
Elementy tekstowe między raportami
Stałe tekstowe oferują możliwość wprowadzania i tłumaczenia niesformatowanych tekstów niezależnie od pliku raportu w Comarch ERP Enterprise. Są one specyficzne dla raportu i są eksportowane i importowane z odpowiednim obiektem biznesowym Raport lub przekazywane do obiektu programistycznego Raport w formie aktualizacji oprogramowania. Są one szczególnie przydatne w przypadku krótkich tekstów, takich jak nagłówki kolumn, które wyglądają inaczej w każdym raporcie.
W niektórych przypadkach pożądane jest również przechowywanie gotowego zestawu sformatowanych tekstów standardowych, aby można było ich używać w ten sam sposób podczas generowania kilku raportów. Takie teksty można rejestrować w aplikacji Elementy tekstowe i wykorzystywać w raportach. Elementy tekstowe są niezależnymi od organizacji danymi w bazie danych OLTP i są przechowywane w obiekcie biznesowym com.cisag.app.general.obj.Text. Klucz obiektu biznesowego zawiera identyfikujący ciąg znaków i identyfikator GUID języka, dla którego zarejestrowano moduł tekstowy. W sekcji danych obiekt biznesowy zawiera przetłumaczalny opis (atrybut description) i sformatowany tekst HTML (atrybut text).
Ponieważ elementy tekstowe istnieją całkowicie niezależnie od raportów, które ich używają, nie są one przekazywane podczas importowania lub eksportowania raportów. Należy unikać używania elementów tekstowych w obiekcie programistycznym Raport, ponieważ nie można zagwarantować, że używane stałe tekstowe są rejestrowane we wszystkich bazach danych OLTP, na których raport jest później wykonywany. Brak używanych modułów tekstowych oznacza w każdym przypadku dostęp do bazy danych.
Włączenie wymaga następujących komponentów
- Zmienne globalne przechowujące przetłumaczone, sformatowane teksty. Oddzielna zmienna TEXT_nnn dla każdego tekstu.
- Podraport Texts na poziomie nagłówka raportu, który wybiera dane dla wszystkich wymaganych modułów tekstowych za pomocą jednego dostępu. Używany jest tutaj język wyjściowy ze zmiennej systemowej ReportLanguage. Za pomocą sprzężenia między obiektami biznesowymi com.cisag.app.general.obj.Language i com.cisag.appp.general.obj.Text można wybrać zestaw elementów tekstowych we właściwym języku. Ponieważ podraport jest wstawiany na poziomie nagłówka raportu, wykonywane jest tylko jedno zapytanie do bazy danych.
- Pętla, w której każdej zmiennej globalnej TEXT_nnn przypisywana jest wartość atrybutu Text.text dla odpowiedniego wiersza.
- Pola tekstowe z interpretacją HTML, które wyświetlają zawartość zmiennych globalnych w sformatowanej formie. Mogą one być używane zarówno w nagłówku, jak i w obszarze szczegółów lub stopki.
Instrukcja integracji elementów tekstowych z plikiem raportu składa się z następujących kroków:
- Należy otworzyć Crystal Reports.
- Następnie należy otworzyć plik raportu, który ma zostać dostosowany.
- Należy wybrać widok Projekt.
- Kolejnym krokiem jest otworzenie Kreatora raportów dla nagłówka raportu i dodać kolejny nagłówek raportu.
- Następnie należy wybrać pozycję Wstaw/Podraport w menu i utworzy nowy podraport o nazwie Texts za pomocą kreatora raportów. W tym celu należy najpierw utworzyć połączenie ze źródłem danych Semiramis-OLTP.
- Pojawi się hierarchia istniejących źródeł danych.
- W katalogu CISAG / ENTITY należy wybrać dwa obiekty biznesowe app_general_Text (element tekstowy) i app_general_Language (język) i dodać je do wybranych tabel.
- Następnie należy wybrać przycisk [Dalej]. W razie potrzeby sprawdzić i poprawić powstałe powiązania między app_general_Text i app_general_Language. Tabele te muszą być połączone za pomocą LEFT OUTER JOIN przy użyciu języka:
app_general_Text.language_ –> app_general_Language.guid_
Po wprowadzeniu relacji raport cząstkowy jest gotowy. - Należy przenieść raport cząstkowy do wcześniej dodanego dodatkowego nagłówka raportu.
- Kolejnym krokiem jest sformatowanie raportu cząstkowego. Aby to zrobić, należy umieścić kursor na raporcie cząstkowym w eksploratorze raportów i wybierać pozycję Formatuj raport cząstkowy w menu kontekstowym. Następnie należy przejść do zakładki Ramka i wybierać typ wiersza Brak. Następnie należy przejść do zakładki Podraport i określić, że puste podraporty mają być pomijane.
- Należy przypisać do raportu cząstkowego język, w którym ma być wyświetlany raport główny. W tym celu należy ustawić wskaźnik myszy na raporcie cząstkowym i wybrać pozycję Zmień łącza raportu cząstkowego w menu kontekstowym. Następnie wybrać pole formuły _ReportLanguage (w niektórych raportach pole nosi nazwę ReportLanguage). Przypisać atrybut soCode tabeli app_general_Language z raportu podrzędnego do pola. Potwierdź wybór przyciskiem [OK]. Wynikiem jest pole parametru i formuła wyboru w raporcie cząstkowym. Formuła wyboru będzie wyglądać następująco:
{app_general_Language.isoCode} = {?Pm-@ReportLanguage}. - Następnie należy przejść do raportu czśąstkowego i dostosować go. Może on mieć tylko jeden nagłówek raportu i jedną stopkę raportu. Obszar szczegółów nie może być podzielony. Pola wstępnie przypisane przez kreatora muszą zostać usunięte. Wszystkie obszary raportu cząstkowego z wyjątkiem szczegółów muszą być wyłączone. Obszary te można pominąć, wybierając pozycję Pomiń w menu kontekstowym. Obszar szczegółów nie może być ani wyłączony, ani ukryty.
- Należy ograniczyć liczbę elementów tekstowych, które mają być używane, określając odpowiednie klucze biznesowe za pomocą atrybutu app_general_Text.code przy użyciu kreatora wyboru lub formuły wyboru zestawu danych.
{app_general_Text.code} = „100” lub {app_general_Text.code} = „200” )
{app_general_Text.code} w [„100”, „200”]
- Należy wprowadzić pole formuły o nazwie ResolveTexts w raporcie cząstkowym, aby rozwiązać wartości w zależności od elementu tekstowego. Formuła musi zawierać zmienne globalne do przesyłania tekstów do raportu głównego oraz formułę wyboru do rozwiązywania w zależności od elementu tekstowego. Stałe do identyfikacji elementów tekstowych, które zostały już użyte w formule selekcji, są również używane ponownie w tym przypadku:
shared stringVar strText200;
local stringVar strTextCode;
strTextCode:={app_general_Text.code};
if (strTextCode=”100″) then
(strText100:={app_general_Text.text};)
else if (strTextCode=”200″) then
(strText200:={app_general_Text.text};)
- Następnie należy przenieść pole formuły ResolveTexts do obszaru szczegółów podraportu.
UwagaJeśli pole formuły zostanie umieszczone w nagłówku raportu, tylko jeden z tekstów zostanie rozwiązany. - Należy sformatować pole formuły jako Stłumiony, wywołując Edytor formatów w polu i aktywując wskaźnik Tłumienie w zakładce Ogólne.
- Należy przejść do raportu głównego.
- Następnie należy wprowadzić pola formuły w raporcie głównym, które będą używane do wyświetlania rozszerzonych elementów tekstowych w raporcie cząstkowym.
shared stringVar strText100;
strText100;
shared stringVar strText200;
strText200;
- Należy przenieść pola formuły na żądane pozycje w raporcie.
- Następnie sformatować pola formuły. W tym celu należy dostosować rozmiar pól i ich pozycje oraz wprowadzić Tekst HTML jako interpretację tekstu w zakładce Akapit.
Podraport Formatowanie
Istnieje funkcja wirtualna o nazwie pgm_Formats służąca do wyświetlania wartości czasu i liczb zgodnie z ustawieniami użytkownika. Ta funkcja wirtualna ma następujące atrybuty:
Atrybut | Znaczenie |
in_userName | Nazwa użytkownika |
in_userGuid_ | Identyfikator GUID użytkownika |
numberDecimalSeparator | Separator dziesiętny |
numberGroupingSeparator | Separator grupowy |
currencyDecimalSeparator | Separator dziesiętny dla walut |
currencyGroupingSeparator | Separator grupowy dla walut |
currentDate | Bieżąca data |
dateSeparator | Separator daty |
dateOrder | Format daty |
timeSeparator | Separator czasu |
Formatowanie liczb
W Comarch ERP Enterprise informacje dotyczące formatowania liczb ustawiane są w aplikacji Konfiguracja. Wszystkie raporty tworzone dla Comarch ERP Enterprise powinny przyjmować to formatowanie, aby zmiana tych ustawień obowiązywała również w raportach bez konieczności ich dostosowywania. Liczby są formatowane za pomocą funkcji Crystal Reports cStr (toText). Wymaga to wartości z bazy danych, liczby miejsc dziesiętnych, separatora tysięcy i separatora dziesiętnego. Formuła wyglądałaby mniej więcej tak, przy czym table.column należy zastąpić konkretną kolumną tabeli:
shared stringVar strDecimalSeparator;
shared stringVar strGroupingSeparator;
cStr({Table.column}, {@_DecimalsQuantity}, strGroupingSeparator, strDecimalSeparator);
Pole formuły _DecimalsQuantity służy do formatowania ilości. W przypadku wartości, cen lub czasów należy użyć odpowiednich pól formuły _DecimalsAmount, _DecimalsDuration lub _DecimalsPrice.
Formatowanie czasu i daty
Kolumny typu CisAttributeDate i CisObjectDate są zawsze formatowane zgodnie ze strefą czasową w bazie danych. Podobnie jak w Comarch ERP Enterprise, jeśli strefa czasowa różni się od strefy czasowej źródła danych, należy wyświetlić nazwę strefy czasowej. Strefa czasowa jest wyprowadzana przez sterownik ODBC systemu ERP w wirtualnej kolumnie, która kończy się na _timezone i jest poprzedzona nazwą atrybutu. Atrybut ten musi być wyprowadzany w osobnym polu. Jeśli strefa czasowa nie różni się, kolumna ta jest pusta.
Pola z godziną i datą muszą być sformatowane ręcznie. Wymienione zmienne są wypełniane w raporcie cząstkowym Formatowanie. Formatowanie należy przeprowadzić indywidualnie dla każdego pola. Ustawienia w oknie dialogowym Crystal Reports opisano poniżej.
Edytor formatu Godzina i data
W zakładce Data formuły mogą być przechowywane w różnych miejscach w celu wyświetlania danych zgodnie z ustawieniami użytkownika.
- Poniższa formuła jest dostępna dla obszaru Sekwencja:
shared numberVar numDateOrder;
numDateOrder; - Następujące formuły dla separatorów dat są dostępne dla obszaru Separator:
shared stringVar strDateSeparator;
strDateSeparator;
W zakładce Czas formuły mogą być przechowywane w różnych miejscach w celu wyświetlania czasów zgodnie z ustawieniami użytkownika:
- Poniższa formuła dla separatora czasu jest dostarczana dla dolnego obszaru w każdym przypadku:
shared stringVar strTimeSeparator;
strTimeSeparator;
Uwagi
Korzystanie z raportów cząstkowych
Z definicji raport podrzędny korzysta z tego samego symbolicznego źródła danych co raport główny. Menedżer danych wyjściowych systemu ERP (SOM) automatycznie zastępuje każde źródło danych, które różni się od raportu głównego, źródłem danych raportu głównego.
Aby pomyślnie zaimportować szablon raportu do Comarch ERP Enterprise, wszystkie raporty podrzędne muszą zostać zapisane razem z raportem głównym. Opcja oferowana przez Crystal Reports umożliwiająca zapisanie raportu cząstkowego jako osobnego pliku Crystal Reports nie jest obsługiwana przez Comarch ERP Enterprise. Pola parametrów raportu cząstkowego muszą być powiązane z polami raportu głównego.
W przypadku zdefiniowania parametrów dla raportu cząstkowego, których wartości nie są pobierane z raportu głównego, pola wejściowe dla tych parametrów pojawiają się w aplikacji Raport: Dokumenty raportów.
Należy pamiętać, że raport cząstkowy nie może automatycznie uzyskać dostępu do wartości parametrów raportu. Jeśli ma zostać wprowadzone tłumaczenie przechowywane w Comarch ERP Enterprise w raporcie cząstkowym, można na przykład wyprowadzić wartość odpowiednich stałych tekstowych w niewidocznym polu w raporcie głównym przed wywołaniem raportu cząstkowego. W raporcie cząstkowym tworzona jest nowa formuła, która wyświetla wartość zmiennej:
shared stringVar strDeleted;
Rozwiązywanie problemów i ocena
Monitory wydajności
Przed wydaniem raportu do użytku w systemie produkcyjnym należy sprawdzić dostępy do bazy danych spowodowane przez raport. Na przykład połączenie dwóch tabel za pomocą nieindeksowanego atrybutu może spowodować niepotrzebne obciążenie serwera przetwarzania. W niekorzystnych przypadkach może to nawet znacznie pogorszyć czasy odpowiedzi dla innych użytkowników w tym samym systemie.
W Comarch ERP Enterprise dostępna jest aplikacja Monitory wydajności. Za pomocą tej aplikacji można mierzyć dostępy ODBC i dostępy do serwera ODBC dla konkretnego raportu. Więcej informacji można znaleźć w artykule Monitory wydajności.
Źródła danych ODBC
Podczas wprowadzania źródła danych (DSN) można kontrolować wyświetlanie dodatkowych informacji na konsoli w Comarch ERP Enterprise, określając poziom dziennika. Specyfikacja jest dodawana do adresu URL jako parametr oddzielony znakiem ampersand.
Więcej informacji można znaleźć w dokumentacji Źródła danych ODBC.
Sprawdzanie wydajności raportów
Poniższe uwagi mają na celu optymalizację wydajności raportów.
Unikanie łączenia RIGHT OUTER JOIN
Podczas łączenia tabel nie należy używać łączenia typu right inclusion (RIGHT OUTER JOIN), ponieważ może to mieć negatywny wpływ na czas wymagany dla zapytania SQL.
W dokumentach zazwyczaj istnieje tabela główna (jednostka biznesowa reprezentująca dokument). Ta główna tabela jest ograniczona do dokumentu, który ma zostać wyprowadzony. Ponadto istnieje zwykle wiele innych tabel (tabele przeglądowe), które mają być połączone za pomocą INNER JOIN lub LEFT OUTER JOIN.
RIGHT OUTER JOIN zapewniłoby dane, dla których istnieją pasujące rekordy danych zarówno w tabeli głównej, jak i tabeli połączonej, a także te, dla których istnieją tylko pasujące rekordy danych w tabeli połączonej. Jednak te ostatnie są wykluczone przez ograniczenie do dokumentu, który ma być wyprowadzony, tak że zestaw wyników odpowiada temu, który uzyskuje się przy użyciu INNER JOIN.
Użycie INNER JOIN uniemożliwia efektywne wykonanie zapytania SQL podczas wyprowadzania dokumentów dokumentów i należy go pilnie unikać ze względu na brak wpływu na zestaw wyników w wyżej wymienionej konstelacji.
W Crystal Reports powiązania są modelowane wizualnie za pomocą kreatora bazy danych. Linie łączące tabele mają grot strzałki dla typów Left inclusion i Right inclusion. W przypadku obu typów wskazuje on w tym samym kierunku od tabeli głównej do tabeli odnośników i dlatego może zostać błędnie zinterpretowany przez użytkownika. Dlatego należy sprawdzić zapytanie SQL, które ma zostać wykonane bezpośrednio za pomocą menu Database/Display SQL query….
Zapytanie:
SELECT a:Number, v:Name FROM Order a RIGHT OUTER JOIN Substitute v ON v:GUID = a:Substitute WHERE a:Number = „1000” (FALSE!)
zwraca zamówienie z numerem 1000, jeśli jest do niego przypisany zamiennik. To zapytanie musi zostać zmienione bez strat tak, aby używane było wewnętrzne łącze, ponieważ ograniczenie numeru zamówienia zapobiega pojawianiu się w produkcie krzyżowym zamienników, które nie są przypisane do zamówienia:
SELECT a:Number, v:Name FROM Order a INNER JOIN Substitute v ON v:GUID = a:Substitute WHERE a:Number = „1000” (CORRECT)
Unikanie raportów cząstkowych
W miarę możliwości należy unikać podraportów lub wywołań podraportów, ponieważ mogą one prowadzić do znacznego wydłużenia czasu wydruku. Każde wywołanie raportu podrzędnego w dokumencie prowadzi do oddzielnego zapytania SQL za pośrednictwem sterownika ODBC systemu ERP z odpowiednim czasem opóźnienia dla połączenia między Crystal Reports i Comarch ERP Enterprise, a także połączenia między Comarch ERP Enterprise i bazą danych.
Unikanie widoku OQL
Nie należy używać widoków OQL w dokumentach w celu zmniejszenia liczby kolumn.
Unikanie widoku DISTINCT
W zapytaniach OQL i widokach OQL należy unikać słowa kluczowego DISTINCT, jeśli to możliwe. Słowo kluczowe DISTINCT oznacza, że identyczne wartości, które występują kilka razy w tabeli podczas wybierania atrybutów, są wyświetlane tylko raz na liście wyników. DISTINCT często można pominąć, ponieważ w zestawie wyników nie mogą wystąpić zduplikowane wpisy ze względu na zawarte tabele i ich wzajemne relacje.
Słowo kluczowe DISTINCT jest niepotrzebne na przykład w poniższym poleceniu, ponieważ zestaw wyników zawiera klucz podstawowy a:GUID tabeli Order, a to już wyklucza zduplikowane wpisy:
SELECT DISTINCT a:GUID, a:client FROM order a (FALSE!)
Unikanie FULL-TABLE-SCAN
Przeszukiwanie całej tabeli w bazie danych jest znane jako FULL-TABLE-SCAN. FULL-TABLE-SCAN jest zawsze wyzwalany, gdy tabele są dostępne bez uwzględnienia ich indeksów. W przypadku dużych tabel prowadzi to do niezwykle długich czasów wykonywania zapytań.
FULL-TABLE-SCAN są szczególnie problematyczne, ponieważ często pozostają niezauważone przy niewielkich ilościach danych, ale później prowadzą do liniowo rosnących czasów wykonania w systemie produkcyjnym wraz ze wzrostem ilości danych.
Aby uniknąć FULL-TABLE-SCAN, plan wykonania systemu zarządzania bazą danych (DBMS) powinien być analizowany pod kątem bardziej złożonych zapytań. Wówczas może być konieczna zmiana zapytania tak, aby wykorzystywane były indeksy już dostępne w standardzie. Jeśli nie istnieją odpowiednie indeksy dla konkretnego zapytania, można również utworzyć własne indeksy. Można nimi wygodnie zarządzać za pomocą aplikacji Indywidualne indeksy.
Znane ograniczenia
Maksymalna liczba sekcji
Można zdefiniować tylko do 40 sekcji na typ sekcji (nagłówek raportu, szczegóły itp.), w przeciwnym razie mogą wystąpić błędy podczas wysyłania za pośrednictwem Menedżera danych wyjściowych systemu ERP (SOM).
Zduplikowane wiersze podczas korzystania z TotalPageCount
Jeśli pole TotalPageCount jest używane w formule String, w złożonych raportach mogą pojawić się zduplikowane wiersze.
Jeśli jednak pole jest używane jako osobne pole, błąd ten zwykle już nie występuje.