HermesSQL

  1. Strona główna
  2. Docs
  3. HermesSQL
  4. Środowisko rozszerzeń SQL

Środowisko rozszerzeń SQL

Wydrukuj dokument

Wstęp

Nie sposób wyobrazić sobie nowoczesny system wspomagający proces zarządzania przedsiębiorstwem, który nie dawałby możliwości elastycznego dostosowania go do potrzeb firmy. Obecnie większość przedsiębiorstw poszukuje rozwiązań dających im możliwość wsparcia informatycznego szczególnie w tych obszarach ich działalności, w których nie sprawdza się standardowa funkcjonalność gotowych programów. Systemy o elastycznej strukturze prezentują możliwość indywidualnego podejścia do realizacji tych potrzeb poprzez oprogramowanie dodatkowej funkcjonalności. Cechę tę posiada program, który dzięki licznym narzędziom i mechanizmom służącym do jego profilowania daje przedsiębiorstwu szerokie możliwości dostosowywania go nawet do bardzo specyficznych wymagań. Umożliwia rozszerzenie istniejącej już w systemie funkcjonalności o dodatkowe rozwiązania informatyczne spełniające wymagania indywidualnych klientów, jak również tworzenie nowych modułów, których zawartość funkcjonalna zależy od potrzeb odbiorcy i jest wyrazem specyfiki jego działalności. Program pozwala także opracowywać dodatkowe filtry sortujące dane wg żądanych kryteriów, oraz własne wzorce wydruków i raporty. Umożliwia również modyfikację widoków tabel wyświetlanych na ekranie, które mogą być zaprojektowane indywidualnie dla każdego operatora systemu.

Narzędzia i mechanizmy służąca do profilowania programu dostępne są w module Środowisko rozszerzeń.

Zawartość modułu Środowisko rozszerzeń:

  • Generator raportów – edytor wydruków pozwalający tworzyć własne wydruki oraz zaawansowane raporty i zestawienia, a także funkcjonalność umożliwiająca importowanie i eksportowanie dodatkowych wzorców wydruku pomiędzy systemami Humansoft
  • Definicje widoków (tabel) – możliwość pobierania dodatkowych danych z bazy i wyświetlania ich w tabelach
  • Funkcje użytkownika i wtyczki – możliwość dopisania własnych programów rozszerzających funkcjonalność programu, uruchamianych z poziomu dokumentów oraz funkcjonalność pozwalająca włączyć ją do systemu
  • Epilog do dokumentów – możliwość dopisania własnego programu uruchomianego przy zamykaniu dokumentu, który wykonywać będzie określone przez Użytkownika działania, np. obliczenia, zapis do bazy, wysłanie komunikatów itp.
  • Prolog do dokumentów – umożliwienie oprogramowania prologu do dokumentów, który uruchamiany będzie przed zapisaniem nagłówka dokumentu. Umożliwia on wykonanie określonych przez Użytkownika działań, a w szczególności zablokowania pod pewnymi warunkami dodawania dokumentu
  • Środowisko modułów branżowych – udostępnia specjalizowaną bibliotekę klas, w oparciu, o którą mogą powstawać nowe rozwiązania informatyczne (nowe moduły) zintegrowane z systemem. Jest to opcja dająca największe możliwości dostosowania oprogramowania do potrzeb przedsiębiorstwa.
  • Broker – służy do integracji Hermesa z zewnętrznymi aplikacjami. Możliwe jest m.in. dodawanie i edycja niektórych dokumentów; uzyskiwanie danych odbywa się za pomocą poleceń w języku XML, które Hermes otrzymuje od aplikacji zewnętrznej, z którą się komunikuje.

Widoki

Znaczenie pojęcia widok dla zwykłego użytkownika programu nie jest tak istotne jak dla osoby sprawującej pieczę nad sprawnym działaniem systemu i nad dostosowaniem go do nietypowych, indywidualnych potrzeb użytkowników. Osoba nie będąca administratorem może opuścić niniejszy rozdział.

Widok należy uważać za wirtualną tabelę. To, co w programie nazywamy tabelami a użytkownik widzi np. tabelę artykułów lub tabelę z dokumentami sprzedaży jest  de facto widokiem powstałym w wyniku zapytania instrukcją SELECT SQL. Widoki są obrazem danych z tabeli (lub wielu tabel) znajdujących się fizycznie w bazie na serwerze SQL. Zawartość widoku – pola jakie zawiera – uzyskuje się, odpowiednio formułując polecenie SELECT SQL.

Administrator ani tym bardziej użytkownik programu nie muszą pisać  tego polecenia gdyż istnieje w systemie narzędzie do jego konstrukcji polecenia w sposób wizualny. Narzędziem tym jest tzw. Projektant widoków.

1.1. Zarządzanie zapytaniami SQL

Zarządzanie zapytaniami SQL jest opcją która pozwala nam stworzyć bardzo wiele zapytań SQL, na podstawie których można tworzyć nowe widoki. W celu wywołania tej opcji należy na wybranej tabeli kliknąć F11 a następnie Zarządzanie zapytaniami SQL.

Okno Zapytania SQL zawiera listę zapytań fabrycznych oraz utworzonych przez użytkownika. Znaczniki bieżące i fabryczny, pokazują które z zapytań jest fabrycznym oraz które są ustawione jako bieżące.
Opcja Dodaj otwiera Projektanta widoku i umożliwia dodanie nowego zapytania.
Opcja Popraw pozwala edytować zapytania utworzone przez użytkownika. Nie ma jednak możliwości modyfikacji zapytań fabrycznych.
Zapytania utworzone przez użytkownika możemy również usunąć.
Zmień na bieżące pozwala nam zmienić wskazany widok na bieżący.

Zapytania SQL posiadają odrębne uprawnienia. Możemy odebrać dostęp do wskazanych zapytań poszczególnym operatorom lub profilom użytkowników.

Projektanta widoków używamy wtedy, gdy zaistnieje potrzeba wyświetlenia w dowolnej tabeli programu,  kolumny która fabrycznie się tam nie znalazła. Jakkolwiek projektant widoków jest narzędziem bardzo ułatwiającym  konstrukcję widoku, to do jego prawidłowego i pełnego wykorzystania przydaje się wiedza na temat składni polecenia SELECT SQL.

Aby wywołać projektanta widoku należy na wybranej tabeli wcisnąć F11 a następnie wybrać z listy Zarządzanie zapytaniami SQL.

Screen przedstawia projektanta widoków wywołanego z tabeli artykułów. Górną część okna zajmują trzy tabele z bazy SQL wchodzące w skład widoku. W części środkowej są zakładki będące odzwierciedleniem poszczególnych sekcji polecenia SELECT SQL. Najczęstszą potrzebą użytkownika jest dodanie do  widoku pola. Robi się to na pierwszej zakładce Pola gdzie po lewej jej stronie widoczna jest lista dostępnych dla widoku pól tabel a po prawej aktualnie dodane pola. Używając przycisków ze strzałkami   trzeba zmodyfikować listę Pola widoku wedle własnych potrzeb.

Przyciski  oraz  przesuwają wszystkie pola z listy do listy. Należy pamiętać o oszczędnym dodawaniu pól do widoku gdyż zbyt duża ich ilość przyczyni się do  spowolnienia wyświetlania tabeli. W widoku powinny być tylko te pola, które są naprawdę potrzebne.

Jeśli zaistnieje potrzeba użycia nie tylko samego pola ale jakiegoś wyrażenia lub  funkcji języka TRANSACT SQL, to takie wyrażenie można wpisać do pola Funkcje i wyrażenia a następnie używając przycisku  dodać je do pól widoku. Po dodaniu trzeba pamiętać, aby w pole Nazwa wpisać nazwę stworzonego wyrażenia. Przycisk  uaktywnia formularz służący łatwiejszej edycji wyrażenia.

Na zakładce Pola znajduje się znacznik . Jego zaznaczenie powoduje, że widok nie będzie zawierał powtórzeń pozycji, przy czym kryterium wykrywania powtórzeń jest pierwsze pole znajdujące się na liście Pola widoku. Przesuwając myszką pozycje listy  możemy ustalić, które pole ma się znaleźć na jej początku.

Zawartość listy Dostępne pola zależna jest od tabel, jakie są użyte w widoku. Aby dodać tabelę należy prawym klawiszem myszy kliknąć w górnym obszarze okna projektanta i z menu podręcznego wybrać opcję Dodaj tabelę. Następnie na wyświetlonej liście tabel z bazy programu trzeba wskazać żądaną  tabelę i nacisnąć przycisk OK.

Nowo dodana tabela musi mieć relacyjne powiązanie z pozostałymi tabelami w widoku. Powiązanie to należy zdefiniować na zakładkach WHERE lub JOIN.

Na zakładce WHERE dodaje się warunki łączące tabele wchodzące w skład widoku. Po naciśnięciu przycisku pojawi się okienko służące do definiowania warunku łączącego. Należy po lewej i po prawej stronie okienka wybrać łączone tabele, pola względem których połączenie ma nastąpić oraz operator łączenia (najczęściej znak =). Można również samemu wpisać warunek łączący.

Zakładka WHERE służy również do wpisywania warunków innych niż łączące – warunków filtrujących widok, np., gdy chcemy mieć widoczne w tabeli artykuły o określonej symbolice:

artykuly.symbol_art LIKE ‘A-001%’

Wynikiem złączenia zdefiniowanego w sekcji WHERE są wyłącznie te rekordy z tabel nadrzędnej i podrzędnej w których istnieje całkowita zgodność wartości pól użytych w warunku.

Czasami jednak chcemy uzyskać wszystkie rekordy z tabeli, nazwijmy ją głównej mimo że niektóre wartości w polu łączącym mogą  puste i nie zajdzie na nie relacja do drugiej tabeli. W takim przypadku warunek łączący definiujemy na zakładce JOIN tak jak na przykładzie:

Zapis: LEFT [OUTER] JOIN oznacza tzw. złączenie zewnętrzne, w wyniku którego widok będzie zawierał wszystkie rekordy z tabeli znajdującej się po lewej stronie klauzuli JOIN i tylko te rekordy z tabeli po prawej stronie, które odpowiadają złączeniu co do wartości klucza łączącego. Przykładem jest tutaj  złączenie artykułów (ARTYKULY) z tabelą stanów magazynowych (ART_MAG). W tabeli ART_MAG nie muszą pojawiać się wszystkie symbole artykułów – stąd konieczność złączenia typu LEFT OUTER JON, aby wyświetlić wszystkie artykuły. Przytoczony tu został typowy przypadek, jaki może zajść w programie. Innego typu złączenia JOIN nie występują w fabrycznych definicjach widoków.

Ostatnia zakładka Polecenie SQL pozwala użytkownikom na wpisanie całego polecenia wprost – bez konieczności budowania go później z elementów zdefiniowanych przez użytkownika. Dzięki temu możliwe jest zastosowanie m.in. funkcji napisanych w języku TSQL, zdefiniowanych w bazie danych i zwracających kursor.

Używanie tej zakładki powoduje zwiększenie odpowiedzialności, gdyż zapytanie może być dowolne. Autorzy nie wymuszają zastosowania głównej tabeli, widoku ani tego by widok zawierał pola klucza głównego tabeli (są to elementy niezbędne dla prawidłowego funkcjonowania mechanizmów zastosowanych w programie, np. edycja pozycji może być niemożliwa i powodować wystąpienie błędów).

Więcej szczegółów na temat składni polecenia SELECT prosimy szukać w literaturze dot. administrowania bazami SQL lub pomocy Visual FoxPro.

Aby zakończyć pracę z projektantem widoków należy zamknąć go używając przycisku OK. Program zapisze definicje i pojawi się ona na liście zapytań SQL.

Poprawiona definicja widoku może posłużyć  następnie do zmodyfikowania wyglądu i zawartości tabeli (patrz rozdział Manipulowanie zawartością tabel).

1.2. Zarządzanie widokami

Widoki tworzymy na podstawie wcześniej utworzonych zapytań SQL. Każda zmian w widoku tabeli: dodanie lub usunięcie kolumny, rozszerzenie lub jej zwężenie, zmiana kolorów w tabeli, wszystko  to możemy zapisać jako nowy widok. Po zmianie w tabeli, którą chcemy zapisać należy kliknąć na przycisk  Dokonaną zmianę możemy zapisać dla bieżącego widoku lub zapisać jako nowy widok.

Na pasku narzędzi dostępny jest jeszcze jeden przycisk związany z widokami.

Pozwala on na  szybkie przełączanie się pomiędzy widokami.

Opcja dotycząca zarządzania widokami dostępna jest pod przyciskiem F11 a następnie Zarządzanie widokami.

Z tego poziomu możemy zmienić wskazany widok na bieżący, poprawić nazwę widoku oraz go usunąć.

Opcja ta umożliwia również nadanie uprawnień do poszczególnych widoków.

Uprawnienia do widoków działają na takiej samej zasadzie jak uprawnienia do zapytań SQL. Możemy nadać uprawnienia do wskazanego widoku, poszczególnym operatorom lub profilom użytkowników.

1.3. Manipulowanie zawartością tabel

Zawartość tabeli można niemal dowolnie zmieniać dostosowując ją do indywidualnych potrzeb użytkownika. Służą do tego celu opcje Dodaj/Popraw/Usuń kolumnę oraz Właściwości tabeli dostępne w menu Narzędzia F11. Ponadto można zamieniać kolumny miejscami oraz zmieniać ich szerokość.

Dodanie kolumny

Dodając lub edytując kolumnę ustalamy:

  • wyrażenie określające zawartość kolumny. Jest to pole widoku zdefiniowanego fabrycznie lub przez użytkownika

⇒ Patrz rozdział: Projektant widoku

  • tytułu kolumny i jej czcionki
  • wyglądu komórki
    • właściwości czcionki
    • kolory czcionki i tła komórki
    • warunki zastosowania poszczególnych właściwości komórki.

Powyższy przykład zawiera definicje kolumny Nazwa w tabeli Artykuły. Warunek sformułowany jest tak, że towary o zapasie poniżej minimum będą wyświetlane na czerwono.
Nowo dodaną kolumnę należy potem przesunąć w żądane miejsce.

⇒ patrz poniżej Zmiana kolejności kolumn.

Usunięcie kolumny

Opcja ta umożliwia usunięcie kolumny z tabeli.

Generator raportów

Drukowanie w programie realizowane jest za pomocą szablonów nazywanych dalej wzorcami wydruku. Autorzy programu stworzyli pewną ilość wzorców wydruku, wystarczającą do normalnej pracy – są to tzw. wzorce fabryczne. Jeżeli jednak postać wydruku nie zadowala Użytkownika, można stworzyć własne wzorce, dostosowane do indywidualnych potrzeb i wymagań.

Fabrycznych wzorców wydruku nie można zmieniać – można jedynie tworzyć nowe na podstawie fabrycznych.

Wbudowany w system generator raportów (Report Builder) umożliwia edycję wzorców wydruków zwanych dalej, zgodnie z nazewnictwem FoxPro, raportami. Generator raportów jest narzędziem zaawansowanym, aczkolwiek pewne operacje jak zmiana czcionki, wielkości i położenia obiektu, usunięcie obiektu, uzyskuje się dość prosto.

Raport zawiera kompletną definicję wydruku, pozwalając dowolnie zmieniać postać każdego wydruku.

2.1. Wzorce wydruku

Jak już wspomniano, wzorce to zaprojektowane szablony, które mówią o tym w jakim miejscu i jakie informacje (teksty, ramki, dane itp.) mają pojawić się na wydruku.

Niezależnie od rodzaju wydruku przed rozpoczęciem drukowania wyświetlane jest okienko dialogowe Wydruk pozwalające na ustalenie parametrów wydruku.

Poza fabrycznymi wzorcami można korzystając z opcji Dodaj w oknie Wydruk stworzyć własne szablony i korzystać na stałe z nich przy drukowaniu dokumentów czy zestawień.

Każdy nowy wzorzec powstaje na bazie innego wskazanego wzorca. Po wybraniu opcji Dodaj pojawia się okno dialogowe, w którym podajemy dane identyfikujące nowy szablon wydruku. Najpierw wpisujemy symbol wzorca i ewentualny parametr a następnie naciskamy przycisk Dodaj. Uzupełniamy nazwę nowego wzorca, tytuł wydruku, ustawiamy orientację strony po czym naciskamy przycisk Detale w celu przywołania Generatora raportów, który pozwoli na zaprojektowanie wyglądu wydruku.

Symbol
Należy tu podać symbol wzorca (max. 7 znaków). Musi on zaczynać się od litery i może składać się z liter (za wyjątkiem polskich), cyfr i znaków podkreślenia. Po zapisaniu nie można go już zmienić.

Nazwa
Nazwa wzorca wydruku, która będzie opisywać tworzony szablon.

Parametr
Dodatkowy parametr do identyfikacji wzorca. Dzięki niemu jest możliwe używanie jednego wzorca wydruku dla wielu różnych dokumentów. Przykładem może być wzorzec o symbolu WZ______. Użyto go zarówno do wydruku dokumentu WZ jak i oferty (OF) oraz zamówienia (ZO).

Wzorzec domyślny
Zaznaczenie tego selektora spowoduje, że tworzony wzorzec będzie proponowany jako pierwszy na liście wzorców. Dla wydruku dokumentów nadrzędne jest tu ustawienie domyślnego wzorca w opcji Konfiguracja -> Definicje dokumentów.

Prolog
Przycisk przywołuje okno edytora umożliwiające napisanie prologu. Prolog jest programem w języku XBase uruchamianym przed przystąpieniem do wydruku. Napisanie poprawnego prologu wymaga znajomości podstaw języka XBase.

Detale
Przycisk uruchamiający Generator raportów opisany w następnym rozdziale. Pozwala on na zdefiniowanie szczegółów wydruku – schematu, który w czasie wydruku wypełniany będzie konkretnymi danymi.
Przycisk nie jest dostępny dla fabrycznych wzorców wydruku. Aby wprowadzić zmiany do fabrycznego wydruku należy go wybrać z listy wzorców wydruku w okienku Wydruk, dodać nowy na podstawie fabrycznego i w nowym dokonać modyfikacji.

Epilog
Przycisk przywołuje okno edytora umożliwiające napisanie epilogu. Epilog jest programem w języku XBase uruchamianym po wydruku. Napisanie poprawnego epilogu wymaga znajomości podstaw języka XBase.

Tytuł wydruku
Wpisany tutaj tekst służy na niektórych wzorcach do zatytułowania wydruku. Pojawia się w pierwszym wierszu wydruku.

Informacje dla wydruku
Można tu wskazać drukarkę (sterownik drukarki tekstowej), na którą wysyłany będzie ten wzorzec wydruku oraz orientację strony (wymiary użytego papieru).

Orientacja strony
Wybór układu pionowego lub poziomego strony.

 

2.2. Obsługa generatora raportów

Przykładowy widok generatora ze wzorcem dla tabeli artykułów.

Obszary raportu

Raport podzielony jest na obszary:
Tytułu (Title band) – zawiera informacje, które pojawiają się przed treścią główną raportu

Nagłówek strony (PageHeader) – wyświetlany u góry każdej strony

Nagłówek grupy (GroupHeader) – wyświetlany u góry każdej grupy

Treść raportu (Report Body) – stanowi główną część raportu i zawiera zwykle informacje z pól wybranych baz

Stopka grupy (GroupFooter) – wyświetlany na dole każdej grupy

Stopka strony (PageFooter) – wyświetlany na dole każdej strony głównego raportu

Podsumowanie (Summary) – jedna lub więcej stron pojawiających się na końcu głównego raportu

Obiekty raportu

Raport definiujemy umieszczając w odpowiednich obszarach obiekty raportu. Obiekty dostępne są z paska narzędziowego Report Controls, którego wygląd i dostępne obiekty przedstawia rysunek:

Objaśnienia elementów paska narzędziowego Report Controls:

Select Objects – Włącza możliwość zaznaczania obiektów raportu.

Label – Pozwala definiować stałe napisy.

Field – Pozwala definiować pola (pola z bazy danych, wyrażenia itd.). Uaktywnienie przycisku i kliknięcie w wybranym miejscu raportu powoduje przywołanie okna Report Expression, które służy do definiowania zawartości pola  w raporcie.

Line – Pozwala rysować poziome i pionowe linie.

Rectangle – Pozwala rysować prostokąty.

Roundedrectangle – Pozwala rysować okręgi i prostokąty z różnym stopniem zaokrąglania rogów.

Picture/ActiveX
Bound Control – Narzędzie do umieszczania rysunków zdefiniowanych w zewnętrznych plikach graficznych

Aby dodać obiekt do raportu trzeba wybrać żądane narzędzie z paska Report Controls i kliknąć w wybranym miejscu raportu.

Wybór obiektu
Kliknąć myszką w obszarze obiektu, Należy dodać, iż dla wybranych obiektów dostępny jest mechanizm schowka. Po wybraniu obiektu lub grupy obiektów można je umieścić w schowku (Edycja -> Kopiuj) a następnie skopiować w inne miejsce raportu lub przenieść do innego raportu (Edycja -> Wstaw).

Wybór wielu obiektów
Używać kombinacji klawisza Shift i kliknięcia myszki. Inna metoda to wybrać punkt poza obiektami raportu nacisnąć przycisk myszki i trzymając go przesuwać myszkę tak, aby objąć wymagane obiekty. Proces kończy się po zwolnieniu klawisza myszki.

Usunięcie selekcji
Kliknąć z w puste miejsce raportu.

Przesuwanie obiektu
Kliknąć i przeciągać obiekt za pomocą myszki.

Zmiana wymiarów obiektu
Kliknąć na wybranym obiekcie – wokół niego pojawią się małe kwadraciki, kliknięcie myszą na kwadraciku i przesuwanie myszy powoduje zmianę kształtu/rozmiaru obiektu.

Modyfikacja obiektów
Aby zmodyfikować wygląd obiektu lub grupy obiektów zaznacz je (klikając myszą z ewentualnym przyciśnięciem klawisza Shift) a następnie używaj opcji zawartych w menu Format.
Aby zmodyfikować właściwości obiektu kliknij na nim dwukrotnie – pojawi się okienko definicyjne odpowiednie dla danego obiektu:

  • Tekst (Label) – Text. Edycja treści napisu następuje po wybraniu przycisku Label z paska narzędziowego a następnie umieszczeniu kursora myszy w obszarze z tekstem.
  • Pole danych (Field) – Report Expression
  • Linia (Line) I Prostokąt (Rectangle) – Rectangle/Line
  • Zaokrąglony Prostokąt (Rounded Rectangle) – Round Rectangle
  • Rysunek (Picture/ActiveX Bound Control) – Report Picture

Kliknięcie prawym klawiszem myszy na obiekcie powoduje rozwinięcie menu kontekstowego, w którym dostępne są opcje: kopiowania (Copy), usuwania (Cut), wklejania (Paste), edycji właściwości (Properties) obiektów.

Kliknięcie prawym klawiszem myszy w pustym obszarze wzorca powoduje rozwinięcie menu kontekstowego, w którym dostępne są opcje: wklejania (Paste), podglądu wydruku (Preview), drukowania (Print) oraz tworzenie obszarów grupowania (Data Grouping) i tworzenia środowiska danych dla raportu (Data Environment).

Menu Strona

Ustawienia stronywyświetla dialog układu strony Page Setup.

Podgląd wydruku – wyświetla okno podglądu strony. Podgląd wydruku można uzyskać również z menu kontekstowego po kliknięciu prawym klawiszem myszy w pustym obszarze raportu (opcja Preview)

Uwaga: podgląd wydruku wzorca tekstowego uruchomiony z poziomu generatora raportów może odbiegać od wydruku rzeczywistego dlatego radzimy używać przycisku Podgląd w okienku Wydruk.

Menu Format

Menu Format zawiera opcje z paska narzędziowego Layout.

Align – opcje wyrównywania obiektów na stronie

Bring to Front

Send to Back – Na wierzch / Pod spód – zmienia porządek nakładania się obiektów (pierwszy na ostatni). Zmienia również kolejność, w której obiekty są dostępne na ekranie.

Group – Grupuj – pozwala zgrupować zaznaczone obiekty a następnie traktować ich jako jeden obiekt

Ungroup – Rozgrupuj – pozwala rozgrupować zaznaczony obiekty

Snap to Grid – włącza/wyłącza przyciąganie obiektów do siatki w czasie ich przemieszczania co ułatwia ich wyrównywanie

Set GridScale – ustawienia odstępów siatki

Font – przywołuje okno Czcionka, z którego wybiera się czcionkę dla aktualnie zaznaczonego obiektu lub grupy obiektów

TextAlignment – ustawienie rodzaju usytuowania tekstu w obiekcie: do lewej, do prawej, wyśrodkowany

Fill – ustawienie rodzaju wypełnienia wnętrza zaznaczonego obiektu

Pen – wybór stylu rysowania dla obiektu (szerokość i rodzaj pędzla)

Mode – włączenie lub wyłączenie przezroczystości obiektu. Opaque – nieprzezroczysty, Transparent – przezroczysty.

Menu Report

Title/Summary – Tytuł / Podsumowanie – włączanie lub wyłączenie sekcji tytułu i podsumowania na raporcie.

Data grouping – Grupowanie danych – zakładanie, edycja grup raportu

Variables – Zmienne – definicja zmiennych dla raportu

Default Font – określenie domyślnej czcionki dla nowo dodawanych napisów (Label) oraz pól danych (Field).

Private Data Session – włączenie prywatnej sesji danych raportu (raczej nie należy korzystać z tej opcji)

Run Report – wydrukowanie raportu (wzorca wydruku).

Na dwóch przykładach pokazane zostanie jak modyfikować wzorce wydruku.

Przykład 1 – usunięcie rabatu z wzorca wydruku faktury.
Wybieramy opcję Sprzedaż -> Dokumenty sprzedaży. W opcji Operacje wskazujemy Wydruk jednego dokumentu,  pojawia się okno Wydruk. Wybieramy z selektora wzorzec wydruku, np. F_______ – Faktura VAT. Naciskamy przycisk Dodaj ponieważ nie można poprawiać wzorca fabrycznego. Pojawia się okno Wzorzec wydruku.

Wpisujemy unikalny symbol np. F_NOWA oraz nazwę wzorca.
Naciskamy przycisk Detale. Znaleźliśmy się w oknie generatora raportów.

Klikamy lewym klawiszem myszy  na polu pod napisem Rabat i naciskamy klawisz Delete. Pole znikło.
W analogiczny sposób usuwamy napis Rabat oraz niepotrzebne elementy ramki. Należy teraz wypełnić powstałą lukę, czyli dosunąć resztę ramki i pól. Jak to zrobić?
Zaznaczamy wszystkie obiekty jakie znajdowały się po prawej stronie kolumny Rabat. Wykonujemy to za pomocą klawisza Shift i kliknięcia myszki lub wybierając punkt poza obiektami raportu i poczynając od niego zaznaczamy myszą wybrany obszar. W drugim przypadku zostanie również zaznaczona niepotrzebnie ramka nagłówka i linia pod detalami. Aby je wygasić należy kliknąć na nie przytrzymując klawisz Shift.
Zaznaczone obiekty przesuwamy w lewo za pomocą myszy.
Ramka nagłówka i linia pod detalami są teraz za długie. Klikamy na obiekty i zmieniamy ich rozmiar za pomocą pojawiających się kwadracików.
Aby zapamiętać zmiany we wzorcu wydruku klikamy myszką na krzyżyku znajdującym się w prawym górnym rogu okna. Wyskakuje następujące okienko z komunikatem

Na  pytanie Do you want to save changes to Report Designer – *.frx (Czy chcesz zachować zmiany w pliku *.frx) odpowiadamy Yes.
W oknie Wzorzec wydruku naciskamy przycisk OK i nowy wzorzec pojawia się w selektorze okna Wydruk.
Zakończyliśmy pracę, a efekty możemy obejrzeć na wydruku lub ekranie komputera, po naciśnięciu przycisku Pokaż.

 

Przykład 2 – Dołożenia na wydruku zestawienia dokumentów sprzedaży  miejscowości kontrahenta i uzyskanej marży.

Wybieramy opcję Sprzedaż -> Dokumenty sprzedaży -> Drukuj. Na ekranie Wydruk wskazujemy wzorzec Zestawienie dokumentów. Dodajemy nowy wydruk naciskając przycisk Dodaj. Pojawia się okno Wzorzec wydruku. Podajemy symbol, naciskamy przycisk Dodaj, wpisujemy nazwę wzorca. Naciskamy przycisk Detale. Pojawia się okno generatora raportów.

Z wzorca pozbędziemy się kolumn W cenie zakupu, W cenie brutto i Kwota VAT, a w ich miejsce wstawimy Miejscowość i Marża. Możemy usunąć kolumny podobnie jak w poprzednim przykładzie, ale możemy również zmienić ich zawartość.
Kolumnę W cenie zakupu zmieniamy na Miejscowość.
Aby zmienić nazwę kolumny wybieramy z paska narzędziowego obiekt Label i klikamy na napisie W cenie zakupu. Pojawi się możliwość edytowania napisu. Kasujemy stary, wpisujemy Miejscowość i klikamy poza obszarem pola kończąc jego edycję.
Aby zmienić zawartość pola klikamy podwójnie na polu wart_zak, pojawia się okno Raport Expresion.

Wybieramy przycisk edycji pola , otwiera nam się nowe okno.

Kasujemy zawartość wyrażenia dla raportu (.wart_zak) a następnie na liście pól wskazujemy MIEJSC (Miejscowość) i potwierdzamy przyciskiem Wybierz pole. W wyrażeniu dla raportu pojawia się miejsc.  Zamykamy okno przyciskiem OK.

Uwaga: pole MIEJSC może nie być dostępne gdyż nie zostało ono włączone do fabrycznego widoku tabeli Dokumenty sprzedaży. Aby dodać pole do widoku należy postępować wg wskazówek zawartych w:

⇒ patrz rozdział Widoki

Proponujemy usunąć teraz kolumnę W cenie brutto i w jej miejsce przesunąć kolumnę W cenie netto. Da to więcej miejsca dla pola Miejscowość, które może zawierać aż 20 znaków. Zwiększamy więc wielkość pola miejsc. Przy wykonywaniu tych czynności można skorzystać ze wskazówek w poprzednim przykładzie.

Następnie analogicznie do poprzednich operacji zmieniamy kolumnę Kwota VAT na Marża. Kasując zawartość pola suma_vat wskazujemy odpowiednie wyrażenie:

suma_net – wart_zak

(od wartości sprzedaży netto odejmujemy wartość w cenie zakupu)

Należy pamiętać również o polach w obszarze Summary (Podsumowanie) – niepotrzebne wykasować i zmienić zawartość suma_vat tak jak powyżej. Pola w obszarze podsumowania mają zaznaczone sumowanie wszystkich wartości na końcu kolumny. Wykonuje się to w oknie  Report Expression dla danego pola pod przyciskiem Calculations.

Aby zapamiętać zmiany we wzorcu wydruku klikamy myszką na krzyżyku znajdującym się w prawym górnym rogu okna.
Na  pytanie Save changes to Report Designer – …..frx (Zachować zmiany w pliku… ) odpowiadamy Yes.
W oknie Wzorzec wydruku naciskamy przycisk OK i nowy wzorzec pojawia się w selektorze okna Wydruk.
Zakończyliśmy pracę, a efekty możemy obejrzeć na wydruku lub ekranie komputera, po naciśnięciu przycisku Pokaż.

2.3. Prolog i epilog wzorca wydruku

Ekran Wzorzec wydruku zawiera między innymi dwa przyciski: Prolog oraz Epilog. Wybór któregoś z przycisków przywołuje okno edytora tekstu.

Prolog jest programem w języku XBase. W prologu można umieszczać wszelkie polecenia i funkcje języka XBase
Można umieszczać również linie komentarza, które poprzedza się znakiem *. Napisanie poprawnego prologu wymaga znajomości podstaw języka XBase. W szczególności w prologu można otwierać zbiory, zakładać relacje, ustalać porządek używać polecenia SQL SELECT. Pozwala to na budowanie własnych raportów i zestawień. Prolog jest kompilowany i uruchamiany przed rozpoczęciem wydruku.
Poszczególne polecenia i funkcje powinny być pisane w oddzielnych wierszach kończonych klawiszem Enter. Jeśli jakiś wiersz polecenia jest dłuższy od szerokości okna edytora, to proponujemy podzielić ten wiersz na kilka linii przy użyciu klawisza ENTER pamiętając o dodaniu średnika po każdej z linii (oprócz ostatniej).

Prolog został użyty między innymi w fabrycznym wzorcu wydruku stanów magazynowych. Na wydruku będą zawarte nazwy artykułów jeżeli kolumna nazwa_art znajdzie się w drukowanym kursorze. W tym celu umieszczono w prologu wiersz, który do otrzymanego z wykonanej analizy kursora (stanymag)  doda pole nazwa_art z tabeli artykuły:

SELECT stanymag.* ,artykuly.nazwa_art FROM  stanymag, artykuly ;
WHERE  stanymag.symbol_art = artykuly.symbol_art ;
INTO CURSOR 'myCursStanMag'

Dla wydruków fabrycznych prolog jest niepoprawialny. Okno edytora przechodzi w stan Tylko odczyt. W oknie edytora działają funkcje zaznaczania bloków i umieszczania w schowku Clipboard.

Epilog, podobnie jak prolog wydruku jest programem w języku XBase. Epilog uruchamiany jest tuż po wydruku. Epilog pozwala przywrócić pewne ustawienia wynikające z prologu wydruku. Dodać należy, że program automatycznie przywraca stan środowiska sprzed wydruku. Sam zdejmuje założone relacje, porządki tabel, bieżący obszar roboczy, wartości zmiennych. Nie potrafi natomiast przywrócić stanu filtrów ustawionych poleceniem SET FILTER TO.

2.4. Użyteczne funkcje i polecenia

Użycie zapytań SQL

SELECT SQL jest jednym z najbardziej zaawansowanych i najczęściej wykorzystywanym w programie poleceniem. Jego użycie wymaga sporej wiedzy. Jednak niesie ogromne możliwości w budowaniu własnych zaawansowanych raportów. Każda operacja w programie wiąże się z użyciem zapytania SELECT. Czasem jest to SELECT (nazwijmy go wewnętrzny) operujący na tabelach i kursorach już otwartych w programie a czasem jest to SELECT (nazwijmy go zewnętrzny) operujący na danych zawartych na serwerze SQL. Składnia przytoczonych wyżej typów polecenia SELECT jest taka sama. Jest jednak różnica w sposobie jego wywołania.

Przykład użycia SELECTA wewnętrznego ilustruje prolog do wzorca ST_MAG (przytoczony w poprzednim rozdziale).

Przykład użycia SELECTA zewnętrznego:

  lcComm1="SELECT artykuly.symbol_art, artykuly.nazwa_art, artykuly.symbol_jm, " + ;
"rozch.ilosc, przych.cena " + ;
"FROM artykuly, poz_dok, rozch,przych " + ;
"WHERE poz_dok.klucz_dok LIKE '"+ALLTRIM(nagl_dok.klucz_dok)+"%' " + ;
"  AND artykuly.symbol_art = poz_dok.symbol_art " + ;
"  AND poz_dok.klucz_dok = rozch.klucz_roz " + ;
"  AND poz_dok.symbol_art = rozch.symbol_art" + ;
"  AND poz_dok.pozycja = rozch.pozycja_r " + ;
"  AND rozch.klucz_prz = przych.klucz_prz " + ;
"  AND rozch.symbol_art = przych.symbol_art " + ;
"  AND rozch.pozycja_p = przych.pozycja"

mySQLEXEC(lcComm1, .F., "myCurs")

Ze względu na to, że SELECT zewnętrzny musi wykonać się po stronie serwera SQL, koniecznym jest użycie tzw. komendy przesyłowej. Implementacją komendy przesyłowej w programie jest funkcja MYSQLEXEC, której parametrami są:
1 – pełny tekst polecenia SELECT
2 – nazwa tabeli po stronie serwera, której zawartość chcemy otrzymać
3 – nazwa kursora wynikowego

Parametr 2 zazwyczaj się opuszcza gdyż podanie pełnego tekstu polecenia SELECT w parametrze 1 jest rozwiązaniem preferowanym.

W powyższym przykładzie polecenie SELECT operujące na trzech tabelach z bazy na serwerze SQL, zapisane jest jako ciąg znaków do zmiennej lcComm1. Zmienna ta wstawiona jest następnie jako parametr do funkcji MYSQLEXEC. Drugim parametrem jest wartość logiczna False (jako, że użyliśmy pełnego zapytania w parametrze 1). Trzecim parametrem jest nazwa kursora (myCurs) jaką chcemy otrzymać w wyniku zadziałania komendy przesyłowej z w/w poleceniem SELECT.

Polecenie:
mySQLEXEC(„”, “artykuly”, “MojKursor”)

powoduje utworzenie kursora o nazwie “MojKursor” na podstawie tabeli „artykuly” ze wszystkimi jej kolumnami i rekordami. Jest to równoważne z wydaniem polecenia:
mySQLEXEC(„SELECT * FROM artykuly”, .F., “MojKursor”)

Polecenie SELECT jak i wszystkie inne polecenia języka TRANSACT SQL (wykonywane po stronie serwera) muszą być z poziomu programu wydawane z użyciem komendy przesyłowej MYSQLEXEC.

Pełny opis polecenia SELECT SQL i innych poleceń SQL znajduje się w pomocy do narzędzia SQL Query Analyzer oraz Visual FoxPro.

Ustalanie porządku

Aby ustalić porządek jakiejś tabeli użyj polecenia SET ORDER TO TAG

Przykład:
Aby uporządkować tabelę kontrahentów w porządku symbolu (numeru) kontrahenta napisz:

INDEX ON symbol_ktr TAG symbol_ktr
SET ORDER TO TAG symbol_ktr

Użycie polecenia INDEX jest konieczne gdyż w programie indeksy znajdują się wyłącznie po stronie serwera i nie mają swojego odzwierciedlenia w kursorach po stronie klienta (programu).

Zakładanie relacji

Do zakładania relacji używaj funkcji programu setrel(). Funkcja ta oprócz założenia samej relacji wyklucza jednocześnie pewne konflikty np. relacje cykliczną.

Przykład:
Aby założyć relację z bieżącej tabeli na tabelę KONTRAH napisz:

setrel('symbol_ktr','kontrah')

Uwaga: tabela (a właściwie kursor) kontrah musi być poindeksowany względem kolumny symbol_ktr.

Zmiana aktualnego obszaru

Aby zmienić aktualny obszar użyj polecenia SELECT

Przykład:
Aby zmienić aktualny obszar roboczy na KONTRAH napisz:

SELECT kontrah

2.5. Import i eksport wzorców wydruku

Wzorce wydruku można przenosić między firmami w ramach programu HERMES SQL między wszystkimi jego wersjami dla Windows. Funkcje eksportu i importu wzorców wywoływane przyciskami Eksport i Import na ekranie Wydruk, umożliwiają przenoszenie wzorców z firmy do firmy, kopiowanie wzorców na dyskietki lub inne nośniki w celu zarchiwizowania ich lub wysłania jako załącznik do listu elektronicznego.

⇒ patrz rozdział Wydruki

Import wzorców polega na przegraniu, do aktualnej firmy, wzorców wydruku dostarczonych na zamówienie przez producenta programu lub wyeksportowanych z innej firmy.

Selektorem Import z programu  ustalamy, z której wersji systemu HERMES pochodzi importowany wzorzec. Pozostałe kontrolki okna importu :

Odczytaj z
Wybór źródła, z którego ma być odczytany plik FRX._LBX.DBF z definicją importowanych wzorców. Do wyboru jest katalog jednej z firm zarejestrowanych w programie, Stacja A, lub inne Dowolne położenie.
Jeśli zostało wskazane Dowolne położenie wyboru pliku FRX_LBX.DBF dokonuje się poprzez dialog wywoływany pod przyciskiem .

Tabela
Tabela zawiera spis przygotowanych we wskazanym pliku do importu wzorców wydruku. Naciśnięcie klawisza SPACJA, lub kliknięcie na znaku powoduje zaznaczenie/odznaczenie wzorca do importu.

Zaznacz wszystkie
Zaznacza wszystkie pozycje listy wzorców.

Usuń znaczniki
Po uaktywnienia przycisku żadna z pozycji listy wzorców nie będzie zaznaczona.

Import
Wykonanie importu zaznaczonych wzorców do wskazanej na liście firmy.

Eksport wzorca następuje po jego wybraniu z listy na ekranie Wydruk i naciśnięciu przycisku Eksport. Pojawi się okno Eksport wzorców wydruku, na którym przy pomocy selektora Zapisz do i Plik wskazujemy miejsce docelowe.

Po naciśnięciu przycisku Eksport wzorzec zostanie skopiowany do wybranego miejsca.

Funkcje prywatne

Opcja ta pozwala rozszerzyć program o nowe funkcje i możliwości dostosowane do indywidualnych potrzeb klienta.

Funkcje prywatne umożliwiają napisanie i wykonanie własnego programu w języku Visual FoxPro oraz funkcji zaimplementowanych w programie. Możliwe jest również wykonanie zewnętrznego programu  lub procedury napisanej na życzenie klienta.

Tworzenie funkcji prywatnych przeznaczone jest dla osób dobrze zorientowanych w tematyce komputerowej, głównie programistów i  wdrożeniowców.
Funkcje prywatne posiadają system uprawnień obejmujący zarówno grupy użytkowników jak i konkretnych operatorów.
Funkcja prywatna może być zewnętrznym programem napisanym przy pomocy Visual FoxPro zarówno w postaci plików APP , EXE oraz skompilowanych poszczególnych funkcji FXP lub SPX. Program taki może w pełni korzystać z niektórych zmiennych jak również ze wszystkich funkcji wewnętrznych programu. Wykaz funkcji udostępniony jest w SDK.
Funkcja prywatna może być również – analogicznie do prologu wydruku – ciągiem instrukcji języka Visual FoxPro wpisanym w polu  edycji zatytułowanym Treść funkcji wewnętrznej. Pole to jest aktywne po wyborze opcji Funkcja wewnętrzna.

Osoby zainteresowane tworzeniem funkcji prywatnych prosimy o kontakt z dostawcą oprogramowania lub działem serwisu firmy Humansoft.

⇒ patrz rozdział: Wydruki -> Prolog i epilog wzorca wydruku

Funkcje prywatne mogą być przydatne do wykonania własnej analizy lub korekty danych.

Wtyczki

Jest to bardzo elastyczne rozwiązanie umożliwiające wprowadzanie własnych funkcji  i/lub własnych formularzy. W każdym miejscu w systemie gdzie jest opcja Narzędzia można dodawać własne funkcje. Mogą to być funkcje wewnętrzne  lub zewnętrzne. Głownie moduł powstał z myślą o podpinaniu własnych formularzy do list lub pozycji dokumentów.

Każda zdefiniowana przez użytkownika funkcja może zostać przypisana do klawisza Operacje  lub wyświetlona w postaci ikony obok klawisza operacje.
W ramach rozbudowy stworzono system uprawnień obejmujący grupy użytkowników lub konkretnych operatorów.

Jeżeli chcemy dodać nową funkcje użytkownika wchodziły w opcję Narzędzia-> Funkcje użytkownika. Następnie korzystając z przycisku +, dodajemy nową funkcje.

 

W polu Opis wpisujemy nazwę funkcji. Jeżeli funkcja jest już utworzona i chcemy ją tylko podpiąć korzystamy z opcji Funkcja zewnętrzna, gdzie wskazujemy miejsce z którego chcemy podpiąć plik.

Jeżeli chcemy utworzyć nowa funkcję, korzystamy z opcji Funkcja wewnętrzna, a następnie wchodzimy w opcję Edytor funkcji prywatnej, gdzie możemy napisać kod funkcji..

 

Przy tworzeniu funkcji użytkownika, funkcji prywatnych, prologów i epilogów dokumentów możliwe jest wywoływanie uprzednio skompilowanych programów i aplikacji. Na formularzach funkcji użytkownika znajduje się pole gdzie można wpisać przy pomocy składni Visual FoxPro wywołanie pliku zewnętrznego przekazując mu parametry.

Możemy również określić, gdzie funkcja ma być widoczna:
Jeżeli zaznaczymy opcje w menu kontekstowym, pojawi się na liścia, jaka się pojawia po użyciu przycisku Narzędzia.
Jeżeli wskażemy opcję na pasku narzędziowym wówczas funkcja będzie dostępna na pasku narzędziowym tabeli lub formularza.
Wybranie opcji w menu i na pasku oznacza, że funkcja będzie dostępna po wciśnięciu F12, tak jak poniżej. Do funkcji możemy wybrać ikonę.

Dla poszczególnych wtyczek możemy nadać uprawnienia. Uprawnienia mogą dotyczyć profili uprawnień lub poszczególnych operatorów

Kolejność funkcji użytkownika

Istnieje możliwość ustalenia kolejności funkcji użytkownika. Zmiana kolejności jest możliwa przez drag and drop pozycji z listy (kolejność ustalana poprzez miejsce na liście) lub przyciskiem Sortuj alfabetycznie [A-Z], znajdującego się na dole formularza.

Zapis kolejności dokonywany jest podczas zamykania formularza lub wyjście przez przycisk Wróć. Podczas opuszczania formularza z listą funkcji użytkownika przy liczbie opcji większej niż 1, użytkownik dostanie komunikat Zapamiętać kolejność pozycji?. Wybierając przycisk TAK, zostanie zapamiętana kolejność z listy funkcji użytkownika, przycisk NIE pomija zapis.

Prologi i epilogi do dokumentów i kartotek

Kolejne opcje nie wymagają tworzenia dodatkowych przycisków do ich uruchamiania. Są one powiązane ze zdarzeniami, które zachodzą przy tworzeniu dokumentu. Zwalnia to użytkownika z potrzeby pamiętania, że należy jeszcze uruchomić dodatkową funkcję, lecz zawsze wykonują się przy zatwierdzaniu nagłówka, pozycji lub całego dokumentu.

Opcje te to:

  1. Prolog do dokumentu
  2. Epilog do dokumentu (przed lub po kodzie programu)
  3. Epilog do pozycji dokumentu

Możliwość wypełnianie kodem  każdej z powyższych opcji jest dostępna w definicji dokumentu (Konfiguracja → Definicje dokumentów) i związana z konkretnym rejestrem dokumentu. Na przykład: można inny kod umieścić w rejestrze F /1 faktur sprzedaży, a inny w rejestrze F /2.
Poniżej rysunek obrazujący to dla dokumentu faktury sprzedaży.

5.1. Prolog do dokumentu

Prolog do dokumentu wykonuje się w momencie zatwierdzania nagłówka dokumentu  (np. przy przechodzeniu do wypełniania pozycji). Należy jednak zwrócić uwagę, że w czasie wykonania prologu nagłówek dokumentu nie jest jeszcze zapisany w bazie. Stwarza to pewne możliwości, ale również ograniczenia.
Po pierwsze można sprawdzać, czy dane nagłówkowe spełniają określone kryteria i nie dopuszczać do zapisania nagłówka (dopuszczać warunkowo). Prolog powinien wówczas zwracać wartość .F. (false). Program sprawdza, czy została zwrócona wartość .F. i sterowanie pozostaje w nagłówku dokumentu.
(Uwaga: Aby uzyskać taki efekt należy w kodzie sprawdzającym umieścić instrukcję RETURN .F.)
Po drugie można sterować wartościami wypełnionymi w polach formularza. Wszystkie te dane są w dokumencie dostępne  w zmiennych pamięciowych (np. w zmiennych: m.symbol_ktr, m.termin_pl, m.odbior, itp.) i można zmienić ich wartość przed zapisaniem nagłówka do bazy. Oczywiście zmiana taka musi być dobrze przemyślana przez programistę, ponieważ może rodzić nieprzyjemne konsekwencje, np. blokowanie pracy w dokumencie lub błędne zapisy w bazie.
Po trzecie, to że w czasie wykonywania prologu nagłówek dokumentu nie jest jeszcze zapisany, uniemożliwia zapisanie w nagłówku informacji w dodatkowym polu, które nie jest dostępne fabrycznie – pole użytkownika (dla przypomnienia pola użytkownika dodawane do tabel muszą mieć nazwę rozpoczynającą się od litery Q). Pole takie można wypełnić, np. przy zatwierdzaniu całego dokumentu czyli w opisanym niżej Epilogu do dokumentu.

5.2. Epilog do dokumentu

Epilog do dokumentu wykonuje się, kiedy operator wychodzi z formularza dokumentu (np. po naciśnięciu klawisza OK.) i jest związany z kodem programu zatwierdzającym dokument.

W tym przypadku stworzono dwie możliwości:

  • można umieścić kod epilogu przed kodem programu,
  • można również epilog umieścić po kodzie Programu.

Jest to istotne rozróżnienie szczególnie w przypadku, kiedy chcemy zmieniać wartość fabrycznych pól nagłówka dokumentu.
Przy zatwierdzaniu dokumentu program aktualizuje wartości zapisane w bazie wartościami, które aktualnie są zapisane w zmiennych pamięciowych. Możemy więc modyfikować wartości tych zmiennych i pozostawić systemowi zapisanie ich w bazie. Oczywiście wówczas taki kod musi zostać umieszczony w Epilogu do dokumentu przed kodem programu.
Możemy także modyfikować wartości pól nagłówkowych używając instrukcji przesyłowych (SQLEXEC lub mySQLEXEC), ale wtedy taki kod powinien być umieszczony w Epilogu do dokumentu po kodzie Programu.
W Epilogu do dokumentu, podobnie jak w prologu, można nie dopuścić do wyjścia z dokumentu. Wystarczy w kodzie umieścić instrukcję RETURN .F. program sprawdza, jaką wartość zwraca epilog i jeśli jest to False, nie wychodzi z formularza.

5.3. Epilog do pozycji dokumentu

Epilog do pozycji dokumentu wykonuje się po opuszczaniu formularza pozycji dokumentu.

Można w tym epilogu umieścić kod własnej funkcji i/lub własnego formularza, który może wykorzystywać dostępność zmiennych opisujących aktualną pozycję dokumentu. Nie można natomiast sterować opuszczeniem formularza pozycji dokumentu. Formularz pozycji zamknie się bez względu na to, czy epilog zwróci wartość False czy True.
Epilog do pozycji w obecnej wersji programu jest dostępny dla poniższych rodzajów dokumentów:

  • Faktura sprzedaży (F)
  • Zamówienie na sprzedaż (ZS)
  • Zamówienia na zakup (ZZ)
  • Wydanie na zewnątrz (WZ)
  • Przyjęcie z zewnątrz (PZ)
  • Przychód (P)
  • Rozchód (R)
  • Oferty dla klientów (OF)

5.4 Epilog do karty kontrahenta

W kartotece kontrahentów, w opcji dostępnej pod F12 – ustawienia dla kontrahenta, mamy możliwość zdefiniowania epilogu, który ma za zadanie zabezpieczać, kontrolować i sprawdzać dodawanie nowych kontrahentów według zapotrzebowania użytkownika.

5.5. Epilog do karty artykułu

Po wejściu w Konfigurację – Ustawienia Globalne – Ustawienia dla artykułów, dodano możliwość zdefiniowania epilogu do karty artykułu. Wprowadzenie tej funkcji umożliwia zabezpieczanie, sprawdzanie i kontrolowanie dodawania artykułów zgodnie z potrzebami użytkownika.

5.6. Prologi i epilogi w dokumentach kasowych i bankowych

Rachunki bankowe

W menu Konfiguracja -> Rachunki bankowe, po wyborze rachunku udostępniony został na formularzu przycisk Prologi/Epilogi, po wybraniu którego dostępna jest lista funkcjonalności:

  • Prolog – Wyciąg bankowy
  • Epilog – Wyciąg bankowy
  • Prolog BP/BW
  • Epilog BP/BW (epilogi wykonują się po kodzie fabrycznym)
  • Epilog do pozycji BP/BW.

Pod przyciskiem Cechy znajdziemy: Cechy do nagłówka BP/BW.

Kasy

Podobnie jest po wybraniu menu Konfiguracja -> Kasy. Po wyborze konkretnej kasy, dostępne są:

  • prolog KP/KW
  • epilog KP/KW (po kodzie fabrycznym)
  • epilog do pozycji KP/KW

Pod przyciskiem Cechy znajdziemy: Cechy do nagłówka KP/KW.

5.7.  Kod użytkownika

5.7.1. Kod użytkownika po zalogowaniu do Hermesa

Analogicznie jak ma to miejsce w przypadku modułów branżowych, w programie można uruchomić dowolny kod użytkownika lub analizę po zalogowaniu się do Hermesa.

Kod uruchamia się automatycznie jeżeli tylko jest uzupełniony zaraz po zalogowaniu się do odpowiedniej bazy ale zanim pojawi się pełne menu systemu. Kod na uruchomienie wprowadzamy w karcie operatora. Po wybraniu opcji Uruchom po zalogowaniu pojawi się okno z domyślnymi analizami Hermesowymi oraz ostatnia opcja Kod użytkownika. Jeżeli wybierzemy którąś z predefiniowanych analiz uruchomi się ona po wejściu do Hermesa zgodnie z zapisanymi parametrami (tak jakbyśmy uruchamiali ją normalnie z menu). Jeżeli wybierzemy opcję Kod użytkownika pojawi się okno edycji funkcji użytkownika, gdzie mamy możliwość wpisania własnego kodu. Po zapisaniu i ponownym zalogowaniu się do Hermesa, na wejście uruchamia się wybrana opcja przy operatorze.

5.7.2. Kody użytkownika w module Zarządzanie Produkcją

Kod wyceny wyrobu

W ustawieniach produkcji dzięki opcji Kod wyceny wyrobu istnieje możliwość zdefiniowania własnej procedury zwracającej cenę jednostkową powstałego wyrobu. Jeżeli kod nie zostanie zdefiniowany przez użytkownika, wówczas wycena wyrobu zostanie wyliczona zgodnie z ustawieniami w opcji Wart. Dok. Przychodowych uwzgl.

Kod wyceny odpadu

W ustawieniach produkcji znajduje się opcję Kod wyceny odpadu. Dzięki niej istniej możliwość zdefiniowania własnej procedury zwracającej cenę jednostkową powstałego odpadu.

Środowisko modułów branżowych

Środowisko modułów branżowych udostępnia specjalizowaną bibliotekę klas, w oparciu, o którą mogą powstawać nowe rozwiązania informatyczne (nowe moduły) zintegrowane z systemem. Jest to opcja dająca największe możliwości dostosowania oprogramowania do potrzeb przedsiębiorstwa.

6.1. Konfiguracja i uruchomienie modułu

6.1.1. Tabele konfiguracyjne

Uruchomienie modułu wymaga utworzenia i wypełnienia następujących tabel:

a) FIRMY w bazie Hermes

Tabela FIRMY zawiera dodatkową kolumnę ‘baza_mod’, która zawiera nazwę bazy modułu. Wpis w tej kolumnie wskazuje na to, że dla danej firmy jest utworzony moduł.

b) CONFIG w bazie modułu

Polecenie SQL do utworzenia tabeli:
CREATE TABLE [CONFIG] (
[NR_WERSJI] [numeric](10, 0) NOT NULL CONSTRAINT [DF_CONFIG_NR_WERSJI] DEFAULT (0),
[NAZWA] [VARCHAR] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_CONFIG_NAZWA] DEFAULT (''),
[PATH_APP] [VARCHAR] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_CONFIG_PATH_APP] DEFAULT (''),
[NAME_APP] [VARCHAR] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_CONFIG_NAME_APP] DEFAULT (''),

CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[NAZWA]
) ON [PRIMARY]
)

INSERT INTO CONFIG(nr_wersji, nazwa, path_app, name_app) VALUES(0,'Nazwa modułu','','')

Dodatkowe informacje dla tabeli config:

Jeśli nie zostanie podana nazwa pliku uruchamialnego modułu w kolumnie name_app (lub plik ten nie istnieje – uwzględniana jest wtedy ścieżka do modułu, czyli kolumna path_app), to moduł jest wyłączany

Kolumna path_app zawiera ścieżkę modułu. Ścieżka modułu musi być zakończona znakiem ‘\’, np. c:\hermes\modul\ Jeśli w tej kolumnie zostanie użyta zmienna programu, zostanie ona zamieniona na odpowiadający jej ciąg znaków:
_xsc\ – zostanie zamieniony na katalog programu

c) M_FIRMA w bazie z danymi firmy

Polecenie SQL do utworzenia tabeli:

CREATE TABLE [M_FIRMA] (
[NR_WERSJI] [numeric](10, 0) NOT NULL CONSTRAINT [DF_M_FIRMA_NR_WERSJI] DEFAULT (0),

CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[NR_WERSJI]
) ON [PRIMARY]
)

INSERT INTO M_FIRMA(nr_wersji) VALUES(0)

6.1.2. Menu modułu – tabela M_MENU

Obsłużona jest dowolna ilość menu modułu (pierwsze menu ma numer 1). Są trzy przyciski na toolbarze odpowiadające pierwszemu, drugiemu lub trzeciemu menu modułu (wszystkie menu będą występować w menu operacje). Oczywiście można zakazać dostępu do jakiegoś menu lub pozycji w menu. Jeśli zabronione będzie menu pierwsze, drugie lub trzecie to nie pokażą się odpowiednie przyciski na toolbarze. Oczywiście jeśli nie będzie zdefiniowanych menu w tabelce m_menu w bazie modułu nie pokażą się odpowiednie przyciski i menu.

Kolumna MENU definiuje odpowiednie menu (1, 2, 3 itd.). Kolumna NR definiuje pozycję w menu (1 pozycja, 2 itd.; pozycja 0 to jest definicja menu nadrzędnego oraz przycisku na toolbarze).

Polecenie SQL do utworzenia tabeli:

CREATE TABLE [M_MENU] (
[NR] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_NR] DEFAULT (''),
[MENU] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_MENU] DEFAULT (''),
[OPIS] [varchar] (100) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_OPIS] DEFAULT (''),
[ICO] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_ICO] DEFAULT (''),
[AKCJA] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_AKCJA] DEFAULT (''),

CONSTRAINT [PK_M_MENU] PRIMARY KEY CLUSTERED
([NR], [MENU]
) ON [PRIMARY]
)

Dla kolumny ico w tabeli m_menu:
_xsc\ – zostanie zamieniony na katalog programu
_mpath\ – zostanie zamieniony na katalog modułu, zdefiniowany w kolumnie path_app tabeli config

I podobnie będzie w kolumnie akcja:
_xsc\ – zostanie zamieniony na katalog programu
_mpath\ – zostanie zamieniony na katalog modułu, zdefiniowany w kolumnie path_app
_mapp – zostanie zamieniony na plik modułu (połączenie ścieżki + nazwy pliku)

6.1.3. Obsługa upgrade’u modułu

a) Numer wersji modułu wpisywany jest w bazie jako liczba całkowita – w programie będzie pokazywany dzielony przez 100000 – czyli nr 1 będzie jako wersja 0.00.001, nr 123000 będzie jako wersja 1.23.000 itd.)
b) jeśli nr wersji modułu (kolumna nr_wersji w tabeli config w bazie modułu) nie zgadza się z wersją danych modułu w wybranej firmie (kolumna nr_wersji w tabeli m_firma w bazie firmy) pojawiają się stosowne komunikaty
c) jeśli nr wersji modułu jest wyższy od nr wersji danych modułu pojawia się stosowny komunikat wraz z pytaniem czy zaktualizować dane modułu – w przypadku twierdzącej odpowiedzi wywoływana jest funkcja m_upgrade z pliku wykonywalnego modułu (UWAGA! funkcja, lub procedura m_upgrade musi się znajdować w pliku głównym modułu!); w przypadku, gdy po aktualizacji nr wersji modułu i nr wersji danych modułu dalej są niezgodne, pojawi się okienko ze stosowną informacją, a obsługa modułu zostanie wyłączona
d) jeśli nr wersji modułu jest niższy od nr wersji danych modułu pojawia się stosowny komunikat, a obsługa modułu zostanie wyłączona
e) procedura lub funkcja upgradująca moduł musi nazywać się m_upgrade i znajdować się w pliku głównym modułu (może ona np. wywoływać inną procedurę z pliku)
f) procedura upgradująca moduł musi zadbać o poprawną aktualizację tabel, o zaktualizowanie informacji o numerze wersji danych modułu (kolumna nr_wersji w tabeli m_firma w bazie danej firmy), wyświetlenie okienka z informacją o poprawnym zaktualizowaniu struktury tabel
g) jeśli nie udało się odczytać nr wersji danych modułu (bo np. jeszcze nie istnieje taka tabela) to nr wersji danych modułu przyjmowany jest jako 0 – i jeśli nr wersji modułu jest wyższy to wywoływana jest funkcja upgradująca (np. sytuacja pierwszego upgrade’u)
h) dla ułatwienia upgrade’u w programie są dostępne dwie funkcje sprawdzające, czy dany obiekt istnieje w bazie

  • sysobj sprawdzająca, czy dany obiekt istnieje w aktualnie otworzonej bazie (czyli bazie otworzonej firmy)
    pierwszy parametr – rodzaj obiektu – najczęściej używany T – tabela i K – kolumna
    drugi i trzeci parametr – nazwa obiektu
    np.
    sysobj(‘T’,’M_MENU’,”) sprawdza, czy istnieje tabela o nazwie m_menu w bazie firmy
    sysobj(‘K’,’M_MENU’,’menu’) sprawdza, czy istnieje kolumna menu w tabeli m_menu
  • dbsysobj sprawdzająca, czy dany obiekt istnieje w danej bazie identycznie jak sysobj, tylko ze pierwszym parametrem będzie nazwa bazy
    dbsysobj(‘Modul1′,’T’,’M_MENU’,”) sprawdza, czy istnieje tabela o nazwie m_menu w bazie firmy
    dbsysobj(‘Modul1′,’K’,’M_MENU’,’menu’) sprawdza, czy istnieje kolumna menu w tabeli m_menu

Przykladowe wywolania tych funkcji:

IF !sysobj('T','M_MENU','')
lcCommand = "CREATE TABLE [M_MENU] ( "+;
"[MENU] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_MENU] DEFAULT (''), "+;
"[NR] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_NR] DEFAULT (''), "+;
"[OPIS] [varchar] (100) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_OPIS] DEFAULT (''), "+;
"[ICO] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_ICO] DEFAULT (''), "+;
"[AKCJA] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_AKCJA] DEFAULT (''), "+;
"CONSTRAINT [PK_M_MENU] PRIMARY KEY CLUSTERED "+;
"([MENU], [NR] "+;
") ON [PRIMARY] "+;
")"
IF !IsOK(SQLEXEC(_connection, lcCommand))
llError = .T.
ENDIF
ENDIF
IF !dbsysobj('MODUL1','T','M_MENU','')
lcCommand = "CREATE TABLE [MODUL1].[dbo].[M_MENU] ( "+;
"[MENU] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_MENU] DEFAULT (''), "+;
"[NR] [tinyint] NOT NULL CONSTRAINT [DF_M_MENU_NR] DEFAULT (''), "+;
"[OPIS] [varchar] (100) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_OPIS] DEFAULT (''), "+;
"[ICO] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_ICO] DEFAULT (''), "+;
"[AKCJA] [varchar] (254) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_M_MENU_AKCJA] DEFAULT (''), "+;
"CONSTRAINT [PK_M_MENU] PRIMARY KEY CLUSTERED "+;
"([MENU], [NR] "+;
") ON [PRIMARY] "+;
")"
IF !IsOK(SQLEXEC(_connection, lcCommand))
llError = .T.
ENDIF
ENDIF

6.1.4. Dodatkowe informacje

Widoczność procedur w pliku wykonywalnym modułu jest ograniczona do wszystkich procedur i funkcji znajdujących się w pliku głównym modułu (tym ustawionym poprzez set main) – stad jest możliwość wywoływania odpowiednich procedur, a procedura główna może np. pokazywać okienko z informacja, że jest to plik modułu uruchamialny z systemu
W związku z tym jest możliwość takiego wywoływania akcji:
DO procedura IN _mapp

Przykładowe równoważniki ciągów symboli _xsc\, _mpath\, _mapp które można używać w kolumnach ikonki, akcji tabeli m_menu oraz kolumny app_path w tabeli config w bazie modułu:
_xsc\  – katalog programu (np. c:\hermes sql\)
_mpath\  – katalog modułu (_xsc\modul\ -> c:\hermes sql\modul\)
_mapp –  plik wykonywalny modułu (‘c:\hermessql\modul\modul.app’)

Aby dostać się do danych na serwerze sql’owym można użyć polecenia:

SQLEXEC(_connection, lcCommand, kursor)
lub
mySqlExec(lcCommand) zwracającego nazwę kursora z uzyskanym rezultatem zapytania

Przykładowe użycie mySqlExec:

lcCommand="SELECT baza_mod FROM Hermes.dbo.firmy WHERE symbol='"+_xmojfrm+"'"
lcCursor=mySqlExec(lcCommand)
IF !EMPTY(lcCursor)
SELECT &lcCursor
IF RECCOUNT()>0
BazaModulu=ALLTRIM(baza_mod)
ENDIF
USE IN (lcCursor)
ENDIF

lcCommand="SELECT nr_wersji FROM m_firma"
lcCursor=mySqlExec(lcCommand)
IF !EMPTY(lcCursor)
SELECT &lcCursor
IF RECCOUNT()>0
lnNrWersjiModuluWFirmie=nr_wersji
ENDIF
USE IN (lcCursor)
ENDIF

 

6.2. Widoki fabryczne modułu

1) W bazie modułu powinno być założonych pięć tabel zgodnie z poniższymi poleceniami SQL:

a) sl_view

CREATE TABLE [SL_VIEW] (
[WIDOK] [char] (10) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_WIDOK] DEFAULT (''),
[TABELA] [char] (10) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_TABELA] DEFAULT (''),
[SL_TYTUL] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_TYTUL] DEFAULT (''),
[TYTUL_FORM] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_TYTUL_FORM] DEFAULT (''),
[TYTUL_WW] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_TYTUL_WW] DEFAULT (''),
[FILTER] [char] (150) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_FILTER] DEFAULT (''),
[SK_TABELA] [bit] NOT NULL CONSTRAINT [DF_SL_VIEW_SK_TABELA] DEFAULT (1),
[SK_WIECEJ] [bit] NOT NULL CONSTRAINT [DF_SL_VIEW_SK_WIECEJ] DEFAULT (1),
[SL_DODAJ] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_DODAJ] DEFAULT (''),
[SL_POPRAW] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_POPRAW] DEFAULT (''),
[SL_USUN] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_USUN] DEFAULT (''),
[SL_WARWYB] [char] (70) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_WARWYB] DEFAULT (''),
[SL_WYDRUK] [char] (40) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_WYDRUK] DEFAULT (''),
[SL_DRK_DOK] [char] (30) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_DRK_DOK] DEFAULT (''),
[SL_Z_BUF] [char] (40) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_Z_BUF] DEFAULT (''),
[SL_DO_BUF] [char] (90) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_DO_BUF] DEFAULT (''),
[SK_DODAJ] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_DODAJ] DEFAULT ('.T.'),
[SK_POPRAW] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_POPRAW] DEFAULT ('.T.'),
[SK_USUN] [char] (60) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_USUN] DEFAULT ('.T.'),
[SK_PRZ_TR] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_PRZ_TR] DEFAULT ('.T.'),
[SK_WYBOR] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_WYBOR] DEFAULT ('.T.'),
[SK_ZNAJDZ] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_ZNAJDZ] DEFAULT ('.T.'),
[SK_PORZADE] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_PORZADE] DEFAULT ('.T.'),
[SK_FABR] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_FABR] DEFAULT ('.T.'),
[SK_WARWYB] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_WARWYB] DEFAULT ('.T.'),
[SK_WYDRUK] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_WYDRUK] DEFAULT ('.T.'),
[SK_OBLICZ] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_OBLICZ] DEFAULT ('.T.'),
[SK_EKSPORT] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_EKSPORT] DEFAULT ('.T.'),
[SK_DRK_DOK] [char] (50) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_DRK_DOK] DEFAULT ('.T.'),
[SK_Z_BUF] [char] (100) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_Z_BUF] DEFAULT ('.T.'),
[SK_DO_BUF] [char] (100) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SK_DO_BUF] DEFAULT ('.T.'),
[NRWERSJIBR] [numeric](10, 0) NOT NULL CONSTRAINT [DF_SL_VIEW_NRWERSJIBR] DEFAULT (0),
[SL_OPIS] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_SL_OPIS] DEFAULT (''),
[FORM_PARAM] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_FORM_PARAM] DEFAULT (''),
[SK_SUM] [bit] NOT NULL CONSTRAINT [DF_SL_VIEW_SK_SUM] DEFAULT (1),
[PROPERTIES] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_PROPERTIES] DEFAULT (''),
[JOIN_TABLE] [char] (30) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_VIEW_JOIN_TABLE] DEFAULT (''),
CONSTRAINT [PK_SL_VIEW] PRIMARY KEY CLUSTERED
(
[WIDOK]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

b) sl_widok

CREATE TABLE [SL_WIDOK] (
[ID_WIDOK] [int] IDENTITY (1, 1) NOT NULL ,
[WIDOK] [char] (10) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_WIDOK] DEFAULT (''),
[NAZWA] [char] (30) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_NAZWA] DEFAULT (''),
[ID_ZAP] [int] NOT NULL CONSTRAINT [DF_SL_WIDOK_ID_ZAP] DEFAULT (0),
[SYMBOL_WZR] [char] (10) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_SYMBOL_WZR] DEFAULT (''),
[FORM_PARAM] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_FORM_PARAM] DEFAULT (''),
[PROPERTIES] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_PROPERTIES] DEFAULT (''),
[JOIN_TABLE] [char] (30) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_WIDOK_JOIN_TABLE] DEFAULT (''),
CONSTRAINT [PK_SL_WIDOK] PRIMARY KEY CLUSTERED
(
[ID_WIDOK]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

c) sl_zap

CREATE TABLE [SL_ZAP] (
[ID_ZAP] [int] IDENTITY (1, 1) NOT NULL ,
[WIDOK] [char] (10) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_ZAP_WIDOK] DEFAULT (''),
[NAZWA] [char] (30) COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_ZAP_NAZWA] DEFAULT (''),
CONSTRAINT [PK_SL_ZAP] PRIMARY KEY CLUSTERED
(
[ID_ZAP]
) ON [PRIMARY]
) ON [PRIMARY]

d) sl_def_v

CREATE TABLE [SL_DEF_V] (
[widok] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[objecttype] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[objectname] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[expr] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_DEF_V_EXPR] DEFAULT (''),
[id] [int] IDENTITY (1, 1) NOT NULL ,
[id_zap] [int] NOT NULL CONSTRAINT [DF_SL_DEF_V_id_zap] DEFAULT (0),
CONSTRAINT [PK_SL_DEF_V] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

e) sl_colmn

CREATE TABLE [SL_COLMN] (
[widok] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[kolumna] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[properties] [text] COLLATE Polish_CI_AS NOT NULL CONSTRAINT [DF_SL_COLMN_properties] DEFAULT (''),
[column_ord] [int] NOT NULL CONSTRAINT [DF_SL_COLMN_column_ord] DEFAULT (1),
[id_widok] [int] NOT NULL CONSTRAINT [DF_SL_COLMN_id_widok] DEFAULT (0),
[id] [int] IDENTITY (1, 1) NOT NULL ,
CONSTRAINT [PK_SL_COLMN] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

2) Utworzenie i modyfikowanie widoków fabrycznych

Aby dodać widok fabryczny modułu należy:
– ręcznie dodać rekord w tabeli sl_view w bazie modułu,
– w katalogu programu utworzyć pusty plik pm.mod (programowanie modułu),
– uruchomić programu – powinna się pojawić dodatkowa pozycja _xmprojekt w menu System,
– włączenie pozycji _xmprojekt spowoduje, że wszelkie informacje odnośnie widoku będą zapisywane w tabelach słowników modułu (tabele: sl_view, sl_widok, sl_zap, sl_def_v, sl_colmn w bazie modułu),
– uruchomić grida dla tego widoku (np. wywołać polecenie browse dla modułu) – spowoduje to dodanie odpowiednich pozycji do tabel słownikowych,
– zaprojektować widok za pomocą opcji Zarządzanie widokami oraz Zarządzanie zapytaniami SQL, dodać odpowiednie kolumny, sformatować wygląd,
– zapisać wygląd tabeli – gdy była włączona opcja _xmprojekt, to wygląd zostanie zapisany w tabelach słowników modułu,
– wyłączyć opcje _xmprojekt,
– skasować plik pm.mod (gdyby użytkownik końcowy posiadał taki plik mógłby on nadpisać tabele słownikowe modułu co zniszczyłoby fabryczne widoki modułu).

3) Znaczenie wybranych pól w tabeli sl_view:

[WIDOK] [char] (10) – nazwa widoku modułu pisana dużymi literami zaczynająca się od M_ , np. M_TEST,

[TABELA] [char] (10) – nazwa tabeli z danymi, np. M_TABELA,

[SL_TYTUL] [char] (70) – tytuł widoku, np. Tabela testowa,

[TYTUL_FORM] [char] (70)  – tytuł widoku dla formularza browse, zazwyczaj zawiera to samo co kolumna sl_tytul,  np. Tabela testowa,

[TYTUL_WW] [char] (70) – tytuł dla formularza z filtrami, np. Tabela testowa – filtry,

[SK_TABELA] [bit] – czy ma pojawić się przycisk Narzędzia (F11) z narzędziami dotyczącymi tabeli (menu pod prawym przyciskiem myszki); 0 – tak, 1 – nie (menu pod prawym przyciskiem myszki pozostanie nadal),

[SK_WIECEJ] [bit] – czy ma pojawić się przycisk z dodatkowymi narzędziami dla danego widoku (F12); 0 – tak, 1 – nie,

[SK_DODAJ] [char] (50) – czy ma pojawić się przycisk Dodaj; jest to wyrażenie Foxa, które przyjmuje wartość .T. lub .F.; .T. – brak przycisku, .F. – jest przycisk, np. .F., !zmienna,

[SK_POPRAW] [char] (50) – czy ma pojawić się przycisk Popraw; reszta jak wyżej,

[SK_USUN] [char] (60) – czy ma pojawić się przycisk Usuń; reszta jak wyżej,

[SK_PRZ_TR] [char] (50) – czy ma pojawić się przycisk Przenoszenie treści; reszta jak wyżej,

[SK_ZNAJDZ] [char] (50) – czy ma pojawić się przycisk Szukaj w całej tabeli (Ctrl – F); reszta jak wyżej,

[SK_WARWYB] [char] (50) – czy ma pojawić się przycisk Filtry (F8); reszta jak wyżej,

[SK_WYDRUK] [char] (50) – czy ma pojawić się przycisk Drukuj; reszta jak wyżej,

[SK_OBLICZ] [char] (50) – czy ma pojawić się przycisk Podsumowania; reszta jak wyżej,

[SK_WYBOR] [char] (50) – czy ma być aktywny przycisk Wybierz dla widoku wybranego jako lista browse; reszta jak wyżej,

[SL_DODAJ] [char] (70) – polecenie wykonywane po naciśnięciu przycisku Dodaj,

[SL_POPRAW] [char] (70) – polecenie wykonywane po naciśnięciu przycisku Popraw,

[SL_USUN] [char] (70) – polecenie wykonywane po naciśnięciu przycisku Usun,

[SL_WARWYB] [char] (70) – polecenie wykonywane po naciśnięciu przycisku Filtry,

[SL_WYDRUK] [char] (40) – polecenie wykonywane po naciśnięciu przycisku Drukuj.

4) Wywołanie browse dla modułu

browse(widok, alias, where, wherelb, listaBrowse, typ, porzadek, modul)

gdzie:

  • widok – nazwa widoku,
  • alias – alias pod którym widok ma być otwarty (pozostawienie tego pola pustego spowoduje otwarcie widoku pod aliasem o nazwie widoku),
  • listaBrowse – .T. jeśli ma to być lista browse (na której można wybrać element) lub .F. jeśli nie,
  • modul – 1 jeśli jest to widok modułu lub 0 jeśli nie.

Przykładowe wywołanie browse:
browse (‘M_TEST’,,,,,,,1) – otworzenie z modułu widoku M_TEST w formularzu browse programu
browse (‘M_TEST’,,,,.T.,,,1) – otworzenie z modułu widoku M_TEST jako listy browse programu SQL
browse (‘M_ART’) – otworzenie widoku ART (widok będzie szukany w słownikach programu SQL, a nie w słownikach modułu)

5) Tabele modułu, które mają służyć jako tabele dla widoków, muszą posiadać kolumnę row_dtime (wg tej kolumny ustalany jest porządek domyślny)

[row_dtime] [datetime] NOT NULL CONSTRAINT [DF_M_TEST_row_dtime] DEFAULT (getdate())

6) Zmienne globalne w programie dotyczące modułu:

zmienne można wykorzystać przy definiowaniu poleceń wykonywanych dla danego przycisku (Dodaj, Popraw itd.)
_xbaza_mod – nazwa bazy modułu odczytana z tabeli firmy w bazie Hermes
_xapp_path – ścieżka modułu
_xapp_mod – plik wykonywalny modułu razem z jego pełną ścieżką (ujęty w znaki ‘’)

Przykłady:
– akcja wywoływana po naciśnięciu przycisku Dodaj:
do test_dodaj in &_xapp_mod with ‘D’

– akcja wywoływana po naciśnięciu przycisku Popraw:
do test_dodaj in &_xapp_mod with ‘P’

– akcja wywoływana po naciśnięciu przycisku Usuń:
This.DeleteRecord()- metoda grida do usuwania bieżącego rekordu

UWAGA!
Zgodnie z wcześniejszymi informacjami, aby procedura test_dodaj była widoczna w pliku wykonywalnym modułu musi się ona znajdować w pliku głównym modułu.

7) Za podstawę okienek dialogowych modułu można używać klasy basedataform.

Należy wypełnić poniższe właściwości:

  • csl_colmn ->msl_colmn (zamiastsl_colmn)
  • csl_def_v ->msl_def_v (zamiastsl_def_v)
  • csl_view ->msl_view (zamiastsl_view)
  • c_view ->=”widok”gdzie widok jest nazwą widoku modułu

Przykład:

Po wypełnieniu tych właściwości formularz wie, z których słowników ma wziąć definicję wybranego widoku (ze słowników programu czy ze słowników modułu).

Właściwość oData wskazuje na cursoradapter z polami widoku i danymi modyfikowanego rekordu (dla trybu ‘P’ – popraw).

Formularz na bazie tej klasy może mieć jako parametr:

  • ‘D’ czyli dodaj,
  • ‘P’ czyli popraw.

Przenoszenie treści trzeba obsłużyć we własnym zakresie – funkcją przen_tr() można sprawdzić, czy był wciśnięty przycisk Przenoszenie treści.

8) Klasa listabr (lista browse) służy do wybierania pozycji wykorzystując dany widok. Należy w tym przypadku pamiętać o ustawieniu wartości .T. w polu sk_wybor w tabeli słownikowej sl_view.

Najważniejsze właściwości:

  • cview – nazwa widoku,
  • calias– alias (domyślnie tabela widoku),
  • cpole– pole z widoku,
  • csl_view– słownik fabryczny programu lub modułu (sl_view– programu, msl_view– modułu)

6.3. Wzorce wydruku modułu

9) W bazie modułu powinny być założone dwie tabele (WZR_FRX, PLIKI_WZR) zgodnie z poniższymi poleceniami SQL:

a) wzr_frx

CREATE TABLE [WZR_FRX] (
[dlugstr] [decimal](3, 0) NULL CONSTRAINT [DF_WZR_FRX_dlugstr] DEFAULT (0),
[domysl_wzr] [bit] NULL CONSTRAINT [DF_WZR_FRX_domysl_wzr] DEFAULT (0),
[fabr] [bit] NULL CONSTRAINT [DF_WZR_FRX_fabr] DEFAULT (0),
[nazwa_wzr] [char] (52) COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_nazwa_wzr] DEFAULT (''),
[rodz_wzr] [char] (8) COLLATE Polish_CI_AS NOT NULL ,
[symbol_wzr] [char] (8) COLLATE Polish_CI_AS NOT NULL ,
[tytul_wzr] [text] COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_tytul_wzr] DEFAULT (''),
[szerstr] [decimal](3, 0) NULL CONSTRAINT [DF_WZR_FRX_szerstr] DEFAULT (0),
[parametr] [char] (10) COLLATE Polish_CI_AS NOT NULL ,
[prolog] [text] COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_prolog] DEFAULT (''),
[epilog] [text] COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_epilog] DEFAULT (''),
[symbol_std] [char] (3) COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_symbol_std] DEFAULT (''),
[putf] [char] (50) COLLATE Polish_CI_AS NULL ,
[il_kopii] [decimal](3, 0) NULL CONSTRAINT [DF_WZR_FRX_il_kopii] DEFAULT (1),
[graf_txt] [decimal](1, 0) NULL CONSTRAINT [DF_WZR_FRX_graf_txt] DEFAULT (0),
[pytaj_druk] [bit] NULL CONSTRAINT [DF_WZR_FRX_pytaj_druk] DEFAULT (0),
[fabr_txt] [bit] NULL CONSTRAINT [DF_WZR_FRX_fabr_txt] DEFAULT (0),
[printerwin] [char] (32) COLLATE Polish_CI_AS NULL CONSTRAINT [DF_WZR_FRX_printerwin] DEFAULT (''),
[orientacja] [decimal](1, 0) NULL CONSTRAINT [DF_WZR_FRX_orientacja] DEFAULT (0),
[ID_FRX] [int] NULL CONSTRAINT [DF_WZR_FRX_ID_FRX] DEFAULT (0),
[ID_FRT] [int] NULL CONSTRAINT [DF_WZR_FRX_ID_FRT] DEFAULT (0),
[row_dtime] [datetime] NOT NULL CONSTRAINT [DF_WZR_FRX_row_dtime] DEFAULT (getdate()),
CONSTRAINT [PK_WZR_FRX] PRIMARY KEY CLUSTERED
(
[rodz_wzr],
[symbol_wzr],
[parametr]
) ON [PRIMARY]
) ON [PRIMARY]

b) pliki_wzr

CREATE TABLE [PLIKI_WZR] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[NAZWA] [char] (16) COLLATE Polish_CI_AS NULL ,

[TYP] [char] (3) COLLATE Polish_CI_AS NULL ,

[PLIK] [text] COLLATE Polish_CI_AS NULL ,

[CRC] [char] (10) COLLATE Polish_CI_AS NULL ,

[row_dtime] [datetime] NOT NULL CONSTRAINT [DF_PLIKI_WZR_row_dtime] DEFAULT (getdate()),

CONSTRAINT [PK_PLIKI_WZR] PRIMARY KEY  CLUSTERED

(

[ID]

)  ON [PRIMARY]

) ON [PRIMARY]

10) Ogólna zasada dla wzorców wydruku z modułu.

Wzorce fabryczne modułu zapisywane są w tabelach wzr_frxi pliki_wzr w bazie modułu. Wzorce użytkownika są zapisywane w bazie danej firmy. Wzorce modułu, zarówno te fabryczne jak i użytkownika, można eksportować i importować w taki sam sposób jak wzorce programu. Wzorców fabrycznych modułu nie można eksportować ani modyfikować w normalnym trybie, można to zrobić jedynie w trybie projektowania modułu, po włączeniu opcji _xmprojfrx (projektowanie wzorców fabrycznych modułu). Rodzaj wzorca musi się zaczynać na m_ , natomiast symbol wzorca może być już dowolny (symbol wzorca unikalny dla danego rodzaju wzorca).

11) Polecenia drukujące

druk_tbl (rodz_wzr, tytul, TlModul)

drukuj tabelę, pokazuje okienko dialogowe DRUKUJ dla wzorców z rodzaju rodz_wzri nadaje tytuł wydruku; jeśli TlModul jest równy 1 to wzorce czerpane są z modułu (wzorce fabryczne modułu z bazy modułu, a wzorce użytkownika z bazy danej firmy)

Przykład użycia:
DO druk_tbl (“M_TEST”, , 1)
Pokazuje okienko dialogowe DRUKUJ dla wzorców wydruku rodzajuM_TESTpochodzących z modułu.

druk (rodz_wzr, symbol_wzr, param_wzr, tytul, nr_start, druk_ok, niekoncz, tlModul)

gdzie:
rodz_wzr – rodzaj wzorców,
symbol_wzr – symbol wzorca, który ma być wybrany (domyślnie wybierany jest wzorzec domyślny),
param_wzr – parametr wzorca, który ma być wybrany,
tytul – tytuł wydruku,
tlModul – czy wzorce z modułu, 1 jeśli tak.

Przykłady użycia:
DO druk (“M_TEST”, , , , , , , 1)
Pokazuje okienko dialogowe DRUKUJ dla wzorców wydruku rodzaju M_TEST pochodzących z modułu – polecenie identyczne w skutkach do polecenia:
DO druk_tbl WITH “M_TEST”, , 1

DO druk WITH “M_TEST”, “FGH”, , , , , , 1
Pokazuje okienko dialogowe DRUKUJ dla wzorców wydruku rodzaju M_TEST pochodzących z modułu; wybrany będzie wzorzec o symbolu FGH.

DO druk (“M_TEST”, “FGH”,”A”, , , , , 1)
Pokazuje okienko dialogowe DRUKUJ dla wzorców wydruku rodzaju M_TEST pochodzących z modułu; wybrany będzie wzorzec o symbolu FGH i parametrze A.

UWAGA!
Oczywiście można naprzemiennie używać druk() lub konstrukcji z WITH.

12) Tworzenie i modyfikacja fabrycznych wzorców wydruku

Aby dodać fabryczny wzorzec wydruku modułu należy:
– w katalogu programu utworzyć pusty plik pm.mod (programowanie modułu),
– uruchomić programu – powinna się pojawić dodatkowa pozycja _xmprojfrx w menu System,
– włączenie pozycji _xmprojfrx spowoduje, że będziemy projektować wzorzec fabryczny dla modułu (będzie on zapisany w bazie modułu),
– wywołać odpowiednie polecenie drukujące (np. wywołane po naciśnięciu przycisku Drukuj z grida), w okienku DRUKUJ zaprojektować odpowiedni wzorzec (czyli dodać wzorzec, zaprojektować go i zapisać),
– wyłączyć opcje _xmprojfrx,
– skasować plik pm.mod .

13) Import, eksport wzorców wydruku pochodzących z modułu.

Eksport wzorców użytkownika przebiega dokładnie w taki sam sposób jak wzorców programu. Aby wyeksportować wzorce fabryczne modułu należy włączyć opcję _xmprojfrx. Import wzorców modułu przebiega dokładnie w taki sam sposób jak wzorców programu; wzorce fabryczne modułu będą wkopiowane do bazy modułu (oczywiście przy włączonej opcji _xmprojfrx).

6.4. Procedura M_AUTORUN

W module branżowym możemy również umieścić kod, który wykona się przy logowaniu się operatorów do systemu. Wystarczy taki kod umieścić w programie głównym modułu w procedurze, którą należy nazwać M_AUTORUN. Program przy logowaniu sprawdza, czy taka procedura istnieje i wykonuje jej kod.
Funkcjonalność taka daje możliwość np. tworzenia systemu altertowania określonych zdarzeń.

Przegląd rozwiązań indywidualnych

Opcja Przegląd rozwiązań indywidualnych dostępna z menu Administracja, pokazuje zbiorczo wszystkie indywidualne rozwiązania będące aktualnie w systemie, czyli:
• Funkcje prywatne,
• Funkcje użytkownika,
• Prologi i epilogi dokumentów,
• Prywatne wzorce wydruków,
• Moduł (tylko nazwa i ścieżka).

Przegląd rozwiązań indywidualnych umożliwia podgląd oraz edycję rozwiązań zaimplementowanych w systemie. Możemy również przeglądać oraz edytować opisy do każdego z rozwiązań. W związku z tą możliwością pojawiły się pola z opisem w Funkcjach prywatnych, Funkcjach użytkownika, Definicjach dokumentów (przy prologach i epilogach) oraz we Wzorcach wydruków.

Broker

Broker jest faktycznie Hermesem pracującym w trybie zdalnego sterowania. To, co może zrobić operator jest ograniczone tylko do jednego formularza obsługującego m.in. wprowadzanie parametrów potrzebnych do komunikacji z systemem wewnętrznym, zatrzymywanie i wznawianie nasłuchu, oglądanie logów. Obsługa Hermesa, m.in. dodawanie i edycja niektórych dokumentów, uzyskiwanie danych, odbywa się za pomocą poleceń w języku XML, które Hermes otrzymuje od aplikacji zewnętrznej, z którą się komunikuje. Aplikację tę będziemy dalej nazywać klientem. Opis tych poleceń dostępny jest z poziomu Hermesa (Administracja -> Przegląd poleceń Brokera). Efekt wykonania polecenia i ewentualne informacje o błędach odsyłane są również w formacie XML.
Ponieważ Broker jest faktycznie Hermesem obsługującym otrzymywane polecenia, sekwencja otrzymywania niektórych poleceń nie może być dowolna. Oczywiście można pobrać dane artykułów, kontrahentów lub inne w dowolnej kolejności, ale np. dodanie dokumentu wymaga wysłania kolejno poleceń dodania nagłówka dokumentu, potem pozycji a na końcu polecenia zamykającego dokument (tak jak w Hermesie niemożliwa jest jednoczesna edycja dwóch dokumentów). Oczywiście pomiędzy tymi poleceniami mogą się pojawić inne, nie zaburzające sekwencji dodawania dokumentu (np. pobranie danych artykułu), ale już np. odebranie polecenia dodania kolejnego dokumentu przed zamknięciem właśnie dodawanego skończy się informacją o błędzie wysłaną do klienta.
Tak jak Hermes nie pracuje bez zalogowanego operatora do określonej firmy, tak samo Broker potrzebuje informacji o operatorze i firmie. Można je podać jako parametry podczas uruchamiania programu, klient może też mieć własny mechanizm logowania, wykorzystujący odpowiednie polecenia Brokera.
Do komunikacji z klientami wykorzystywany jest mechanizm gniazd (socket). Umożliwia on otwarcie kanału komunikacyjnego pomiędzy Brokerem a klientem. Każde gniazdo posiada adres IP oraz numer portu. Broker nasłuchuje, czy na porcie pojawia się kolejne polecenie od klienta. Jeżeli tak, interpretuje je i wykonuje, a wyniki odsyła, korzystając z informacji o adresie IP i numerze portu, na którym nasłuchuje klient.
Lista poleceń, jakie możemy wysyłać do Brokera jest z dnia na dzień rozszerzana, co z każdą chwilą coraz bardziej zwiększa możliwości integracji z innymi systemami.
Aby lepiej wyobrazić sobie funkcje jaką pełni broker, możemy go przyrównać do wirtualnego pracownika który np.: przyjmuje zamówienia z portalu B2B i wprowadza je do programu Hermes SQL.

Poniżej znajduje się schemat blokowy użycia brokera, który może pomóc zrozumieć czym jest broker.

Należy pamiętać ze wykorzystanie modułu brokera, czyli mechanizmu umożliwiającego dostęp do informacji programu Hermes SQL w zakresie pobierania i zapisywania informacji w systemie zgodnie z jego logiką przy wykorzystaniu wbudowanych funkcji m.in tworzenia dokumentów, pobierania informacji o asortymencie, kontrahentach itp. jest obecnie najbardziej wskazaną i najbezpieczniejszą z punktu widzenia spójności danych metodą integracji.

Broker jako pośrednik umożliwiający komunikację, pomiędzy Hermesem SQL a innymi aplikacjami umieszczonymi w strukturze rozproszonej wykorzystywany jest do działania takich aplikacji  Humansoft jak Portal pracowniczy, B2B, aplikacje mobilne. W celu uruchomienia brokera, poza samym modułem wymagana jest  jedna stacja kliencka.
Moduł jest stale rozwijany o kolejne funkcje, w zależności od potrzeb jakie się pojawią zarówno od klientów i od partnerów.

8.1. Wywołanie brokera

Wywołanie brokera:
“<<sciezka do pliku exe>>hermes_sql.exe” “<<symbol firmy>>” “<<symbol operatora>>” “<<hasło>>” “<<stacja>>” <<czy broker>> “<<IP klienta brokera>>” <<port klienta brokera>>” “<<powiadomienia>>” “<<IP brokera>>” “<<port brokera>>” “<<podtrzymanie połączenia>>” “<<szyfrowanie SSL>>” “<<echo>>” “<<log>>”

Przykład:

  • Wywołanie brokera należy napisać w notatniku a następnie zapisać z rozszerzeniem *.BAT, np. Wywołanie_brokera.bat.
  • Tylko w przypadku systemowego operatora SZEF należy poprzedzić symbol podkreśleniem „_” → ”_SZEF”. W każdym innym operatorze stworzonym przez użytkownika, podkreślenia nie stosujemy np. ABC.
  • Jeśli chcemy, żeby broker łączył się nie tylko z jednym klientem, zamiast IP klienta i Port klienta, należy wstawić symbol # za każde z nich.
  • Adres IP brokera ma sens tylko w przypadku komputerów z wieloma kartami sieciowymi, pozwala wymusić komunikację przez jedną z nich.
  • W przypadku braku hasła do konta operatora należy zamiast hasła wstawić symbol #. Jednak zalecamy stosowanie hasła.
  • *Cztery ostatnie cyfry to informacja czy dany checkbox ma być zaznaczony; 0 = nie zaznaczony, 1 = zaznaczony. Cyfry oznaczają kolejno (od lewej): Podtrzymywanie połączenia, SSL, Echo, Rejestracja logu

8.2. Polecenia brokera

Polecenia brokera można przejrzeć z poziomu systemu w menu Admin -> Przegląd dostępnych Poleceń brokera.