Konfiguracja drukarek, Definicje wydruków

Drukowanie etykiet w aplikacjach Comarch WMS realizowane jest przez usługę Comarch WMS Service.

Uwaga

Używane drukarki muszą zostać zainstalowane w systemie Windows, na komputerze, na którym została uruchomiona usługa.

1. Dodawanie drukarek w systemie

Drukarki lokalne, tzn. podłączone do komputera, widoczne są dla wszystkich użytkowników i nie wymagają żadnych dodatkowych operacji, natomiast drukarki sieciowe, są instalowane w systemie tylko dla konkretnego użytkownika i wymagają ich instalacji dla konta, na którym uruchamiana jest usługa Comarch WMS Service. Domyślnie usługa uruchamiana jest na Lokalne konto systemowe i drukarka musi zostać dodana dla tego konta.
Proces dodawania drukarki udostępnionej przebiega dwuetapowo. Najpierw dodajemy drukarkę standardowo do systemu. Następnie uruchamiamy aplikacje „PrinterManager” z katalogu, w którym została zainstalowana aplikacja Comarch WMS Magazynier. W oknie aplikacji prezentowane są drukarki sieciowe, dodane dla aktualnie zalogowanego użytkownika. Na liście zaznaczamy drukarki, które mają zostać dodane dla Lokalnego konta systemowego, a następnie klikamy na przycisk „Dodaj/Usuń”. Aplikacja pozwala także na usunięcie wcześniej dodanej drukarki, poprzez odznaczenie jej na liście i naciśnięcia przycisku „Dodaj/Usuń”.

2. Konfiguracja drukarek

W menu „Drukarki” istnieje możliwość zdefiniowania drukarki dostępnej w systemie (Rys. poniżej). Określamy tutaj:

  • Nazwa – nazwa drukarki,
  • Drukarka – należy wybrać drukarkę etykiet z listy drukarek, dostępnych dla komputera, na którym uruchomiona jest usługa synchronizacji Comarch WMS Service,
  • Typ drukarki – należy wybrać typ drukarki (atramentowa/etykiet),
  • Dostępność – należy wybrać magazyn lub magazyny, dla których ma być dostępna ta drukarka.

uz_rys28

 

3. Obsługiwane drukarki

Comarch WMS wspiera obecnie wydruki na drukarkach obsługujących protokoły Direct Protocol (DP), Datamax Programmer’s Language (DPL) oraz Zebra Programming Language (ZPL). Nie ma możliwości wykorzystania standardowych drukarek atramentowych/laserowych oraz drukarek zapisujących wydruki do plików do wydruku etykiet. Renderowanie wydruków etykiet jest realizowane przez samą drukarkę, a nie poprzez aplikację na komputerze jak przy zwykłych drukarkach, przez co nie ma możliwości podglądu wydruku przed jego wydrukowaniem.

Przykładowe modele drukarek etykiet testowane z aplikacją Comarch WMS:

  • Intermec PD43 (protokół DP),
  • Datamax H-Class H-4310 (protokół DPL),
  • Zebra ZT220 (protokół ZPL).

 

4. Budowa definicji wydruków

Definicje wydruków dla etykiet znajdują się w katalogu „Labels” w katalogu, w którym został zainstalowany Comarch WMS Magazynier. Każda definicja znajduje się w oddzielnym katalogu. Wewnątrz znajduje się plik report.xml. Zbudowany jest on z dwóch głównym sekcji: DataCommand oraz Definition. Sekcja DataCommand definiuje źródło danych, jakie zostanie wykorzystane podczas pobierania danych dla wydruku. Parametr Type może przyjmować jedną z dwóch wartości: StoredProcedure – jeżeli jako źródło danych wykorzystywana jest procedura składowana lub Text – jeżeli jako źródło danych wykorzystywane jest zapytanie SQL. Do źródła danych przekazywane są parametry zależne od kontekstu wydruku oraz jego typu. Dokładny spis parametrów przedstawia poniższa tabela.

Typ etykiety Wydruk z poziomu
Parametry Opis
Etykieta partii towaru Pozycja dokumentu @PositionId Id pozycji dokumentu
Położenie @LotId Id partii towaru
@LotId Id partii towaru
Etykieta jednostki logistycznej Pozycja dokumentu @PositionId Id pozycji dokumentu
Etykieta położenia Pozycja dokumentu @PositionId Id pozycji dokumentu
Położenie @WarehouseId Id magazynu
@LocalizationId Id położenia
@IsSingleInstance Parametr mówi nam o tym, czy wydruk ma zostać wykonany w kontekście danego położenia, czy jego położeń podrzędnych.

4.1. Sekcja Definition

Sekcja Definition zawiera definicje samego wydruku tj. jego rozmiar, zawartość oraz wygląd. W tej sekcji możemy wykorzystać dane zwrócone przez źródło danych zwrócone przez zapytanie z sekcji DataCommand. Sekcja Definition podzielona jest na 3 podsekcje: Header – kod z tej sekcji będzie wysłany tylko raz na początku wydruku, Page – kod z tej sekcji będzie wysłany do drukarki raz dla każdej etykiety, Footer – kod z tej sekcji będzie wysłany raz na końcu wydruku. Rozmiar etykiety definiujemy poprzez parametr PageWidth oraz PageHeight. Parametr Language mówi o tym, dla jakiego protokołu zdefiniowany jest dana definicja. Dla Direct Protocol oraz Zebra Programming Language podajemy w tym miejscu DP, natomiast dla Datamax Programmer’s Language podajemy DPL.

 

4.2. Wykorzystanie danych w sekcji Definition

Dane zwrócone przez źródło danych zdefiniowane w sekcji DataCommand mogą składać się z wielu wyników, ale tylko pierwszy z nich może zawierać wiele rekordów. Każdy z rekordów zostanie przetworzony na jedną etykietę (w zdefiniowanej liczbie kopii). Dane z pierwszego wyniku pobieramy poprzez nazwę kolumny otoczoną przez podwójne nawiasy klamrowe np. {{nazwa_kolumny}}. Dane z pierwszych rekordów pozostałych wyników możemy pobrać analogicznie, poprzedzając nazwę kolumny numerem wyniku i dwukropkiem np. {{1:nazwa_kolumny}}, aby pobrać dane z pierwszego dodatkowego wyniku.
W sekcji możemy wykorzystać funkcje, przetwarzające dane dla wydruku oraz pozwalające na pozycjonowanie elementów wydruku bazując na zdefiniowanym rozmiarze etykiety. Nazwa każdej funkcji zaczyna się od znaku: @, po którym występuje jej nazwa oraz argumenty objęte w nawiasy okrągłe.

Funkcje niezależne od protokołu drukarki:

    • @comment(comment) – funkcja pozwala wstawić komentarz do kodu wydruku.
    • @replace-chars(value,src,dest) – pozwala na zamianę serii znaków w danych na inne.
      value – Łańcuch znaków do przetworzenia
      src – Znaki źródłowe
      dest – Znaki docelowe
Przykład
@replace-chars(Warehouse,xyz,XYZ)
Zamienia znaki x,y i z na X,Y i Z w kolumnie Warehouse
  • @strip-polish(value) – Zamienia polskie znaki diakrytyczne na ich odpowiedniki bez ogonków.
  • @char(number) – Zwraca znak o podanym kodzie.
  • @format(value, format) – Formatuje ciąg znaków, format może być dowolnym, poprawnym formatem .NET.
  • @dpi(value) – Ustawia DPI dla wydruku. Funkcja wykorzystywana w sekcji Header.

</ br>
Funkcje specyficzne dla protokołu DPL (Datamax Programmer’s Language):

  • @num-of-pages() – Zwraca liczbę kopii w formacie 4 znaków z zerami wiodącymi.
  • @image(image-name[,width[,height]]) – Przesyła obrazek do drukarki i wstawia jego nazwę w miejscu wywołania. Jeżeli dany obrazek wykorzystany jest kilkukrotnie, wysyłany jest tylko raz. Funkcja posiada opcjonalne parametry określające rozmiar obrazka.
  • @module(value) – Ustawia moduł, do którego będą przesyłane grafiki (obrazki). Domyślna wartość to C.
  • @width(value[,size]) – Zwraca wartość bazując na szerokości strony. Argument: size określa długość pola (domyślnie 4).
Przykład
@width(0.1) – odpowiada 10% szerokości
@width(20%) – odpowiada 20% szerokości
@width(50mm)
@width(2in)
  • @height(value[,size]) – Analogicznie jak @width lecz bazuje na wysokości strony.
  • @h-center(bazeSize,sizePerChar,value[,size]) – Zwraca pozycję od lewego brzegu strony, tak aby obiekt był wyśrodkowany w poziomie. Pozwala na wyśrodkowanie kodu kreskowego.
    baseSize – stała szerokość bazowa
    sizePerChar – o ile powiększa się szerokość obiektu po dodaniu jednego znaku do value
    value – wartość np. kodu kreskowego
    size – szerokość pola, domyślnie 4
  • @v-center – Analogicznie jak @h-center tylko w pionie.

Funkcje specyficzne dla protokołu DP (Direct Protocol)

    • @width(value) – Wielkość bazująca na szerokości. Wartość w punktach bazująca na DPI.
Przykład
@width(0.1) – odpowiada 10% szerokości
@width(20%) – odpowiada 20% szerokości
@width(50mm)
@width(2in)
  • @height(value) – Analogicznie jak @width, ale bazuje na wysokości.
  • @image(image-name[,width[,height,[,posX,posY[,anchor-point]]]]) – Wysyła grafikę (obrazek) do drukarki przy użycia protokołu PRBUF.
    image-name – nazwa obrazka
    width – szerokość
    height – wysokość
    posX – pozycja w poziomie
    posY – pozycja w pionie
    anchor-point – punkt zaczepienia
  • @num-of-pages() – Zwraca liczbę stron.

 

Czy ten artykuł był pomocny?