Techniczne

Pytania dotyczące struktury bazy lub zapytania SQL

Pytania dotyczące struktury bazy lub zapytania SQL proszę kierować do asysty systemu Comarch ERP, którego dotyczy sytuacja. Do asysty wybranego systemu ERP należy również kierować pytania dotyczące danych zwracanych przez standardowe wydruki. Przykładowe pytania:
  • Jak pobrać na szablon stawkę VAT dla wybranego produktu.
  • Co zawiera/Z czego składa się pole Dok_Nazwa_Canceled na szablonie standardowym dla faktury.

Szablony XML

W Edytorze Comarch sPrint nie ma możliwości edycji szablonów w formacie XML. W Edytorze możemy zmieniać i tworzyć szablony w formacie sp.

Zwiększenie poziomu logów

Aby zwiększyć poziom zapisywanych logów należy zmienić poniższą wartość "Info" na "Debug" w pliku appsettings.json
"Serilog": {
    "MinimumLevel": {
        "Default": "Info"
    },
},
Plik znajduje się w (domyślnej) ścieżce:
C:\Program Files\Comarch\Comarch sPrint\baseVersion\backend

Logi dla Comarch sPrint

Pliki logów znajdują się w ścieżce: C:\Users\nazwa użytkownika\AppData\Roaming\Comarch sPrint\Logs

Komunikat Incorrect syntax near the keyword 'WHERE'

Komunikat Incorrect syntax near the keyword 'WHERE' może wystąpić przy próbie uruchomienia wydruku z poziomu Comarch ERP jeśli na szablonie zostały zdefiniowane parametry, a w systemie Comarch ERP nie został zaznaczony check Ignoruj filtr aplikacji. Dla Comarch ERP Optima:

Komunikat Login failed for user 'CDNHASP'

Kiedy przy próbie uruchomienia wydruku z poziomu Comarch ERP pojawi się komunikat Login failed for user 'CDNHASP' należy zweryfikować czy SQL ma ustawiony tryb logowania Mixed mode. jest on wymagany dla poprawnego działania aplikacji Comarch sPrint.

Ukrycie parametru przy podglądzie wydruku

Aby ukryć parametr przy podglądzie wydruku należy dla danego parametru dodać opcję '@H()' w oknie Edycji wydruku na zakładce Inne.

Integracja z systemami Comarch ERP

Informacje ogólne

Zapis połączeń w Edytorze

Nie ma możliwości zapisania połączenia w Edytorze. Aby pominąć konieczność tworzenia połączenia za każdym razem przy tworzeniu szablonu zalecamy otwieranie nowego szablonu do edycji z poziomu systemu Comarch ERP. (Patrz Optima lub XL)  

Szablony standardowe

Wszystkie szablony standardowe wydruków są zaimplementowane bezpośrednio do programów Comarch ERP. Można pobrać taki szablon aby później zaimportować go jako nowy i edytować (Patrz Optima lub XL)

Integracja z Comarch ERP Optima

Jak przekazać wartość zmiennej dynamicznej do wydruku

Na szablonie należy stworzyć parametr szablonu o nazwie takiej jak zmienna dynamiczna. Po zapisaniu szablonu w ERP należy zaimportować parametry.  Wartość zmiennej dynamiczne zostanie przekazana do wydruku za pomocą stworzonego parametru.

Konfigurator danych szablonu

Brak możliwości wybrania funkcji w konfiguratorze

W 3 kroku konfiguratora wybieramy procedurę, która zwraca zbiór rekordów dlatego nie ma możliwości wybrania procedury, która zwraca jedną wartość.

Relacja Right Join przy samodzielnym definiowaniu danych

Dla opcji Zdefiniuj samodzielnie w Konfiguratorze danych szablonu możemy dodać więcej niż jedną tabelę i połączyć je relacjami. Dostępne typy złączeń: INNER JOIN oraz LEFT JOIN. Nie ma dostępnej opcji RIGHT JOIN, opcja ta jest odwrotnością opcji LEFT JOIN. W poniższym przykładzie złączenie
CDN.TraNag.TrN_TrNID RIGHT JOIN CDN.TraElem.TrE_TrNId
da taki sam efekt jak złączenie
CDN.TraElem.TrE_TrNId LEFT JOIN CDN.TraNag.TrN_TrNID
Aby skonstruować złączenie:
CDN.TraElem.TrE_TrNId LEFT JOIN CDN.TraNag.TrN_TrNID
należy złapać pole TrE_TrNId z tabeli CDN.TraElem i upuścić je na polu TrN_TrNID w tabeli CDN.TraNag. Czyli przeciągamy pole z tabeli, która ma być po lewej na pole w tabeli, która ma być po prawej. Jeśli złączenie doda się automatycznie przy dodawaniu tabel, należy je usunąć i dodać ręcznie.

Brak pobranych danych po skorzystaniu z opcji Wybierz procedurę lub funkcję SQL z listy

Jeśli przy pobieraniu danych z wykorzystaniem opcji Wybierz procedurę lub funkcję SQL z listy skorzystamy z procedury, która jest generowana dynamicznie to po przejściu do Edytora na lewym panelu danych nie będą dostępne dane bazodanowe. Generowane dynamicznie procedury dość powszechnie występują w bazie danych Comarch ERP XL. W takich przypadkach najlepiej skorzystać z opcji Wpisz własne zapytanie SQL i tam wywołać procedurę przez zapytanie SQL. Przykładowo, dla procedury "CDN"."WydrProdKartaPracy" i parametru @CDN_Filtr należy wprowadzić poniższe zapytanie.

Edycja szablonu

Precyzyjne przesuwanie elementów na szablonie

Przy przesuwaniu elementów na szablonie są one przyciągnę do siebie. Aby przesunąć dany element bardzo blisko innego elementu, ale bez przyciągania można przesunąć element z wciśniętym przyciskiem Alt. Można skorzystać również z prawego panelu z sekcji Układ aby dokładnie określi pozycje oraz wymiary danego elementu

Warunki widoczności dla sekcji podrzędnych

Sekcje na szablonie mają strukturę hierarchiczną. Po dodaniu kilku sekcji tego samego typu zauważymy, że pierwsza sekcja jest nadrzędna i zawiera pozostałe sekcje podrzędne. Widać to po zaznaczeniu sekcji nadrzędnej. Po zaznaczeniu sekcji podrzędnej zostaje wyróżniona tylko wybrana sekcja podrzedna. Po dodaniu warunku widoczności dla sekcji nadrzędnej zostaje on również zastosowany dla sekcji podrzędnych. Na prawym panelu jest on widoczny zarówno dla sekcji nadrzędnej jak i dla sekcji podrzędnych. Wpływa on na widoczność wszystkich sekcji danego typu. Natomiast dodanie warunku widoczności dla podsekcji będzie wpływało tylko na widoczność podsekcji

Pusta co druga strona

Jeśli co druga strona na wydruku jest pusta warto sprawdzić szerokość szablonu i podszablonów, czy jakiś element nie przenosi się na drugą stronę. Możemy to szybko zweryfikować zaznaczając wszystkie elementy na pustej stronie z poziomu podglądu w Edytorze.  

Domyślne formatowanie pól w sekcji

Po zaznaczeniu sekcji na szablonie możliwy jest wybór domyślnego formatowania dla całej sekcji. Po ustaleniu odpowiednich wartości nowe elementy dodawane będą z formatowaniem odpowiednim dla sekcji.

Zmiana zapytania na kopiach podszablonu

Po skopiowaniu kontrolki podszablonu i wklejeniu obok podszablon będzie cały czas tym samym elementem. Każda zmiana wprowadzona na jednym z podszablonów będzie powodowała zmianę także drugiego z nich. Podszablon oryginalny zawiera jedno pole Po dodaniu na kopię szablonu drugiego pola na podglądzie widzimy, że zostało ono dodane na obi podszablonach Aby powielić podszablon w taki sposób, żeby wprowadzone na tych podszablonach zmiany były od siebie niezależne to należy to zrobić za pomocą poniższych kroków:
  • Eksportujemy wybrany podszablon: Plik -> Pobierz -> Plik źródłowy. Ustalamy nazwę pliku i zapisujemy.
  • Importujemy ten podszablon: Wstaw -> Podszablon -> Dodaj z pliku. Wybieramy zapisany wcześniej podszablon
Postępując w ten sposób zmiany wprowadzane na jednym z szablonów nie będą miały wpływu na drugi.

Jak usunąć oraz edytować grupowanie

W celu usunięcia grupowania danych należy usunąć sekcję Nagłówek grupy oraz Stopka grupy. Żeby usunąć sekcję należy kliknąć na wybraną sekcję, kliknąć ikonkę Ołówka a następnie wybrać opcję Usuń sekcję. Aby edytować grupowanie w celu zmiany pola grupowania należy kliknąć sekcję Nagłówek grupy, kliknąć ikonę Ołówka a następnie wybrać opcję Edytuj grupowanie według. Pojawi się okienko w którym możemy wybrać pole po którym chcemy grupować. Na końcu należy zatwierdzić wybór za pomocą przycisku Zapisz.

Brak widocznego pola na wydruku pod obrazem

Pole z bazy przeciągnięte bezpośrednio na obrazek powoduje zbindowanie wartości tego pola do obrazka, po przejściu na podgląd zawartość pola jest konwertowana do obrazka, jako że nie jest to oczywiście obrazek zapisany w postaci tekstowej to wynikiem jest pusty (biały) kontener w miejscu gdzie powinien być obrazek. Gdy to samo pole przeciągniemy na puste pole doda się on do nowej kontrolki tekstowej (gdzie tekst z przykładu może być normalnie wyświetlony), gdy wtedy przeciągniemy na siebie kontrolki powoduje to ich nałożenie się a nie jak w przypadku bezpośredniego przeciągnięcia zbindowanie stąd inny wynik obu działań.

Nowa linia w kodach QR

Jeśli w treści kodu QR powinna zostać zakodowany tekst, którego poszczególne fragmenty powinny rozpoczynać się od nowej linii należy: Wybrać opcję wstawienia Kodu QR z narzędziownika lub z poziomu Menu>>>Wstaw>>>Kod>>>QR W oknie Wstaw kod QR należy wybrać opcję Wybierz wartość z bazy danych i nacisnąć opcję Dodaj wartość. W oknie Utwórz formułę dla wartości kodu należy wprowadzić tekst zgodnie z własnymi preferencjami, do nowej linii można przejść poprzez naciśnięcie przycisku ENTER. Należy pamiętać, aby tekst został umieszczony między znakami '' ( 'TEKST' ).   Po naciśnięciu Zapisz pojawia się okno Wstaw kod QR, gdzie należy nacisnąć Wstaw. Następnie kod zostaje wstawiony na obszar roboczy. Po opcjonalnym ukryciu wartości kodu na wydruku można przejść do trybu Podglądu, by sprawdzić jak będą prezentować się naniesione zmiany. Dodany kod można już zeskanować przy użyciu skanera kodów QR, należy jednak mieć na uwadze, że niektóre skanery czy aplikacje skanujące nie radzą sobie najlepiej z tak długimi treściami, przez co zeskanowany tekst może zostać "ucięty". Ponadto znaki polskie mogą nie być prawidłowo odkodowywane. Kluczowy jest tutaj wybór odpowiedniego rozwiązania skanującego.

Zeskanuj i Zapłać w kodach QR

Aplikacja Comarch sPrint pozwala na zaszycie danych płatności online w kodach QR. Jeśli w bazie danych znajduje się pole, które ma zakodowane odpowiednie informacje dotyczące płatności wystarczy przy wstawianiu kodu skorzystać z opcji Wybierz wartość z bazy danych, a następnie przeciągnąć do formuły wartości kodu to pole i zatwierdzić zmiany. Istnieje także możliwość stworzenia składni, którą można wstawić jako wartość tekstową do treści kodu stosując się do rekomendacji Związku Banków Polskich dotyczącej kodu dwuwymiarowego („2D”), umożliwiającego realizację polecenia przelewu oraz aktywację usług bankowych na rynku polskim . Zgodnie z wspomnianą rekomendacją, dla poniższych wytycznych: Pozycje obowiązkowe:
  • Odbiorca - Comarch S.A.
  • NR rachunku - 20 1240 6292 1978 0010 6070 1553
  • Kwota - 20,30 zł
  • Tytuł - FV/2023/253
Pozycje opcjonalne:
  • NIP - 6770065406
  • Identyfikator - 111
Poszczególne elementy składni oddziela znak | Należy stworzyć następującą składnie: 6770065406||20124062921978001060701553|002030|Comarch S.A.|FV/2023/253|111|| Po zaznaczeniu opcji Wartość tekstowa w oknie Wstaw kod QR należy wpisać lub skopiować stworzoną składnie i zatwierdzić naciskając Wstaw. W trybie Podglądu można podejrzeć stworzony kod i zeskanować przy użyciu aplikacji bankowej.

Ukrywanie wartości w tabeli

Istnieje możliwość ustawienia widoczności warunkowej poprzez wstawienie funkcji warunkowej w komórce tabeli, dzięki której możliwe jest ukrycie wartości danej komórki. Jeśli chcesz ukryć wartość pola aby linie obramowania w komórce pozostały widoczne możesz skorzystać z formuły w edycji komórki tabeli. Np. Iif([bramki]>10,'',[bramki])

Pokazuj stopkę u dołu strony

Jak korzystać z opcji Pokazuj u dołu strony? Opcję 'Pokazuj na dole strony' da się ustawić tylko na sekcji głównej, jest dostępna dla Stopki szablonu i Stopki grupy. Są wydruki, gdzie mamy kilka stopek szablonu i chcemy, aby tylko jedna z nich była wyświetlana na samym dole strony. Rozwiązaniem jest wstawienie podszablonu do stopki szablonu na wydruku głównym oraz zaznaczenie opcji Pokazuj na dole strony. Pozostałe sekcje w takim podszablonie możemy wtedy ukryć i uzupełnić treść Stopki szablonu. Aby opcja zadziała poprawnie:
  1. Podszablony muszą być „sklejone” ze sobą.
  2. W stopce szablonu na wydruku głównym inne kontrolki nie mogą być „przyklejone” do podszablonu
Niepoprawne ustawienie kontrolek: Poprawne ustawienie kontrolek:

Jak obliczyć sumę narastająco?

Aby wyliczyć sumę narastająco należy skorzystać z funkcji sumRunningSum(), która jest dostępna w ramach kategorii sum podsumowujących.

Jak wyliczyć sumę dla wartości odrębnych (distinct values)?

Aby wyliczyć sumę dla odrębnych wartości należy skorzystać z funkcji sumDsum(), która jest dostępna w ramach kategorii sum podsumowujących. Szczegółowy opis: Po zaznaczeniu kontrolki należy skorzystać z dostępnej opcji kontekstowej Utwórz formułę dla wartości. Aby funkcje podsumowujące były widoczne dla użytkownika należy wybrać zakres danych z listy wybieralnej w lewym górnym rogu okna dialogowego służącego do tworzenia formuł dla wartości. Użytkownik ma do wyboru 2 opcje: Wszystkie dane oraz Dane użyte w grupowaniu.  Po wybraniu zakresu danych można już wyszukać i skorzystać z funkcji sumDsum, składnie funkcji należy uzupełnić odpowiednim wyrażeniem. Dostępne są także inne funkcję pozwalające dokonywać wyliczeń z użyciem wartości odrębnych, są to:
  • sumDAvg() - Oblicza średnią wszystkich odrębnych wartości w określonym obszarze podsumowania (grupa lub raport).
  • sumDCount() - Zlicza liczbę odrębnych wartości w określonym obszarze podsumowania (grupa lub raport). W prostym scenariuszu nie można przekazać parametru.
  • sumDVar() - Oblicza wielkość wariancji dla wszystkich odrębnych wartości w określonym obszarze podsumowania (grupa lub raport).
  • sumDVarP() - Oblicza wariancję populacji wszystkich odrębnych wartości w określonym regionie podsumowania (grupa lub raport).
  • sumDStdDev() - Oblicza odchylenie standardowe wszystkich odrębnych wartości w określonym obszarze podsumowania (grupa lub raport).
  • sumDStdDevP() - Oblicza odchylenie standardowe populacji wszystkich odrębnych wartości w określonym regionie podsumowania (grupa lub raport).

Miary wyliczane

Udostępnianie zmiennych pomiędzy podszablonami

Aby udostępnić wartość zmiennej z podszablonu A na podszablon B należy udostępnić ją z podszablonu A na szablon główny, a następnie za pomocą parametru przekazać do podszablonu B. (ta funkcjonalność zastępuje zmienne shared w Crystal Reports) Wykorzystamy standardowy szablon faktury aby przedstawić działanie tej funkcjonalności. Udostępnimy wartość zmiennej wyliczanej z podszablonu FA_Szczegóły na podszablon TabelaVat Przechodzimy do podszablonu FA_Szczegóły i tworzymy miarę wyliczaną SumaAkcyza. Koniecznie zaznaczamy check Udostępnij miarę aby móc udostępnić miarę na szablon główny.
sum([WartoscAkcyzy])
Przechodzimy do szablonu głównego, na lewym panelu w sekcji Udostępnione miary wyliczane dodajemy miarę z podszablonu. Przechodzimy teraz do podszablonu TabelaVat gdzie dodamy parametr za pomocą, którego będziemy przekazywać wartość utworzonej miary. Przechodzimy ponownie na szablon główny gdzie zbindujemy parametr podszablonu z udostępnioną miarą wyliczaną.
Uwaga
Bindowanie jest możliwe wyłącznie wtedy, gdy parametr podszablonu jest tego samego typu danych (np. int, double itp.) co bindowane pole.

Miary wyliczane a białe znaki

Przy tworzeniu miar wyliczanych, zwłaszcza kiedy używamy funkcji porównujących,  warto zwrócić uwagę czy wartości zwracane przez pola z bazy mogą mieć białe znaki, np. „Brutto” nie jest równe „Brutto „

Numeracja pozycji

Do numerowania pozycji można wykorzystać funkcję CurrentVisibleRowIndex().

Miary wyliczane a warunki

Przy tworzeniu warunków w mierze wyliczanej może zdarzyć się sytuacja, że dana kolumna mająca np. typ int czyli liczby całkowitej nie będzie odczytywana jako liczba całkowita. W takim przypadku należy przekonwertować taką wartość na typ liczbowy. Formuła miary bez zastosowanego konwertowania: Formuła miary z zastosowanym konwertowaniem: Podgląd na wydruku:

Suma agregująca po danym elemencie

Składnia [].Sum() nie umożliwia osiągnięcia sumy agregującej. W celu uzyskania sumy należy wykorzystać składnię:
[][[kolumna_po_której_grupujemy]==[^.kolumna_po_której_grupujemy]].Sum([pole_do_podsumowania])

Jak poprawnie umieścić miarę wyliczaną na szablonie?

Jeśli miara wyliczana nie jest udostępniona z podszablonu, może być umieszczona w dowolnym miejscu na szablonie, ponieważ będzie pobierała wartości bezpośrednio z szablonu głównego. Udostępniana miara wyliczana z podszablonu musi znajdować się poniżej kontrolki tego podszablonu, z którego jest udostępniana. W przeciwnym razie będzie ona zwracała pustą lub niepoprawną wartość, ponieważ zawiera dane w kontekście, który jeszcze nie został jeszcze wczytany. Szablony w aplikacji sPrint są docelowo wydrukami zatem zaczytują się po kolei od góry do dołu. Co więcej wartość udostępnionej miary wyliczanej jest wyliczana tylko raz. Oznacza to, że jeśli udostępniona z podszablonu miara wyliczana zostanie umieszczona jednocześnie powyżej i poniżej tego podszablonu wartość miary będzie pusta lub niepoprawna, przypisywana jest wartość pierwsza od góry i tylko raz. W każdym przypadku należy pamiętać, że udostępniona miara musi znajdować się poniżej szablonu, z którego jest udostępniana.

Czy miarę wyliczaną dodaną na szablonie trzeba dodać również w zapytaniu?

Do utworzenia miary wyliczanej nie ma potrzeby zmiany zapytania SQL. Miary wyliczane dodajemy z poziomu Edytora z lewego panelu lub w zapytaniu SQL.

Miara składająca się ze złączenia tekstu oraz wartości z pól

Za pomocą miary wyliczanej możemy łączyć ciągi znaków z wartościami z pól pobranych przez zapytanie szablonu. Żeby to zrobić należy wykonać poniższe kroki. Dodać miarę wyliczaną za pomocą plusa w zakładce połączenie w lewym panelu. W oknie edycji miary wyliczanej należy uzupełnić jej nazwę oraz składnie. Należy pamiętać aby tekst wpisywać w pojedynczym cudzysłowie np. 'tekst', a każde elementy łączyć za pomocą plusa między nimi. Dla podanego wyżej przykładu składnia wyglądałaby następująco:
'Zamówienie nr' + [ZaN_DokumentObcy] + 'dla klienta' + [Knt_Nazwa1] + 'musi być dostarczone w terminie do' + [DataRealizacji]
Nowa miara wyliczana pojawi się na samym dole, w rozwijanej liście dostępnych danych.