Masowe przekazywanie dokumentów z listy w nowej aplikacji web
W wersji 2025.0.0 umożliwiono przekazywanie wielu dokumentów z poziomu listy dokumentów do etapu domyślnego w nowej aplikacji web Comarch DMS.
Aby możliwe było przekazanie wielu dokumentów z poziomu listy dokumentów do etapu domyślnego należy wykonać kolejno następujące czynności:
W aplikacji desktop na zakładce [Definicje obiegów dokumentów] na definicji wybranego obiegu przejść do zakładki „Schemat obiegu” i kliknąć na etap, z którego ma następować przekazywanie dokumentów
W ramach sekcji „Przekazanie” rozwinąć sekcję „Przekazanie z listy”
W ramach pola „Etap domyślny” wybrać etap, do którego ma nastąpić przekazanie z listy
Przykładowe ustawienie funkcjonalności przekazywania dokumentów z listy dla typu obiegu „Projekt”
W ramach nowej aplikacji web kliknąć w przycisk [Więcej filtrów], następnie zaznaczyć parametr [Do przekazania z listy], a później nacisnąć przycisk [Pokaż wyniki]
Ustawianie filtra do przekazywania dokumentów z listy w nowej aplikacji web
Na liście dokumentów zaznaczyć checkboxy obok jednego lub więcej dokumentów, które mają zostać przekazane do etapu domyślnego – wówczas nad lista dokumentów zostanie wyświetlona belka z informacjami o ilości zaznaczonych dokumentów spośród dokumentów dostępnych na danej stronie listy oraz z linkami „Odznacz wszystko”, „Zaznacz wszystko” i „Przekaż”;
Uwaga
Operator może jednorazowo zaznaczyć i przekazać z listy tylko dokumenty znajdujące się na danej stronie listy, np. jeśli na danej stronie wyświetlane jest maksymalnie 25 dokumentów, wówczas można za jednym razem przekazać co najwyżej 25 dokumentów, wszystkie znajdujące się na tej samej stronie listy.
Jeżeli operator zaznaczy dokumenty na jednej stronie listy, a później przejdzie na kolejna stronę listy, wtedy dokumenty ze strony poprzedniej zostaną odznaczone.
Wybór dokumentów do przekazania z poziomu listy dokumentów w nowej aplikacji web
Na belce nad listą dokumentów kliknąć w link [Przekaż] – wówczas zostanie wyświetlone okno „Trwa przekazywanie dokumentów…”, w którym widoczna jest informacja dotycząca postępu operacji przekazywania dokumentów;
Okno „Trwa przekazywanie dokumentów…”
Jeśli operacja ma zostać wstrzymana, należy kliknąć w przycisk [Zatrzymaj]. Wówczas przekazywanie dokumentów zostanie wstrzymane i zostanie wyświetlone okno „Chcesz przerwać przekazywanie?”. W ramach okna „Chcesz przerwać przekazywanie?” widoczna jest informacja o postępie operacji przekazywania dokumentów aż do wstrzymania operacji, dostępne są też dwa przyciski:
[Kontynuuj] – jeśli operator kliknie w ten przycisk, nastąpi powrót do okna „Trwa przekazywanie dokumentów…”
[Przerwij] – jeżeli operator naciśnie ten przycisk, wówczas przekazywanie dokumentów zostanie zatrzymane, zamknie się okno „Chcesz przerwać przekazywanie?” i zostanie wyświetlone okno „Nie przekazano … dokumentów!/Nie przekazano 1 dokumentu!”.
Okno „Chcesz przerwać przekazywanie?”
W ramach okna „Nie przekazano … dokumentów!/Nie przekazano 1 dokumentu!” widoczne są następujące informacje:
Liczba dokumentów, które nie zostały przekazane do etapu domyślnego
Lista numerów dokumentów, które nie zostały przekazane do etapu domyślnego
Powód nieprzekazania dokumentu do etapu domyślnego
Jeśli nieprzekazanych dokumentów jest więcej niż trzy, wówczas po prawej stronie listy dostępny jest pasek przewijania.
Aby zamknąć okno, należy kliknąć w link [Zamknij].
Okno „Nie przekazano … dokumentów”
Okno „Nie przekazano … dokumentów” z suwakiem
Jeżeli przekazywanie wielu dokumentów z listy zakończyło się sukcesem, wówczas w dolnym prawym rogu strony zostanie wyświetlony komunikat „Przekazano dokumenty. Wszystkie wybrane dokumenty zostały przekazane.”
Okno nowej aplikacji web po przekazaniu dokumentów z listy
Od wersji 2026.0.0 w przypadku, gdy zostały spełnione obydwa poniższe kryteria:
Dla danego typu obiegu zdefiniowano warunki, których spełnienie jest konieczne do przekazania dokumentu do danego etapu
Dla danego typu obiegu dla danego etapu zaznaczono możliwość przekazania dokumentu z poziomu listy
wówczas jeśli określone warunki przekazania nie zostały spełnione, a w aplikacji web operator podejmuje próbę przekazania dokumentu z listy, wyświetlony zostaje następujący komunikat: Nie przekazano dokumentu.Nie można przekazać dokumentu do następnego etapu, ponieważ nie zostały spełnione warunki przekazania. Wprowadź zmiany i spróbuj ponownie.
Nowy komunikat wyświetlany przy próbie przekazania dokumentu z listy, gdy nie spełniono warunków przekazania do kolejnego etapu
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Dlaczego pola odczytane w punkcie 'ACD – Import dokumentów zakupu z KSeF’ są wyszarzone i nieaktywne do zmiany?
Pola są nieaktywne, ponieważ użytkownik nie posiada uprawnień do edycji, a jedynie prawo do podglądu danych.
Aby móc zmienić wartość, którą system odczytał z dokumentu, należy w konfiguracji punktu, w zakładce Uprawnienia, zaznaczyć parametr „Edycja dokumentu” dla danego pracownika.
Punkt konfiguracyjny ACD – Import dokumentów zakupu z KSeF
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Jeśli wyszukiwanie nie reaguje, skorzystaj z funkcji „Znajdź na stronie” w menu Twojej przeglądarki.
Wdrożenie KSeF 2.0
Pytanie: Kiedy będzie można przetestować nową wersję 2.0?
Odpowiedź: Od 28 stycznia 2026 r. została udostępniona możliwość weryfikacji usług KSeF 2.0 na środowisku produkcyjnym.
Pytanie: Od kiedy KSeF 2.0 staje się obowiązkowy?
Odpowiedź: Oficjalne udostępnienie KSeF 2.0 nastąpiło 1 lutego 2026 r. Od tego dnia:
KSeF 2.0 stał się jedynym dostępnym i obligatoryjnym systemem.
Wersja KSeF 1.0 (wraz z MCU) została całkowicie wyłączona.
Pytanie: Od której wersji Comarch BPM wspierany jest KSeF 2.0?
Odpowiedź: Wsparcie dla komunikacji ze środowiskiem KSeF 2.0 (w tym obsługi struktury FA(3)) w wersji produkcyjnej oraz przedprodukcyjnej (Demo) zapewnia wersja Comarch BPM 2026.0.0.
Chociaż wstępna obsługa KSeF 2.0 pojawiła się w wersji Comarch BPM 2025.2.3, aktualizacja do wersji Comarch BPM 2026.0.0 jest obecnie niezbędnaz dwóch kluczowych powodów:
1.Wyłączenie starych linków (17.01.2026): Ministerstwo Finansów z dniem 17 stycznia 2026 r. całkowicie wyłączyło dotychczasowe adresy API. Starsza wersja Comarch BPM 2025.2.3 korzysta z nieaktywnych już odnośników, co powoduje błędy połączenia w środowisku Demo. Wersja 2026.0.0 posiada zaktualizowane adresy bazowe.
2.Nowy parametr konfiguracji: W wersji Comarch BPM 2026.0.0 dodano możliwość zastosowania klucza KSeFProdVersion, który jest niezbędny do poprawnej identyfikacji i obsługi protokołów API 2.0. Sposób łączenia się z KSeF definiują następujące wpisy w pliku Web.config:
Środowisko Demo: Parametr KSeFWorkMode należy ustawić na wartość Demo.
Środowisko Produkcyjne (obowiązuje od 1 lutego 2026 r.): Praca na produkcyjnym API 2.0 obowiązuje od 1 lutego 2026 r.Aby ją aktywować, należy w pliku Web.config aplikacji serwerowej ustawić parametry:
<add key=”KSeFWorkMode” value=”Production” />
<add key=”KSeFProdVersion” value=”2” /> – zmiana wartości na „2” informuje system, że od 1 lutego ma korzystać z nowej wersji interfejsu produkcyjnego.
Ważne
Wersja 2026.0.0 jest obecnie jedyną wersją gwarantującą stabilną współpracę z aktualnymi wytycznymi Ministerstwa Finansów i nowymi adresami bazowymi bramki KSeF.
Pytanie: Dokumenty zaimportowane z KSeF (Punkt ACD – Import dokumentów zakupu z KSeF) są widoczne tylko dla osoby, która pobrała dokumenty z KSeF. Dlaczego inni uprawnieni do tego punktu użytkownicy ich nie widzą?
Odpowiedź:
Standardowo za takie zachowanie odpowiada filtr w zapytaniu SQL, znajdujący się na zakładce Lista w konfiguracji punktu ACD. Warunek ten ogranicza widoczność dokumentów wyłącznie do osoby, która je zaimportowała (bieżącego operatora).
Przyczyną jest domyślny warunek w zapytaniu SQL na zakładce Lista w konfiguracji punktu ACD. System filtruje rekordy tak, aby dany operator widział tylko te dokumenty, do których jest przypisany jego identyfikator (czyli te, które sam pobrał).
Sposob rozwiązania:
Aby dokumenty były widoczne dla wszystkich uprawnionych osób, należy usunąć lub zakomentować poniższy fragment kodu w zapytaniu:
Pytanie: Dlaczego pola odczytane w punkcie 'ACD – Import dokumentów zakupu z KSeF’ są wyszarzone i nieaktywne do zmiany?
Odpowiedź:
Pola są nieaktywne, ponieważ użytkownik nie posiada uprawnień do edycji, a jedynie prawo do podglądu danych.
Aby móc zmienić wartość, którą system odczytał z dokumentu, należy w konfiguracji punktu, w zakładce Uprawnienia, zaznaczyć parametr „Edycja dokumentu” dla danego pracownika.
Punkt konfiguracyjny ACD – Import dokumentów zakupu z KSeF
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat:
Wystąpił błąd: KSeF InitSession – Strona KSeF chwilowo niedostępna. Sprawdź komunikaty na stronach https://www.gov.pl/web/kas/komunikaty ?
Odpowiedź:
1.Konfiguracja parametrów połączenia
W pliku konfiguracyjnym aplikacji serwerowej (Web.config) należy zweryfikować i ustawić poniższe klucze, aby wymusić komunikację z aktualną wersją systemu:
<add key=”KSeFWorkMode” value=„Production” />
<add key=”KSeFProdVersion” value=„2” />
Po zmianach w pliku Web.config konieczny jest restart puli aplikacji w menedżerze IIS, aby nowe ustawienia zostały wczytane.
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat:
Wystąpił błąd: KSeF2 AuthorizationWithKsefTokenAsync – Authorization failed: AuthenticationWithKsefToken: Nieautoryzowany dostęp. Twój token dostępu może być nieprawidłowy lub wygasł.
Odpowiedź: Komunikat AuthenticationWithKsefToken: Nieautoryzowany dostęp oznacza odrzucenie żądania przez serwer produkcyjny Ministerstwa Finansów. Przyczyną jest brak możliwości poprawnej weryfikacji uprawnień na podstawie dostarczonego tokena, co najczęściej wynika z wejścia w życie nowej wersji interfejsu (v2) od 1 lutego.
Sposób rozwiązania:
1.Konfiguracja parametrów połączenia
W pliku konfiguracyjnym aplikacji serwerowej (Web.config) należy zweryfikować i ustawić poniższe klucze, aby wymusić komunikację z aktualną wersją systemu:
<add key=”KSeFWorkMode” value=„Production” />
<add key=”KSeFProdVersion” value=„2” />
Po zmianach w pliku Web.config zalecany jest restart puli aplikacji w menedżerze IIS, aby nowe ustawienia zostały wczytane.
2.Usunięcie nieaktualnych danych autoryzacyjnych
Przed wprowadzeniem nowych danych zaleca się wyczyszczenie starego tokena z bazy danych, aby uniknąć konfliktów. W tabeli do.DF_ConfCMDictionary, w polu CMD_KSeFToken, należy ustawić wartość NULL.
3.Generowanie nowego tokenu dostępowego:
Zalogowanie się bezpośrednio do Aplikacji Podatnika KSeF przy użyciu Profilu Zaufanego lub podpisu kwalifikowanego.
Wygenerowanie nowego tokena autoryzacyjnego.
Podczas generowania tokena, zaznaczenie kluczowych ról dostępowych:
Wystawianie faktur – niezbędne do wysyłki dokumentów.
Dostęp do faktur – odpowiada za pobieranie i odczyt danych.
Zarządzanie uprawnieniami – opcjonalnie, dla celów administracyjnych.
Wprowadzenie (wklejenie) nowego tokena w Comarch BPM.
WAŻNE
Po wprowadzonych zmianach należy uruchomić jednorazowo aplikację Comarch BPM z uprawnieniami Administratora.
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat:
Wystąpił błąd: KSeF2 GetInvoicesAsync – Get invoices error: QueryInvoiceMetadataAsync: Dostęp zabroniony. Możesz nie mieć uprawnień do wykonania tej operacji.
Odpowiedź: Komunikat błędu podczas operacji GetInvoicesAsync(pobieranie faktur) wskazuje na to, że sesja z serwerem KSeF została nawiązana, ale system Ministerstwa Finansów odrzucił żądanie z powodu niewystarczających uprawnień przypisanych do używanego tokena.
Sposob rozwiązania:
1.Weryfikacja ról tokena
Najczęstszą przyczyną błędu jest brak nadania uprawnień do odczytu danych przy generowaniu tokena:
Należy zalogować się do Portalu Podatnika KSeF.
W sekcji zarządzania tokenami należy sprawdzić, czy aktywny token ma zaznaczone role umożliwiającepobieranie/odczyt faktur.
Samo uprawnienie do „wystawiania faktur” nie pozwala na ich pobieranie.
2. Sprawdzenie zgodności numeru NIP:
Konieczna jest weryfikacja, czy NIP podany w konfiguracji systemu Comarch BPM jest identyczny z NIP-em podmiotu w Portalu Podatnika.
Niezgodność numeru NIP skutkuje natychmiastowym zablokowaniem operacji przez bramkę MF.
3.Wygenerowanie nowego tokena
Jeśli uprawnienia wydają się poprawne, a błąd nadal występuje, zaleca się:
Unieważnienie obecnego klucza w Portalu Podatnika.
Wygenerowanienowego tokena autoryzacyjnego.
Podczas generowania tokena, zaznaczenie kluczowych ról dostępowych:
Wystawianie faktur – niezbędne do wysyłki dokumentów.
Dostęp do faktur – odpowiada za pobieranie i odczyt danych.
Zarządzanie uprawnieniami – opcjonalnie, dla celów administracyjnych.
Wprowadzenie (wklejenie) nowego tokena wComarch BPM.
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat:
Wystąpił błąd: KSeF2 GetInvoicesAsync – Błąd pobierania faktur: QueryInvoiceMetadataAsync nie powiodło się: Zbyt wiele żądań. Proszę poczekać przed wysłaniem kolejnych żądań. (lub: Wystąpił błąd: KSeF2 GetInvoicesAsync – Get invoices error: QueryInvoiceMetadataAsync failed: Too many requests. Please wait before sending more requests.)
Odpowiedź: Pojawienie się tego komunikatu oznacza, że został osiągnięty tymczasowy limit zapytań kierowanych do serwerów Ministerstwa Finansów. Nie jest to błąd merytoryczny w dokumentach ani problem z uprawnieniami użytkownika, lecz techniczne ograniczenie przepustowości (tzw. rate limiting)
Zalecane działania:
1. Odczekać kilka minut: Należy wstrzymać się z kolejnymi próbami pobierania dokumentów (zazwyczaj od 5 do 15 minut), aby licznik zapytań po stronie serwera KSeF uległ zresetowaniu.
2. Ponowić próbę: Po upływie czasu oczekiwania operacja powinna zostać przetworzona poprawnie.
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat:
KSeF2 AuthorizationWithKsefTokenAsync – Authorization failed: Błąd połączenia sieciowego z https://api.ksef.mf.gov.pl/v2/auth/challenge: An error occurred while sending the request.
Odpowiedź: Błąd ten informuje o braku możliwości nawiązania stabilnego połączenia między programem, a serwerem Ministerstwa Finansów (api.ksef.mf.gov.pl). Problem występuje na etapie wysyłania żądania, co uniemożliwia weryfikację uprawnień.
Najczęstsze przyczyny:
Przerwa techniczna serwerów MF: Serwer KSeF może być chwilowo przeciążony, niedostępny lub trwają na nim prace serwisowe.
Blokada przez Firewall lub Antywirus: Lokalne zabezpieczenia sieciowe mogą blokować ruch wychodzący do domeny mf.gov.pl.
Brak dostępu do Internetu: Chwilowa niestabilność łącza internetowego po stronie użytkownika.
Problemy z protokołem TLS: System operacyjny może nie obsługiwać wymaganej wersji protokołu zabezpieczeń (np. wymagany jest TLS 1.2 lub wyższy) niezbędnej do połączenia z bramką rządową.
Sposób naprawy:
1. Weryfikacja statusu KSeF: Należy sprawdzić oficjalne komunikaty Ministerstwa Finansówdotyczące dostępności systemu e-Faktur.
2. Konfiguracja zabezpieczeń: Należy upewnić się, że program posiada uprawnienia do łączenia się z siecią w ustawieniach zapory systemowej (Firewall).
3.Ponowienie próby: W przypadku przeciążenia serwerów ministerialnych, zaleca się odczekanie kilku minut i ponowną próbę wysyłki.
Pytanie: Dlaczego podczas próby wygenerowania tokena z poziomu Comarch BPM pojawia się komunikat:
Error: KSeF2 AuthorizationAsync – Authorization failed: Brak dostępnych certyfikatów z kluczem prywatnym,w DocumentWorkflow.Desktop.KSeF.KSeFClient2.<AuthorizationAsync>d_5.MoveNext()— Koniec śladu stosu z poprzedniej lokalizacji, w której wystąpił wyjątek
Odpowiedź:Komunikat ten oznacza, że aplikacja nie może uzyskać dostępu do certyfikatu kwalifikowanego niezbędnego do autoryzacji w systemie KSeF. Problem wynika zazwyczaj z braku połączenia z fizycznym czytnikiem kart, braku sterowników lub braku rejestracji certyfikatu w magazynie systemu Windows.
Sposób rozwiązania:
W celu uniknięcia problemów z lokalną konfiguracją podpisu cyfrowego, najskuteczniejszą metodą jest wygenerowanie tokena bezpośrednio przez stronę rządową.
W celu uzyskania aktualnego klucza autoryzacyjnego należy:
1. Zalogować się do Portalu Podatnika KSeF (wersja produkcyjna) przy użyciu Profilu Zaufanego lub podpisu kwalifikowanego.
2. W sekcji zarządzania tokenami wygenerować nowy klucz.
3.Nadać tokenowipełne uprawnienia (wystawianie oraz przeglądanie faktur).
4.Aktualizacja w systemie Comarch BPM – nowowygenerowany token należy wprowadzić do systemu w odpowiednim polu konfiguracyjnym modułu Comarch BPM.
Pytanie: Jaki port należy odblokować w zaporze sieciowej (Firewall), aby komunikacja z KSeF przebiegała pomyślnie?
Odpowiedź: System KSeF wymaga otwartego portu443 (HTTPS) dla ruchu wychodzącego. Jest to standardowy port używany do bezpiecznego przeglądania stron internetowych i przesyłania danych zaszyfrowanych.
Pytanie: Dlaczego w wersji Comarch BPM 2025.2.3 podczas pobierania dokumentów z z KSeF poprzez punkt ACD Import dokumentów z KSeF pojawia się komunikat:
Odpowiedź: Opisany problem wynika z technicznej aktualizacji adresów środowisk KSeF przeprowadzonej przez Ministerstwo Finansów. Zgodnie z oficjalnym harmonogramem resortu, w celu wdrożenia docelowej infrastruktury KSeF 2.0, z dniem 17 stycznia 2026 r. dotychczasowe adresy usług zostały całkowicie wyłączone (wyłączono przekierowania ze starych adresów).
W związku z powyższym, wersja 2025.2.3 Comarch BPM przestała wspierać komunikację z serwerami KSeF. Aby przywrócić pełną funkcjonalność i zapewnić ciągłość pracy, należy zaktualizować aplikację do wersji 2026.0.0 Comarch BPM.
Nowa wersja wspiera ujednoliconą adresację dla wszystkich środowisk:
środowisko przedprodukcyjne (Demo) – działające na nowych adresach (api-demo.ksef.mf.gov.pl),
środowisko produkcyjne (API KSeF 2.0) – które od 1 lutego 2026 r. będzie dostępne wyłącznie z wykorzystaniem nowej adresacji (api.ksef.mf.gov.pl).
Ważne
Wersja 2026.0.0 jest obecnie jedynym wydaniem systemu Comarch BPM, które posiada zaktualizowane ścieżki dostępu do serwerów Ministerstwa Finansów i zapewnia poprawną obsługę środowiska produkcyjnego po zmianach wchodzących w życie z początkiem lutego.
Pytanie: Dlaczego nie zapisują się dane do integracji z KSeF przy ustawionym trybie współpracy Demo?
Po wprowadzeniu numeru NIP i tokenu i kliknięciu Zapisz dane znikają.
Odpowiedź: Wraz z przejściem Ministerstwa Finansów na API 2.0 dla KSeF tryb Demo zmienił się format i długość tokenów autoryzacyjnych. Jeśli w systemie zapisany jest jeszcze stary (krótszy) token, baza danych Comarch BPM może blokować wpisanie nowego, dłuższego ciągu znaków, co powoduje błędy walidacji i uniemożliwia zapisanie zmian. Aby skutecznie wprowadzić nowy token, należy wykonać następujące kroki:
1.W tabeli do.DF_ConfCMDictionary, w polu CMD_KSeFToken należy wstawić wartość NULL
2.Uzupełnienie danych: Z poziomu Comarch BPM nalezy wejść w ustawienia integracji z KSeF.
3.Wstawić nowy token i zapisać wprowadzone zmiany.
Pytanie: Kiedy będzie możliwe skonfigurowanie BPM na odbiór faktur z wykorzystaniem certyfikatu, a nie tokenu?
Odpowiedź: Obsługa autoryzacji za pomocą certyfikatu została zaplanowana w wersji Comarch BPM 2026.0.1. Do tego czasu należy korzystać z tokenów generowanych w Aplikacji Podatnika KSeF.
Pytanie: Czy na dokumentach w Comarch ERP XL, które zostały wygenerowane przez Comarch BPM (po pobraniu z KSeF), parametr „Poza systemem” powinien być zaznaczony?
Odpowiedź: Tak. Jest to działanie prawidłowe. Zaznaczony checkbox „Poza systemem” jest informacją, że dany dokument nie został wystawiony bezpośrednio w ERP XL, lecz trafił do niego z zewnątrz (poprzez Comarch BPM).
Pytanie: Czy Comarch BPM w wersji 2026.0 obsługuje pieczęć elektroniczną do KseF?
Odpowiedź: Wsparcie dla wykorzystania kwalifikowanej pieczęci elektronicznej do uwierzytelniania w KSeF w wersji 2026.0 jest zapewnione. Generowanie tokenu KSeF odbywa się z poziomu aplikacji po uzupełnieniu NIP firmy oraz zainstalowaniu kwalifikowanej pieczęci elektronicznej. Tryb pracy KSeF (Demo/Production) konfigurowany jest w pliku Web.config za pomocą klucza KSeFWorkMode. Po wygenerowaniu token zostaje automatycznie zapisany w polu Token KSeF.
Pytanie: Czy można importować tylko wybrane faktury zakupu do Comarch BPM?
Odpowiedź: Możliwe jest dokonanie importu wg poniższych kryteriów:
Nowe – import dokonywany w tym trybie polega na pobraniu tych faktur, które zostały zarejestrowane od ostatniego importu tj. faktur z datą przyjęcia w KSeF równą i większą od daty dotąd pobranych faktur.
Za okres – importowane są faktury z datą przyjęcia w KSeF należącą do podanego przez Użytkownika okresu
Numer KSeF – importowana jest faktura o konkretnym, podanym przez Użytkownika numerze KSeF
Pytanie: Dlaczego podczas próby importu dokumentów z KSeF z poziomu Comarch BPM, którego folder z desktopem znajduje się w folderze z XL-em pojawia się komunikat o „Odmowie dostępu” do ścieżki …\DMS Desktop\Chrome\… lub nie można odnaleźć określonego pliku?
Odpowiedź: Przy pierwszej próbie pobrania faktur, system próbuje pobrać i wypakować niezbędne biblioteki przeglądarki (Chromium) do wskazanego w komunikacie folderu. Folder Program Files jest domyślnie chroniony przez Windows. Zwykły użytkownik nie ma uprawnień do zapisu (tworzenia folderów i rozpakowywania plików .exe/.dll) w tej lokalizacji. Jednorazowe uruchomienie pliku BPM.exe jako Administrator pozwala systemowi „doinstalować” brakujące komponenty do odpowiednich podfolderów. Gdy pliki już tam będą, zwykły użytkownik będzie mógł z nich korzystać (tylko do odczytu/uruchomienia), co rozwiąże problem.
Pytanie: Dlaczego podczas próby importu dokumentów z KSeF z poziomu Comarch BPM pojawia się komunikat:
KSeF2 GetInvoiceAsync – Error downloading invoice 6871728417-20260101-1100C0F60040-A5: GetInvoiceByKsefAsync failed: Too many requests. Please wait before sending more requests.
Odpowiedź: Komunikat ten pochodzi bezpośrednio z serwerów KSeF. Oznacza on, że w krótkim czasie wysłano zbyt dużą liczbę zapytań do bramki Ministerstwa Finansów. Należy odczekać od kilku do kilkunastu minut i spróbować ponownie. Problem ten często ustępuje samoistnie po ustaniu chwilowego przeciążenia serwerów rządowych.
Pytanie: Dlaczego nie zapisują się dane do integracji z KSeF ? Po wprowadzeniu numeru NIP i tokenu i kliknięciu Zapisz dane znikają.
Odpowiedź: Gdy Ministerstwo Finansów przeszło na API 2.0, zmienił się format i długość generowanych tokenów. Jeśli w bazie danych (tabela do.DF_ConfCMDictionary, pole CMD_KSeFToken) znajduje się stary token, system często „gubi się” podczas próby nadpisania go nowym, dłuższym ciągiem znaków lub występuje konflikt walidacji. Należy w polu CMD_KSeFToken wstawić wartość NULL, uzupełnić dane integracji z KSeF z poziomu Comarch BPM i zapisać wprowadzone zmiany.
Pytanie: Dlaczego podczas generowania dokumentu do Comarch ERPXL pojawia się komunikat:
„Błąd XL Api. W funkcji XLKSeFUstalStatusDokumentu wystąpił błąd nr -400:”
Odpowiedź:Użytkownik, który generuje dokument do XL-a musi mieć na swojej karcie operatora w XL-u na zakładce Uprawnienia->Parametry zaznaczony parametr:
Edycja numeru KSeF na dok./Spinanie z KSeF na zatw. dok.
Pytanie: Czy w Comarch BPM jest możliwy do obsłużenia poniższy scenariusz:
Wchodzę do XL/Optimy
Pobieram dokumenty z KSEF
Wchodzę do BPM – wybieram punkt ACD
Pobieram dane z tabel KSEF XL/Optima
Pobieram załącznik (wizualizację dokumentu KSeF)
Generuję dokument w BPM
Procesuję go – na odpowiednim etapie dodaję w ERP z informację o zatwierdzeniu dokumentu
Odpowiedź:Wszystkie punkty, oprócz punktu 5 są możliwe do obsłużenia w Comarch BPM. Na chwilę obecną nie jest możliwa wizualizacja dokumentów KSeF pobranych z ERP w punkcie ACD. Funkcjonalność jest zaplanowana do realizacji w kolejnych wersjach.
Pytanie: Czy dostępna jest dokumentacja pól KSeF z mapowaniem na BPM?
Odpowiedź: Schemat Mapowania Danych z Plików XML (struktura KSeF) do Konkretnych Tabel w Comarch BPM dostępna jest na stronach pomocowych pod linkiem:
Pytanie: Dlaczego podczas importu dokumentów z KSeF (Tryb współpracy- Import dokumentów z KSeF) pojawia się komunikat:
Wystąpił błąd. Nieprawidłowa długość tablicy lub ciągu znaków Base-64.
Odpowiedź:Gdy Ministerstwo Finansów przeszło na API 2.0, zmienił się format i długość generowanych tokenów. Jeśli w bazie danych (tabela do.DF_ConfCMDictionary, pole CMD_KSeFToken) znajduje się stary token, system często „gubi się” podczas próby nadpisania go nowym, dłuższym ciągiem znaków lub występuje konflikt walidacji. Należy w polu CMD_KSeFToken wstawić wartość NULL, uzupełnić dane integracji z KSeF z poziomu Comarch BPM i zapisać wprowadzone zmiany.
Pytanie: W pliku Web.config aplikacji serwerowej mam ustawiony tryb KSeFWorkMode na „Demo”. W jaki sposób mogę wygenerować token do komunikacji z KSeF?
Odpowiedź: Aby wygenerować token autoryzacyjny dla trybu Demo, należy skorzystać z oficjalnego portalu serwisowego Ministerstwa Finansów przeznaczonego dla środowiska testowego. Należy postąpić zgodnie z poniższymi krokami:
1.Logowanie: Należy wejść na stronę https://ap-demo.ksef.mf.gov.pl/web/ i zalogować się do aplikacji (np. przez Profil Zaufany, podpis kwalifikowany lub pieczęć elektroniczną).
2.Sekcja Tokenów: Po zalogowaniu, z menu bocznego należy wybrać zakładkę „Tokeny” (dostępną w sekcji „Zarządzanie” lub „Uprawnienia”).
3.Generowanie: Po kliknięciu przycisku „Generuj token”, należy nadać mu nazwę własną oraz wybrać odpowiedni zakres uprawnień (np. wystawianie i przeglądanie faktur).
4.Zapisanie danych: Po zatwierdzeniu system wyświetli unikalny ciąg znaków (token).
Ważne
Token należy skopiować i zapisać w bezpiecznym miejscu natychmiast, ponieważ po zamknięciu okna nie będzie możliwości jego ponownego odczytania.
5.Konfiguracja w Comarch BPM:
Aby skonfigurować współpracę Comarch BPM z KSeF przy użyciu wygenerowanego tokenu, należy wprowadzić go w systemie w następujący sposób:
Dla trybu jednospółkowego: Na zakładce Ustawienia -> zakładka Integracje.
Dla trybu wielospółkowego: Na zakładce Ustawienia -> zakładka Połączenia z ERP -> ustawienia odpowiedniej spółki.
W ramach powyższych ustawień należy uzupełnić dane:
1. W polu „Nip firmy” należy wprowadzić NIP firmy, dla której ma odbywać się współpraca z KSeF.
2. W polu „Token KSeF” należy wprowadzić wygenerowany wcześniej token uwierzytelniający.
Uwaga
Token wygenerowany w środowisku Demo nie będzie działał po zmianie trybu pracy aplikacji na „Production”. Tryb produkcyjny wymaga wygenerowania osobnego tokenu na innym portalu Ministerstwa Finansów.
Pytanie: W dniu 17.01.2026 zostały wyłączone stare adresy środowisk KSeF. W związku z tym proszę o informację co należy zmienić w najnowszej wersji BPM 2026.0.0 by móc korzystać z KSeF ?
Odpowiedź:W wersji Comarch BPM 2026.0.0 nowe adresy są już obsłużone. Użytkownik nie musi wprowadzać żadnych zmian.
Pytanie: Gdzie z poziomu Comarch BPM konfiguruje się współpracę z KSeF?
Odpowiedź:Konfiguracja połączenia z Krajowym Systemem e-Faktur (KSeF) odbywa się w panelu konfiguracyjnym, a jej lokalizacja zależy od trybu pracy systemu (jednospółkowy lub wielospółkowy).
Lokalizacja ustawień:
Wymagane dane do uzupełnienia:
W obu przypadkach, aby poprawnie skonfigurować współpracę, należy wypełnić poniższe pola:
1. NIP firmy – numer identyfikacji podatkowej podmiotu, dla którego będą procesowane e-Faktury.
2.Token KSeF – unikalny ciąg znaków (token autoryzacyjny) wygenerowany wcześniej w systemie KSeF (np. poprzez Aplikację Podatnika KSeF), który umożliwia bezpieczną komunikację między Comarch BPM a bramką rządową.
Pytanie: Dlaczego podczas próby pobrania dokumentów z KSeF pojawia się komunikat: Wystąpiły błędy w zapisie?
Nie udało się nawiązać połączenia z usługą sieciową. Serwer zdalny zwrócił błąd: (403) Zabronione
Odpowiedź:Komunikaty mogą oznaczać, że system KSeF odrzuca połączenie ze względu na niewystarczające uprawnienia nadane w portalu.
Należy zweryfikować ustawieniabezpośrednio w Aplikacji Podatnika KSeF (link: https://ksef.mf.gov.pl/):
1.Weryfikacja Tokena: Proszę sprawdzić, czy wygenerowany Token ma przypisaną rolę „Dostęp do faktur” oraz „Wystawianie faktur”.
Uwaga
Jeśli token był generowany tylko z uprawnieniem do wystawiania, nie pozwoli on nam na pobranie faktur zakupowych.
2.Generowanie nowego Tokena: Najszybszym rozwiązaniem jest zazwyczaj wygenerowanie nowego tokena w zakładce „Tokeny”, upewniając się, że zaznaczono wszystkie dostępne pola uprawnień (prawa do odczytu i zapisu). 3.Status uprawnień: Proszę upewnić się, że osoba/podmiot generujący token ma nadal aktywne uprawnienia do zarządzania tym NIP-em.
Pytanie: Czy token wygenerowany w Module Certyfikatów i Uprawnień (MCU) w grudniu 2025 r. będzie wystarczający do uruchomienia procesów KSeF w BPM w wersji 2026.0.0?
Odpowiedź:Tak, taki token będzie poprawny, jednak będzie można z niego korzystać dopiero po1 lutego 2026 r., po uprzednim przestawieniu trybu pracy systemu w pliku konfiguracyjnym.
Mimo możliwości wcześniejszego wygenerowania tokena w portalu MCU, należy pamiętać o następujących zasadach:
1.Zmiana trybu w pliku Web.config: Aby system BPM mógł zacząć korzystać z nowego tokena, niezbędne jestręczne przestawienie klucza KSeFProdVersion na wartość „2„.
2.Termin wdrożenia: Zmianę tę można przeprowadzić 1 lutego 2026 r. Dopiero po przestawieniu trybu na „2” system przełączy się na architekturę API 2.0, która jest natywnym środowiskiem dla tokenów generowanych w MCU.
3.Zależność techniczna: Należy mieć na uwadze, że nowy token z MCU nie będzie współpracował ze starym trybem API 1.0 (value=”1″). Z tego względu wprowadzenie tokena do systemu i zmiana wartości w pliku Web.config muszą zostać wykonane równocześnie.
Ważne
Token wygenerowany w grudniu 2025 r. jest właściwy dla nowej architektury produkcji, jednak jego aktywacja w systemie Comarch BPM będzie możliwa po 1 lutego, poprzez obowiązkową zmianę parametru KSeFProdVersion na wartość „2” w pliku konfiguracyjnym.
Pytanie: Dlaczego podczas automatycznego pobierania dokumentów do systemu BPM w trybie DEMO pojawia się komunikat:
Wystąpił błąd: KSeF2 AuthorizationWithKsefTokenAsync – Authorization failed: AuthenticationWithKsefToken: Nieautoryzowany dostęp. Twój token dostępu może być nieprawidłowy lub wygasł.
Odpowiedź:Błąd ten oznacza, że próba połączenia ze środowiskiem testowym KSeF została odrzucona przez serwery Ministerstwa Finansów. W trybie DEMO (testowym) sytuacja ta występuje najczęściej z powodu cyklicznych prac serwisowych, podczas których dane testowe są resetowane, co powoduje unieważnienie dotychczasowych tokenów.
Aby rozwiązać problem, należy podjąć następujące kroki
1.Generowanie nowego tokenu DEMO: Należy zalogować się do Portalu Podatnika w wersji testowej (KSeF Demo), unieważnić poprzedni klucz i wygenerować nowy, przypisując mu pełne uprawnienia do zapytania o faktury i ich pobierania.
2.Aktualizacja parametrów połączenia w BPM: Nowy token należy wprowadzić w konfiguracji konektora KSeF lub w parametrach globalnych systemu BPM (zależnie od tego, gdzie przechowywane są dane uwierzytelniające dla procesów automatycznych).
3.Weryfikacja trybu środowiska: Należy sprawdzić, czy proces BPM nie próbuje łączyć się z bramką produkcyjną Ministerstwa Finansów przy użyciu tokenu wygenerowanego w portalu demo (adresy URL dla środowiska demo i produkcyjnego są różne).
WAŻNE
Po wprowadzonych zmianach należy uruchomić jednorazowo aplikację Comarch BPM z uprawnieniami Administratora.
Pytanie: Dlaczego przy próbie pobrania dokumentów z KSeF pojawia się komunikat: Wystąpiły błędy w zapisie?
Odpowiedź: Przy pierwszej próbie pobrania faktur, system próbuje pobrać i wypakować niezbędne biblioteki przeglądarki (Chromium) do wskazanego w komunikacie folderu. Folder Program Files jest domyślnie chroniony przez Windows. Zwykły użytkownik nie ma uprawnień do zapisu (tworzenia folderów i rozpakowywania plików .exe/.dll) w tej lokalizacji. Jednorazowe uruchomienie procesu BPM.eexe jako Administrator pozwala systemowi „doinstalować” brakujące komponenty do odpowiednich podfolderów. Gdy pliki już tam będą, zwykły użytkownik będzie mógł z nich korzystać (tylko do odczytu/uruchomienia), co rozwiąże problem.
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Czy można w kontrolce Dane tabelaryczne uzależnić wybór wartości z listy od drugiej listy?
W kontrolce Dane tabelaryczne (DT) nie ma obecnie możliwości uzależnienia zawartości jednej listy od drugiej (brak obsługi kolekcji list zależnych wewnątrz tabeli). Mechanizm „obserwowania pól” nie działa pomiędzy kolumnami w obrębie tego samego wiersza.
Rozwiązanie:
Można zrealizować ten scenariusz, przenosząc proces wyboru wartości poza tabelę. Należy dodać dwie niezależne kontrolki typu Lista oraz przycisk typu Własna akcja, który zasili tabelę danymi.
Kroki konfiguracji:
1. Dodanie pól wyboru: Poza kontrolką Dane tabelaryczne należy umieścić dwie niezależne listy (np. Dział i Pracownik), konfigurując między nimi standardową zależność (obserwowanie pól).
2.Konfiguracja Własnej akcji: Należy dodać przycisk (np. „Dodaj”), który będzie pełnił funkcję wyzwalacza zapisu. Kontrolka ta nie zawiera kodu.
3.Inicjowanie wartości w tabeli: W ustawieniach kontrolki Dane tabelaryczne (zakładka Inicjowanie wartości) należy zdefiniować zapytanie SQL, które po kliknięciu przycisku pobierze wartości z pól pomocniczych i wstawi je jako nowy wiersz do tabeli.
Przykład kodu SQL dla kontrolki Dane tabelaryczne
IF isnull ( @^DocumentId@ ,0) <>0
Begin
If @^SenderControlName@ ='Dodaj'
Begin
declare @dcdLogin varchar (30);
IF isnull ( @Pracownik_Id@ ,0) <>0
Begin
select @dcdLogin= DCD_Login from do.DF_ConfOSDictionary where dcd_id= @Pracownik_Id@
IF exists (select * from @Uprawnienia@ where [Login]=@dcdLogin)
Return
insert into @Uprawnienia@ values (@dcdLogin, @Pracownik_Text@ ,0)
select * from @Uprawnienia@
END
END
END
Konfiguracja kontrolki Dane tabelaryczne
Przykład kodu SQL dla kontrolki Dział:
select dcd_id, DCD_Name1 from do.DF_ConfOSDictionary where dcd_type=1 and DCD_Archival=0
Przykład kodu SQL dla kontrolki Pracownik, która obserwuje kontrolkę Dział:
select t2.dcd_id, t2.dcd_Name1 from do.DF_ConfOSTree as t1
inner join do.DF_ConfOSDictionary as t2 on t1.DCO_DCDId=t2.DCD_ID
inner join do.DF_ConfOSTree as t3 on t1.DCO_DCOId=t3.DCO_ID
left join do.DF_ConfOSDictionary as t4 on t4.DCD_ID=t3.DCO_DCDId
where t1.DCO_Archival=0 and t2.dcd_type=2 and t4.DCD_Name1=@Dzial_Text@
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Współpraca Comarch BPM z Comarch ERPXL – Rozwiązywanie problemów i komunikaty błędów
Jeśli wyszukiwanie nie reaguje, skorzystaj z funkcji „Znajdź na stronie” w menu Twojej przeglądarki.
Problem: Dlaczego w definicji typu obiegu brakuje kontrolki „Dokument ERP XL”?
Przyczyna:
Brak dostępności kontrolki Dokument ERP XL w konfiguracji typu obiegu wynika z nieaktywnej funkcji opisu analitycznego.
Rozwiązanie:
Sposób włączenia tej opcji zależy od trybu pracy systemu:
Tryb wielospółkowy (Ustawienia w aplikacji desktop): W przypadku pracy w trybie wielospółkowym konfigurację należy przeprowadzić bezpośrednio w aplikacji desktop. W tym celu należy:
1. Przejść na zakładkę Ustawienia Połączenia z ERP.
2. Odnaleźć parametr Generowanie dokumentów z opisem analitycznym.
3. Ustawić wartość na Tak.
Tryb jednospółkowy (Plik konfiguracyjny serwera): W trybie jednospółkowym konfiguracja zależy od parametrów zapisanych w pliku Web.config aplikacji serwerowej. Należy:
1. Otworzyć plik Web.config znajdujący się w katalogu aplikacji serwerowej.
2. Upewnić się, że jest ustawiona wartość True w kluczu: <add key=”EnableAnaliticDescription” value=”true” />
Problem: Podczas generowania dokumentu do XL-a pojawia się komunikat:
Komunikat”Nie można dodać dokumentu. W funkcji XLNowyDokument wystąpił błąd nr 81: BŁĘDY: [Nie można wygenerować dokumentu – brak licencji. (NowyDokument-81)”
Przyczyna: Występowanie niespójności w konfiguracji odwołań do serwera klucza. Problem pojawia się najczęściej, gdy poszczególne moduły (Menadżer Kluczy, Menadżer Baz, ERP XL, BPM) korzystają z różnych formatów adresowania (np. mieszanie nazwy hosta z adresem IP).
Rozwiązanie:
Ujednolicenie odwołań do serwera klucza
Należy zweryfikować, czy we wszystkich miejscach konfiguracji widnieje identyczny wpis. Zaleca się stosowanie nazwy serwera zamiast adresu IP. Sprawdzenia wymagają:
Menadżer Kluczy: Pole Serwis zainstalowany jest na serwerze.
Menadżer Baz: Sposób podpięcia bazy XL-owej.
Plik konfiguracyjny BPM: W pliku Web.config należy sprawdzić klucz:
Jeżeli w jednym miejscu widnieje adres IP (np. 192.168.1.100::12345), a w innym nazwa (np. SERWER-SQL::12345), należy ujednolicić wszystkie wpisy do formatu: NazwaSerwera::NumerKlucza.
Weryfikacja rejestru systemowego
W przypadku, gdy ujednolicenie wpisów nie rozwiąże problemu, należy sprawdzić obecność wpisu serwera HASP w rejestrze Windows pod ścieżką:
W przypadku braku stosownego wpisu z serwerem klucza, należy go dodać, a następnie ponownie zweryfikować proces generowania dokumentów.
Problem: Podczas generowania dokumentu do XL-a pojawia się komunikat:
„Nie można załadować biblioteki DLL 'cdn_api.dll’: Nie można odnaleźć określonego modułu. (Wyjątek od HRESULT: 0x8007007E)”
Przyczyna: Problem wynika z braku dostępu procesu do niezbędnych zmiennych środowiskowych lub plików profilu użytkownika, co uniemożliwia prawidłowe zainicjowanie bibliotek Comarch ERP XL przez serwer aplikacji.
Rozwiązanie
W celu wyeliminowania błędu należy dokonać zmiany w konfiguracji serwera IIS (Internet Information Services):
2.Przejść do sekcji Pule aplikacji (Application Pools).
3. Wybrać właściwą pulę: Należy odnaleźć pulę aplikacji serwerowej BPM.
4. Edytować ustawienia zaawansowane: Po kliknięciu prawym przyciskiem myszy na wybranej puli należy wybrać opcję Ustawienia zaawansowane (Advanced Settings).
5. Zmienić parametr profilu: W sekcji Model procesu (Process Model) należy odnaleźć funkcję Załaduj profil użytkownika (Load User Profile) i zmienić jej wartość na True.
6. Restartować usługę: Należy zrestartować pulę aplikacji lub całą usługę IIS, aby zmiany zostały zaktualizowane.
Ustawienia zaawansowane puli aplikacji serwerowej
Problem: Dlaczego podczas generowania dokumentu do Comarch ERPXL pojawia się komunikat:
„Błąd XL Api. W funkcji XLKSeFUstalStatusDokumentu wystąpił błąd nr -400:”
Rozwiązanie:
Użytkownik, który generuje dokument do XL-a musi mieć na swojej karcie operatora w XL-u na zakładce Ustawienia->Parametry zaznaczony parametr:
Edycja numeru KSeF na dok./Spinanie z KSeF na zatw. dok.
Problem: Podczas próby dowiązania dokumentu obiegowego z poziomu Comarch ERPXL pojawia się komunikat: „Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu”
Opis komunikatu:
Okno historia związanych w ERPXL
Rozwiązanie
Należy uruchomić RejestrOD spod prawego klawisza myszy z opcją ‘Uruchom jako administrator’. Plik znajduje się w katalogu z plikami wersji desktopowej.
Uruchamianie pliku RejestrOD
Problem: Podczas generowania dokumentu (A)FZ z kontrolki Dokument ERPXL pojawia się komunikat: „Nie można zamknąć dokumentu. W funkcji XLZamknijDokument wystąpił błąd nr -12: BŁĘDY:|Wystąpił niezidentyfikowany błąd.|Błąd najprawdopodobniej spowodowany złym działaniem otoczenia programu. () (ZamknijDokument–12)
Opis komunikatu:
Komunikat nr 12 podczas generowania dokumentu
Rozwiązanie
W przypadku kontrahenta Unijnegowymagane jest wskazanie kraju wysyłki.
W tym celu należy kolejno:
1. na definicji obiegu dodać kontrolkę np. typu Lista
2.na właściwościach Etapu, na którym będzie generowany dokument, na zakładce Kontrolki, zaznaczyć dla tej kontrolki ’Wymagana’, aby kraj (prefix) zawsze został wskazany podczas tworzenia nowego dokumentu.
Ewentualnie prefiks kraju można pobierać z karty kontrahenta. Przykład zapytania poniżej:
If @Prefiks kraju_MODE@ = 0 --po dodaniu nowego dokumentu podstawi się kraj o id=17
/*tryb inicjacji*/
select kpc_id, KPC_Kod, 17 FROM cdn.KrajeCelne else IF @Prefiks kraju_MODE@=1
--po zmianie kontrolki zależnej (czyli kontrahenta)
podstawi się prefiks kraju kontrahenta /*tryb obserwacji*/
begin select kpc_id, KPC_Kod,(SELECT top 1 kpc_Id
from cdn.KntKarty join cdn.krajecelne on kpc_kod = Knt_kraj
where Knt_GIDNumer =@Kontrahent_GIDNUMER@ ) as DefaultId from cdn.krajecelne
3. Kontrolkę należy zmapować, jak przedstawiono poniżej:
Ustawienia kontrolki Prefiks kraju.
Mapowanie kontrolki Prefiks kraju.
Problem: Podczas próby zaczytania dokumentów pojawia się komunikat: „Brak pakietu dla podanych danych Klienta”.
Opis komunikatu:
Punkt ACD- Comarch OCR
Rozwiązanie
W pliku Web.config w katalogu z aplikacją serwerową (dawna web) przy serwerze klucza należy wskazać pełną ścieżkę tzn. serwer klucza/nazwa instancji::numer klucza.
1. <!– „LicenceKeyServerDMS” – należy wpisać nazwę serwera licencji dla aplikacji Comarch BPM (dawniej DMS) –>
<add key=„LicenceKeyServerDMS” value=” serwer klucza/nazwa instancji::numer klucza ” />
2. <!– „LicenceKeyServerERP” – należy wpisać nazwę serwera licencji dla ERP XL lub ERP Optima. –>
<add key=„LicenceKeyServerERP” value=” serwer klucza/nazwa instancji::numer klucza ” />
Problem: Podczas próby generowania dokumentu z kontrolki Dokument ERPXL pojawia się komunikat: „Nie można zalogować się do ERPXL. Funkcja XLLogin zwróciła błąd nr -8”
Opis komunikatu:
Komunikat nr 8 podczas generowania dokumentu
Rozwiązanie
Należy sprawdzić czy:
1. baza, którą wskazano w pliku Web.config w katalogu z aplikacją serwerową (dawna web) Comarch BPM (dawniej DMS), została podłączona do systemu Comarch ERP XL w module Menedżer baz z włączonymi uprawnieniami administratora (w ramach aplikacji CDNMGR w katalogu Comarch ERP XL).
Uruchamianie CDNMGR
2. dla bazy wskazanej w pliku Web.config – znajdującym się w katalogu z aplikacją serwerową (dawną web) ComarchBPM (dawniej DMS) – podczas podłączania jej w module Menedżer baz wybrano sposób dostępu aplikacji do serwera SQL: Autoryzacja przez serwer SQL (krok 4 z 6),
Podłączanie Bazy ERPXL krok 4
3. dla bazy wskazanej w pliku Web.config – znajdującym się w katalogu z aplikacją serwerową (dawną web) Comarch BPM (dawniej DMS) – podczas podłączania jej w module Menedżer baz wybrano opcję Baza widoczna dla: Wszystkich użytkowników komputera (krok 6 z 6),
Podłączanie Bazy ERPXL krok 6
4. W Zmiennych środowiskowych systemu Windows (Komputer -> ppm Właściwości -> Zaawansowane ustawienia systemu -> Zaawansowane -> Zmienne środowiskowe) dla zmiennej systemowej Path jako pierwsza ścieżka dla Comarch ERP XL podany jest katalog z wersją Comarch ERP XL współpracującą z wersja Comarch BPM (dawniej DMS) i w którym znajdują się właściwe dla tej wersji pliki biblioteki API.
Problem: Podczas próby generowania dokumentu z kontrolki Dokument ERPXL pojawia się komunikat: „Nie można zalogowac się doERPXL. Funkcja XLLogin zwróciła błąd nr -7”
Opis komunikatu:
Komunikat podczas generowania dokumentu
Rozwiązanie
Należy zweryfikować nazwę firmy na zakładce Autoryzacja API na zakładce Ustawienia w aplikacji desktop Comarch BPM (dawniej DMS) (por. Autoryzacja API).
Należy wpisać zmapowaną nazwę bazy, czyli wartość z kolumny Nazwa firmy z Menedżera baz.
Nazwa firmy z kolumny „Nazwa firmy” w Menedżerze baz
Uzupełnione pole „Nazwa firmy” na zakładce „Autoryzacja API” w ramach zakładki „Ustawienia”
Problem: Podczas próby generowania dokumentu z kontrolki Dokument ERPXL pojawia się komunikat: „Nie można dodać dokumentu. W funkcji XLNowyDokument wystąpił błąd nr 9: BŁĘDY:|Nie znaleziono formy płatności. (NowyDokument-9)”
Opis komunikatu:
Komunikat podczas generowania dokumentu
Rozwiązanie
W przypadku, jeśli kontrolka typu Lista z formami płatności jest powiązana (zmapowana) z kontrolką typu Dokument ERPXL, lista form płatności musi być zdefiniowana w oparciu o zapytanie SQL, a nie w oparciu o słownik.
Przykład zapytania, które pobiera formy płatności z systemu ERPXL:
select kon_lp,ltrim(rtrim(left(kon_wartosc,15))) from [Nazwa_bazy_ERPXL].[cdn].[Konfig]
where kon_numer=736
Przykładowe zapytanie SQL w ramach definicji kontrolki typu Lista „Formy płatności” (formy_platnosci)
Wybór kontrolki „forma płatności” (forma_platnosci) do mapowania na dokument na kontrolce typu Dokument ERP XL
Problem: Podczas próby generowania dokumentu z kontrolki Dokument ERPXL pojawia się komunikat: „Nie można zalogowac się doERPXL. Funkcja XLLogin zwróciła błąd nr -1”
Opis komunikatu:
Komunikat podczas generowania dokumentu
Rozwiązanie
Należy kolejno:
1. sprawdzić, czy w Zmiennych środowiskowych systemu Windows (Komputer -> ppm Właściwości -> Zaawansowane ustawienia systemu -> Zaawansowane -> Zmienne środowiskowe) dla zmiennej systemowej Path jako pierwsza ścieżka dla Comarch ERP XL podany jestkatalog z wersją Comarch ERP XL , która współpracuje z wersją Comarch BPM (dawniej DMS) i w którym znajdują sięwłaściwe dla tej wersji pliki biblioteki API.
2.po modyfikacji ścieżki zrestartować komputer/serwer, aby zmiany zostały zaktualizowane.
Problem: Podczas próby dowiązania kontrahenta z systemu Comarch ERPXL do kontrolki Kontrahent, formatka z listą kontrahentów nie podnosi się
Opis komunikatu:
Dowiązywanie kontrahenta w Comarch BPM (dawniej DMS)
Rozwiązanie
Należy sprawdzić w pliku Web.config (znajduje się on w ścieżce: C:\inetpub\wwwroot\[folder zawierający pliki aplikacji serwerowej]) ustawienie współpracy w sekcji:
<!– „WorkMode” – określenie współpracy Comarch BPM (dawniej DMS) z ERP Optima – wartość = „Optima”, ERP XL – wartość = „XL”, bez współpracy z systemem EPR – wartość = „Standalone” –> <add key=”WorkMode” value=”XL” />
Problem: Podczas próby dowiązania kontrahenta z systemu Comarch ERPXL do kontrolki Kontrahent, pojawia się komunikat: „Baza nie jest zarejestrowana w systemie ERPXL”
Opis komunikatu:
Dowiązywanie kontrahenta w Comarch BPM (dawniej DMS)
Rozwiązanie
Należy sprawdzić, czy wskazano nazwę firmy na zakładce Autoryzacja API na zakładce Ustawienia w aplikacji desktop Comarch BPM (dawniej DMS) (por. Autoryzacja API).
Należy wpisać zmapowaną nazwę bazy, czyli wartość z kolumny Nazwa firmy z Menedżera baz.
Nazwa firmy z kolumny „Nazwa firmy” w Menedżerze baz
Uzupełnione pole „Nazwa firmy” na zakładce „Autoryzacja API” w ramach zakładki „Ustawienia”
Problem: Podczas dodawania nowej karty obiegu i kontrolki „Kontrahent” pojawia się komunikat: „Wybrany kontrahent ma zaznaczony parametr Archiwalny. Należy wskazać innego kontrahenta.”
Opis komunikatu:
Dowiązywanie kontrahenta w Comarch BPM (dawniej DMS)
Rozwiązanie
Przy dodawaniu kontrolki typu kontrahent podczas definiowania typu obiegu, domyślnie podpowiada się kontrahent jednorazowy.
Kontrahent ten w ERPXL został zarchiwizowany. Zostało to wykonane od strony bazy, ponieważ z poziomu interfejsu parametr ‘Archiwalny’ jest odznaczony i wyszarzony dla takiego typu kontrahenta. Należy przywrócić kontrahenta, wykonując update w bazie tabeli CDN.KntKarty w polu Knt_Archiwalny.
Problem: Podczas próby podłączenia dokumentu BPM (dawniej DMS) poprzez historię związanych pojawia się poniższy komunikat: ’’Ole Automation Error. Nie można załadować pliku lub zestawu’DocumentWorkflow.Types….’’
Opis komunikatu:
Okno historia związanych w ERPXL
Rozwiązanie
Należy zweryfikować, czy plik DMS.exe znajduje się tylko w podkatalogu z Comarch BPM (dawniej DMS).
Jeśli dodatkowo został wkopiowany do katalogu, gdzie jest zainstalowany ERPXL, należy go z niego usunąć.
Problem: Dlaczego w kontrolce Dokument ERP XL nie ma możliwości zmapowania załącznika?
Brak możliwości mapowania załącznika
Rozwiązanie
Aby można było zmapować załącznik na dokument ERP XL i przenieść do bazy Comarch ERP XL, należy odpowiednio skonfigurować ustawienia w BPM (dawniej DMS):
W przypadku pracy BPM-a (dawniej DMS) w trybie jednospółkowym w pliku Web.config w katalogu z plikami aplikacji serwerowej (dawna web) należy w kluczu <add key=”DestinationAttachmentsWorkflow” value=”XL” /> ustawić XL.
W przypadku pracy BPM-a (dawniej DMS)w trybie wielospółkowym należy skonfigurować zapisywanie załączników w definicji typu obiegu na właściwościach kontrolki Załącznik – w ramach pola „Nazwa spółki” trzeba wybrać bazę Comarch ERP XL.
Wybór bazy Comarch ERP XL w polu „Nazwa spółki”
Problem: Dlaczego po zmapowaniu wartości na kontrolkę typu Dokument ERP XL nie ma możliwości edycji danych z poziomu formatki?
Rozwiązanie
Na etapie, na którym ustawione jest mapowanie wartości z kontrolki typu Dane tabelaryczne (DT), nie jest możliwe edytowanie wartości na Dokumencie ERP XL w elementach, gdyż wtedy występowała by różnicapomiędzy wartością mapowaną a zmapowaną.
Można na takim etapie edytować elementy w samej kontrolce typu Dane tabelaryczne i ta zmiana przeniesie się na dokument ERP XL.
Ewentualnie jeśli mapowanie odbywało się na wcześniejszym etapie, na etapach późniejszych możliwa jest edycja Elementów na Dokumencie ERP XL jeśli kontrolka nie jest w definicji ustawiona jako tylko do odczytu.
Problem: Podczas instalacji Comarch BPM przy użyciu Instalatora, w kroku Uruchom skrypty dla bazy ERP XL występuje błąd „Nie udało się wykonać skryptów SQL na wybranej bazie. Execution exception in script pGetDocumentsByNumbers.sql: Invalid column name ‘BON_OkrSymbol’.”
Okno „Baza danych Comarch ERP XL” z informacja o błędzie
Rozwiązanie
Powyższy błąd spowodowany jest odwołaniem w skrypcie do kolumny z komunikatu, która nie występuje w starszych wersjach ERP XL.
W takim wypadku rozwiązaniem może być aktualizacja ERP XL lub wykonanie instalacji BPM (dawniej DMS) w trybie Standalone i ręczne uruchomienie skryptów na bazie ERP XL, po wcześniejszym usunięciu linii kodu odwołującej się do nieistniejącej kolumny.
Problem: Błąd -12. Nie można zamknąć dokumentu. W funkcji XLZamknijDokumnet wystąpił błąd nr -12: Błędy:| Błąd generowania dokumentu stowarzyszonego lub błąd sprawdzania krajów, bonów itp. (ZamknijDokument –12) – co to za komunikat?
Rozwiązanie
błąd Api-12 pojawia się w przypadku, gdy na dokumencie w BPM (dawniej DMS) jest podpięty kontrahent Unijny, (czyli na karcie w XL-u na zakładce Księgowe ma zaznaczoną opcję Unijny) – należy dokonać weryfikacji.
W przypadku kontrahenta Unijnego wymagane jest wskazanie kraju wysyłki. W tym celu na definicji obiegu należy dodać kontrolkę np. typu Lista i na właściwościach Etapu, na którym będzie generowany dokument, na zakładce Kontrolki, zaznaczyć dla niej ’Wymagana’, aby kraj (prefix) zawsze został wskazany podczas tworzenia nowego dokumentu. Ewentualnie prefiks kraju można pobierać z karty kontrahenta.
Przykład zapytania poniżej:
If @Prefiks kraju_MODE@ = 0 --po dodaniu nowego dokumentu podstawi się kraj o id=17 /*tryb inicjacji*/
select kpc_id, KPC_Kod, 17 FROM cdn.KrajeCelne
else
IF @Prefiks kraju_MODE@=1 --po zmianie kontrolki zależnej (czyli kontrahenta) podstawi się prefiks kraju kontrahenta /*tryb obserwacji*/
begin
select kpc_id, KPC_Kod,(SELECT top 1 kpc_Id from cdn.KntKarty
join cdn.krajecelne on kpc_kod = Knt_kraj where Knt_GIDNumer =@Kontrahent_Id@
) as DefaultId
from cdn.krajecelne
Problem: Nie można dodać dokumentu. W funkcji XLNowyDokument wystąpił błąd nr -44: BŁĘDY: Obiekt Rabaty zwrócił błąd ADO-1 (NowyDokument–44) – co to za komunikat?
Rozwiązanie
ADO-1- To błąd ogólny i zależy od kontekstu.
We wszystkich zgłoszeniach proponuje się aktualizację ERP XL oraz instalację Cumulative Update (zbiorczej paczki poprawek i aktualizacji) dla użytkowanej wersji MS SQL Server. Są dostępne na stronach Microsoft.
Istnieje konieczność instalacji CU dla danej wersji MS SQL Server.
Dodatkowo proponujemy wykonanie poniższych instrukcji na bazie ERP XL:
ALTER DATABASE SCOPED CONFIGURATION SET TSQL_SCALAR_UDF_INLINING = OFF;
GO
EXEC sp_recompile N'CDN.MacierzRabatowa';
GO
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Udostępnienie funkcji RPA (automatycznego trybu pracy – robotyzacja) na punktach ACD typu „Import dokumentów ze skrzynki e-Doręczenia” oraz „Import dokumentów zakupu z KSeF”
W wersji 2025.2.0 umożliwiono pełną automatyzację importowania oraz generowania dokumentów przez punkty ACD typu „Import dokumentów ze skrzynki e-Doręczenia” i „Import dokumentów zakupu z KSeF”.
Wprowadzono również możliwość ustawiania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF” w konfiguracji automatycznego trybu pracy.
Aby umożliwić wykonywanie działań na wskazanych punktach ACd, wprowadzono nowe metody w obiekcie Globals w klasie ACD, która określa metody wykonywane jedynie w kontekście okna ACD – są to następujące metody:
ImportEDorMessages() – metoda do automatycznej obsługi pobierania nowych wiadomości z usługi e-Doręczenia – ta metoda:
Nie posiada parametrów wejściowych
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int ImportMessages()
return: 0 – ok, -1 – error
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania wiadomości z usługi E-Doręczenia i generowania dokumentów BPM (gdy punkt ACD współpracujący z usługą E-Doręczenia nosi nazwę „E-Doręczenia”) – przykład
ImportKSeFDocuments() – metoda do automatycznej obsługi pobierania nowych dokumentów z usługi KSeF – ta metoda:
Nie posiada parametrów wejściowych
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int ImportKSeFDocuments()
return: 0 – ok, -1 – error
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
SetKSeFFilters(string, DateTime?,DateTime?, decimal?, decimal?, byte?, byte) – metoda służąca do ustawiania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF” według określonych kryteriów. Uruchomienie metody powoduje przeładowanie listy dokumentów przy uwzględnieniu nowych wartości filtrów. Ta metoda:
Posiada parametry wejściowe – podanie wszystkich parametrów nie jest wymagane:
string – NIP firmy
DateTime? – Data przyjęcia dw KSeF- od
DateTime? – Data przyjęcia dw KSeF- do
decimal? – Wartość brutto – od
decimal? – Wartość brutto – do
byte? – Typ dokumentu
byte – Stan faktury
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int SetKSeFFilters(string, string?, string?, decimal?,decimal?, byte?, byte)
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF, filtrowania ich i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
ResetKSeFFilters() – metoda służąca do resetowania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF”. Domyślne ustawienia to brak filtrów: NIP firmy, Data przyjęcia w KSeF – od, Data przyjęcia w KSeF – do, Wartość brutto – od, Wartość brutto – do Typ dokumentu. Filtr Stan faktury jest ustawiony na faktury niezarejestrowane w Comarch BPM. Ta metoda:
Nie posiada parametrów wejściowych
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int ResetKSeFFilters()
return: 0 – ok, -1 – error
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF, resetu filtrów i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
SetDocumentFlow(string) – metoda dodana w wersji 2026.0.0; ustawia jeden wybrany obieg, co umożliwia uruchomienie automatyzacji procesu wskazywania typu obiegu dokumentów, którym ma posługiwać się program procesu. Ta metoda:
Ma parametr wejściowy: nazwę typu obiegu – jest to parametr obowiązkowy
Zwraca wyniki:
0 – operacja wykonała się poprawnie
-1 – wystąpił błąd
-2 – podany obieg dokumentów nie istnieje
Wprowadzanie kodu na zakładce „Edytor skryptów” na zakładce „Konfiguracja automatycznego trybu pracy” – widoczna jest metoda Globals.ACD.SetDocumentFlow(string)
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
W wersji 2025.2.0 umożliwiono pełną automatyzację importowania oraz generowania dokumentów przez punkty ACD typu „Import dokumentów zakupu z KSeF”.
Wprowadzono również możliwość ustawiania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF” w konfiguracji automatycznego trybu pracy.
Aby umożliwić wykonywanie działań na wskazanych punktach ACD, wprowadzono nowe metody w obiekcie Globals w klasie ACD, która określa metody wykonywane jedynie w kontekście okna ACD – są to następujące metody:
ImportKSeFDocuments() – metoda do automatycznej obsługi pobierania nowych dokumentów z usługi KSeF – ta metoda:
Nie posiada parametrów wejściowych
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int ImportKSeFDocuments()
return: 0 – ok, -1 – error
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
SetKSeFFilters(string, DateTime?,DateTime?, decimal?, decimal?, byte?, byte) – metoda służąca do ustawiania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF” według określonych kryteriów. Uruchomienie metody powoduje przeładowanie listy dokumentów przy uwzględnieniu nowych wartości filtrów. Ta metoda:
Posiada parametry wejściowe – podanie wszystkich parametrów nie jest wymagane:
string – NIP firmy
DateTime? – Data przyjęcia dw KSeF- od
DateTime? – Data przyjęcia dw KSeF- do
decimal? – Wartość brutto – od
decimal? – Wartość brutto – do
byte? – Typ dokumentu
byte – Stan faktury
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int SetKSeFFilters(string, string?, string?, decimal?,decimal?, byte?, byte)
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF, filtrowania ich i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
ResetKSeFFilters() – metoda służąca do resetowania filtrów dla punktów ACD typu „Import dokumentów zakupu z KSeF”. Domyślne ustawienia to brak filtrów: NIP firmy, Data przyjęcia w KSeF – od, Data przyjęcia w KSeF – do, Wartość brutto – od, Wartość brutto – do Typ dokumentu. Filtr Stan faktury jest ustawiony na faktury niezarejestrowane w Comarch BPM. Ta metoda:
Nie posiada parametrów wejściowych
Zwraca wyniki:
0 – jeśli operacja wykonała się poprawnie
-1- jeśli wystąpił błąd
int ResetKSeFFilters()
return: 0 – ok, -1 – error
Widok okna „Konfiguracji automatycznego trybu” z przykładowym skryptem do automatycznego pobierania dokumentów z KSeF, resetu filtrów i generowania dokumentów BPM (gdy punkt ACD współpracujący z KSeF nosi nazwę „Faktury KSeF”) – przykład
SetDocumentFlow(string) – metoda dodana w wersji 2026.0.0; ustawia jeden wybrany obieg, co umożliwia uruchomienie automatyzacji procesu wskazywania typu obiegu dokumentów, którym ma posługiwać się program procesu. Ta metoda:
Ma parametr wejściowy: nazwę typu obiegu – jest to parametr obowiązkowy
Zwraca wyniki:
0 – operacja wykonała się poprawnie
-1 – wystąpił błąd
-2 – podany obieg dokumentów nie istnieje
Wprowadzanie kodu na zakładce „Edytor skryptów” na zakładce „Konfiguracja automatycznego trybu pracy” – widoczna jest metoda Globals.ACD.SetDocumentFlow(string)
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Konfiguracja i uruchamianie automatycznego trybu pracy – przykład
Administrator otworzył do edycji plik BPM.exe.config, znajdujący się w folderze z aplikacją desktop Comarch BPM i w ramach klucza „RPAFolderPath” wprowadził ścieżkę do aplikacji desktop Comarch BPM – w tym przypadku <add key=”RPAFolderPath” value=”C:\dms202310″/> – a później zapisał zmianę.
Administrator dodał na zakładce [Automatyczne generowanie dokumentów] trzy punkty ACD należące do typu „Współpraca z Comarch OCR” o następujących nazwach:
Faktury od Firmy A (zgodnie z ustawieniami punktu dokumenty wygenerowane w tym punkcie mają trafiać do obiegu „Faktury – firma A”)
Faktury od Firmy B (zgodnie z ustawieniami punktu dokumenty wygenerowane w tym punkcie mają trafiać do obiegu „Faktury – firma B”)
Faktury od Firmy C (zgodnie z ustawieniami punktu dokumenty wygenerowane w tym punkcie mają trafiać do obiegu „Faktury – firma C”)
Ustawienia punktu ACD „Faktury od Firmy A” – zakładka „Ogólne”
Ustawienia punktu ACD „Faktury od Firmy A” – zakładka „Kontrolki”
następnie administrator przeszedł na zakładkę [Konfiguracja automatycznego trybu pracy] i kliknął przycisk [Dodaj].
Wskazówka
Aby zobaczyć przykład, kliknij na film poniżej.
Na zakładce „Edytor skryptów” w ramach pola „Nazwa programu” wpisał „Faktury z firm A,B,C”, później na zakładce „Uprawnienia” nadał uprawnienia do programu dla siebie i kilku innych operatorów i kliknął [Zapisz].
Wskazówka
Aby zobaczyć przykład, kliknij na filmy poniżej.
Na zakładce „Edytor skryptów” w polu edytora administrator wprowadził następujący kod:
Globals.ACD.Show();
while (1==1)
{
Globals.ACD.RefreshList();
Globals.ACD.SetPoint("Faktury od Firmy A",1);
Globals.ACD.SetDocumentFlow("Faktury – firma A");
Globals.ACD.GenerateDMSDocuments();
Globals.ACD.RefreshList();
Globals.ACD.SetPoint("Faktury od Firmy B",1);
Globals.ACD.SetDocumentFlow("Faktury – firma B");
Globals.ACD.GenerateDMSDocuments();
Globals.ACD.RefreshList();
Globals.ACD.SetPoint("Faktury od Firmy C",1);
Globals.ACD.SetDocumentFlow("Faktury – firma C");
Globals.ACD.GenerateDMSDocuments();
}
Wprowadzanie kodu do edytora skryptów
Następnie administrator nacisnął przycisk [Kompiluj i zapisz]. Kompilacja przebiegła pomyślnie, więc w dolnej części okna wyświetlona została informacja „Kompilacja skryptu zakończyła się sukcesem”.
Zakładka „Edytor skryptów” po skompilowaniu skryptu
Następnie administrator zapisał zmiany, klikając przycisk [Zapisz]. Później nacisnął przycisk [Uruchom] i w ramach otwartego okna „Uruchom program” wybrał w polu „Uruchom program” program „Faktury z firm A,B,C” i (nie zaznaczając checkboxa „Zabezpiecz hasłem”), a później kliknął przycisk [Uruchom].
Okno „Uruchom program” – wybór programu „Faktury z firm A,B,C”
wówczas administrator został przeniesiony na zakładkę „Automatyczne generowanie dokumentów”, gdzie otworzyło się okno „Automatyczny tryb pracy”, a w tle odbywało się inicjowanie dokumentów.
Automatyczny tryb pracy – inicjowanie dokumentów
Gdy wszystkie dokumenty zostały wygenerowane, administrator kliknął przycisk [Zatrzymaj program]. Okno „Automatyczny tryb pracy” zostało zamknięte.
Widok zakładki „Automatyczne generowanie dokumentów” po zatrzymaniu programu.
Następnie administrator przeszedł na zakładkę [Dokumenty w obiegu] – na liście dokumentów widoczne były wszystkie dokumenty wygenerowane w wyniku działania programu „Faktury z firm A,B,C”. Po wejściu do przykładowego dokumentu można zauważyć, że na dokument zmapowano również wartości odczytane przez OCR, zgodnie z ustawieniami punktów ACD.
Lista dokumentów z dokumentami wygenerowanymi w automatycznym trybie pracy
Przykładowy dokument wygenerowany w automatycznym trybie pracy
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?
Pobieranie danych z KSeF do kontrolki tabelarycznej Elementy na Fakturze kosztowej przy współpracy z Comarch ERP Optima
Zastosowanie
Dzięki zastosowaniu tej zintegrowanej konfiguracji, proces obiegu faktur kosztowych w Comarch BPM zyskuje pełną automatyzację i spójność danych. Dane są pobierane bezpośrednio z systemu KSeF (poprzez BPM), a kontrolka tabelaryczna jest automatycznie wypełniana.
Głównym celem jest:
Eliminacja ręcznego wprowadzania pozycji dokumentów: Dane z faktury KSeF (pobrane do tabeli do.KS_DocumentItems) są automatycznie mapowane i wypełniają kontrolkę tabelaryczną na karcie obiegu.
Automatyczne kalkulowanie wartości: Kontrolka tabelaryczna uzyskuje zdolność automatycznego przeliczania wszędzie tam, gdzie zmienione zostaną dane wejściowe (np. Netto, Stawka VAT, Brutto) przez użytkownika.
Minimalizacja błędów i skrócenie czasu obsługi faktury: Proces akceptacji bazuje na poprawnych i spójnych danych, które są automatycznie kalkulowane i aktualizowane, zanim dokument zostanie zaksięgowany w Comarch ERP Optima.
Przykład jest oparty na definicji typu obiegu dostępnej na stronach walidowanych w sekcji ERP 5.0->Comarch BPM (dawniej DMS)->Przykłady->ERP Optima. Razem z przykładem udostępnione są pliki exe, które umożliwiają wygenerowanie dokumentu do Comarch ERP Optima. Aby skorzystać z tej funkcjonalności należy pobrać przykład adekwatny do wersji Comarch ERP Optima
Przykłady generatorów do Comarch ERP Optima
Zawartość przykładu
Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu Faktury kosztowej z krokami akceptacji, konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERP Optima
Punkt konfiguracyjny ACD: Wzorcowa konfiguracja, która jest odpowiedzialna za pobranie ID dokumentu KSeF, Załącznika oraz wszystkich kluczowych danych nagłówkowych (Numer dokumentu, Kontrahent, Data zakupu, Data wystawienia, Data wpływu Termin płatności, Forma płatności, Waluta, Wartość Netto, Wartość Brutto, Numer KSeF, Data przyjęcia z KSeF) oraz utworzenie dokumentu obiegowego.W przypadku kontrolki Kontrahent w zapytaniu przed nazwą tabeli CDN.Kontrahenci należy wskazać właściwą nazwę bazy Comarch ERP Optima.
Plik Zapytania Sql – zawiera zapytania SQL do punktu ACD oraz zapytanie do kontrolki Dane tabelaryczne (każda pozycja osobno)
Plik Zapytanie SQL – Kontrolka DT- Elementy_sumowanie po tabelce VAT – zawiera zapytanie do kontrolki Dane tabelaryczne, które sumuje pozycje po stawce VAT
Mechanizm opiera się na dwóch trybach pracy zintegrowanych w kontrolce Dane Tabelaryczne (Elementy):
Tryb Inicjowania (Pobieranie z KSeF): Wyzwalany, gdy kontrolka ID_KSeF zostanie uzupełniona. System pobiera dane z tabeli do.KS_DocumentItems z bazy BPM i łączy je ze stawkami VAT z bazy konfiguracyjnej Comarch ERP Optima.
Konfiguracja wykorzystuje ID dokumentu KSeF (zapisane w dedykowanej kontrolce typu Liczba całkowita o nazwie np. ID_KSeF) jako identyfikator do pobrania danych.
Kontrolka tabelaryczna obserwuje pole ID_KSeF, reagując na jego wypełnienie.
Kluczowym elementem jest zapytanie SQL umieszczone na zakładce Inicjowanie Wartości kontrolki tabelarycznej.
Zapytanie jest filtrowane za pomocą parametru @ID_KSeF@, dzięki czemu pobiera ono wiersze z właściwego dokumentu KSeF z tabeli do.KS_DocumentItems w bazie BPM.
Tryb Edycji (Interaktywny): Kontrolka Dane Tabelaryczne (Elementy) obserwuje sama siebie (@^SenderControlName@ = ’Elementy’), co aktywuje logikę automatycznego przeliczania wartości w trybie edycji. Pozwala to na ręczne przypisanie stawki VAT oraz przeliczenie pozostałych wartości.
Konfiguracja przykładu
1. Utworzono kontrolkę ID_KSeF: Na karcie obiegu dodano kontrolkę typu Liczba całkowita o nazwie (identyfikatorze) ID_KSeF, do której będzie zapisywane ID dokumentu KSeF.
Kontrolka Liczba całkowita ID_KSeF
2.Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) Elementy i skonfigurowano w niej następujące kolumny:
”Kategoria” (identyfikator kolumny: Kategoria) – typ Lista
”Opis” (identyfikator kolumny: Opis) – typ Tekst
”Kategoria2” (identyfikator kolumny: Kategoria2) – typ Lista
”Opis2” (identyfikator kolumny: Opis2) – typ Tekst
”Stawka” (identyfikator kolumny: Stawka) – typ Lista
”Netto” (identyfikator kolumny: Netto) – typ Liczba stałoprzecinkowa
”VAT” (identyfikator kolumny: VAT) – typ Liczba stałoprzecinkowa
”Brutto” (identyfikator kolumny: Brutto) – typ Liczba stałoprzecinkowa
”Rodzaj” (identyfikator kolumny: Rodzaj) – typ Lista
”Odliczenia” (identyfikator kolumny: Odliczenia) – typ Lista
Kolumny w kontrolce Dane tabelaryczne
3. W kontrolce typu Dane tabelaryczne na zakładce Listy zdefiniowano zapytania pobierające dane:
Kategoria:
select Kat_KatID, Kat_KodSzczegol--, (select top 1 Kat_KatID from cdn.Kategorie order by 1)
from cdn.Kategorie where Kat_Typ=1
Stawka VAT:
SELECT Kon_KonId,
CASE
WHEN Kon_Opis='Stawka zwolniona' THEN 'ZW'
WHEN Kon_Opis='Nie podlega Vat' THEN 'NP'
WHEN Kon_Opis<>'Stawka zwolniona' and Kon_Opis<>'Nie podlega Vat' THEN CONCAT(LEFT(Kon_wartosc,6),' %')
END
FROM CDN_KNF_Konfiguracja.cdn.Konfig /* <<<<- Tu podmiana nazwy bazy>>>> */
where Kon_Numer=301 and Kon_wartosc like '%PL'
Rodzaj:
SELECT 1, 'Towary'
UNION
SELECT 2,'Inne'
UNION
SELECT 3,'Środki trwałe'
UNION
SELECT 4,'Usługi'
UNION
SELECT 5,'Środki transportu'
UNION
SELECT 6,'Nieruchomości'
UNION
SELECT 7,'Paliwo'
Odliczenia:
select 1, 'Nie'
union
select 2, 'Tak'
union
select 3, 'Warunkowo'
4.Dodano obserwację kontrolki: W kontrolce Dane tabelaryczne, na zakładce Inicjowanie wartości, dodano powiązanie do kontrolki ID_KSeF oraz do samej siebie.
Dane tabelaryczna, zakładka Inicjowanie wartości
5.Dodano zapytanie SQL:W kontrolce Dane tabelaryczne, na zakładce Inicjowanie wartości w sekcji Wzór na wartość SQL ERP dodano zapytanie, które pobiera dane z tabeli do.KS_DocumentItems na podstawie przekazanego parametru @ID_KSeF@ (ID dokumentu KSeF).
Uwaga
W zapytaniu przed nazwą tabeli do.KS_DocumentItems należy wskazać właściwą nazwę bazy Comarch BPM
Ta sekcja jest wywoływana tylko raz, podczas inicjowania obiegu:
Pierwsza sekcja zapytania SQL, rozpoczynająca się od bloku IF @^SenderControlName@ = 'ID_KSeF’ pobiera dane szczegółowe pozycji faktury z KSeF, standaryzuje identyfikatory stawek VAT i mapuje je na wartości procentowe z konfiguracji Comarch ERP Optima. Zapytanie to wypełnia kolumny z kwotami Netto/VAT/Brutto i ustala poprawną Stawkę procentową, jednocześnie inicjując kolumny (Kategoria, Opis)wartością NULL, ponieważ te dane muszą być uzupełnione ręcznie.
IF @^SenderControlName@ = 'ID_KSeF'
BEGIN
WITH RawKSeF AS (
/* Pobranie danych i ujednolicenie klucza bez agregacji */
SELECT
di.KSI_DocumentId,
CAST(ISNULL(di.KSI_ElementWartoscNetto, 0) AS DECIMAL(18,2)) AS Netto_Src,
CAST(ISNULL(di.KSI_ElementWartoscBrutto, 0) AS DECIMAL(18,2)) AS Brutto_Src,
CASE
WHEN di.KSI_ElementStawkaVAT LIKE '%zw%' OR di.KSI_ElementStawkaVAT LIKE '%zwolnione%' THEN 'ZW'
WHEN di.KSI_ElementStawkaVAT LIKE '%np%' THEN 'NP'
WHEN di.KSI_ElementStawkaVAT LIKE '%oo%' THEN 'OO'
WHEN di.KSI_ElementStawkaVAT LIKE '%23%' THEN '23'
WHEN di.KSI_ElementStawkaVAT LIKE '%22%' THEN '22'
WHEN di.KSI_ElementStawkaVAT LIKE '%8%' THEN '8'
WHEN di.KSI_ElementStawkaVAT LIKE '%5%' THEN '5'
WHEN di.KSI_ElementStawkaVAT LIKE '%0%' THEN '0'
ELSE '23'
END AS StandardizedKSeFVAT_Text
FROM [BPM_OPT].do.KS_DocumentItems AS di /* Nazwa bazy BPM */
WHERE di.KSI_DocumentId = @ID_KSeF@
),
OptimaVATRates AS (
/* Pobieranie stawek z Optimy */
SELECT
MAX(Kon_KonId) AS Kon_KonId,
StandardizedOptimaVAT_Text,
MAX(StawkaVatValue) AS StawkaVatValue
FROM (
SELECT
Kon_KonId,
ISNULL(TRY_CAST(REPLACE(RTRIM(SUBSTRING(Kon_Wartosc, 1, CHARINDEX(' ', Kon_Wartosc + ' ', 2))), ',', '.') AS REAL), 0) AS StawkaVatValue,
CASE
WHEN Kon_Opis = 'Stawka zwolniona' OR Kon_Wartosc LIKE '%ZW%' THEN 'ZW'
WHEN Kon_Opis = 'Nie podlega Vat' OR Kon_Wartosc LIKE '%NP%' THEN 'NP'
WHEN Kon_Opis = 'Odwrotne obciążenie' OR Kon_Wartosc LIKE '%OO%' THEN 'OO'
ELSE CAST(CAST(ISNULL(TRY_CAST(REPLACE(RTRIM(SUBSTRING(Kon_Wartosc, 1, CHARINDEX(' ', Kon_Wartosc + ' ', 2))), ',', '.') AS REAL), 0) AS INT) AS VARCHAR(10))
END AS StandardizedOptimaVAT_Text
FROM [CDN_KNF_Konfiguracja].cdn.Konfig /* Nazwa bazy konfiguracyjnej Comarch ERP Optima */
WHERE Kon_Numer = 301 AND Kon_Wartosc LIKE '%PL'
) sub
GROUP BY StandardizedOptimaVAT_Text
)
/* Wynik końcowy - bez GROUP BY, każda pozycja z RawKSeF osobno */
SELECT
CAST(NULL AS INT) AS [Kategoria],
CAST(NULL AS VARCHAR(255)) AS [Opis],
CAST(NULL AS INT) AS [Kategoria 2],
CAST(NULL AS VARCHAR(255)) AS [Opis 2],
CAST(o.Kon_KonId AS INT) AS [Stawka],
CAST(CASE
WHEN r.StandardizedKSeFVAT_Text IN ('ZW', 'NP', '0') THEN ISNULL(NULLIF(r.Netto_Src, 0), r.Brutto_Src)
WHEN r.Netto_Src <> 0 THEN r.Netto_Src
ELSE r.Brutto_Src / (1.0 + (ISNULL(o.StawkaVatValue, 0) / 100.0))
END AS DECIMAL(18, 2)) AS [Netto],
CAST(CASE
WHEN r.StandardizedKSeFVAT_Text IN ('ZW', 'NP', '0') THEN 0.00
ELSE ABS(r.Brutto_Src - (CASE WHEN r.Netto_Src <> 0 THEN r.Netto_Src ELSE r.Brutto_Src / (1.0 + (ISNULL(o.StawkaVatValue, 0) / 100.0)) END))
END AS DECIMAL(18, 2)) AS [VAT],
CAST(CASE
WHEN r.StandardizedKSeFVAT_Text IN ('ZW', 'NP', '0') THEN ISNULL(NULLIF(r.Brutto_Src, 0), r.Netto_Src)
WHEN r.Brutto_Src <> 0 THEN r.Brutto_Src
ELSE r.Netto_Src * (1.0 + (ISNULL(o.StawkaVatValue, 0) / 100.0))
END AS DECIMAL(18, 2)) AS [Brutto],
CAST(1 AS INT) AS [Rodzaj], /*Domyślny rodzaj o id=1, czyli Towary*/
CAST(1 AS INT) AS [Odliczenia] /*Domyślnie Odliczenia na NIE*/
FROM RawKSeF r
LEFT JOIN OptimaVATRates o ON r.StandardizedKSeFVAT_Text = o.StandardizedOptimaVAT_Text
END;
Ta sekcja jest wywoływana przy każdej modyfikacji danych w kontrolce „Elementy” i wymaga użycia ELSE po sekcji KSeF:
Druga sekcja zapytania SQL, rozpoczynająca się od bloku ELSE IF @^SenderControlName@ = 'Elementy’, jest odpowiedzialna za całą logikę przeliczania, walidacji i uzupełniania danych w czasie rzeczywistym po ręcznej edycji wiersza w kontrolce Dane Tabelaryczne. Ponieważ kontrolka Elementy obserwuje sama siebie, każda zmiana w kolumnie wyzwala ten kod.
/*Przeliczanie Elementów*/
ELSE
IF @^SenderControlName@ = 'Elementy'
BEGIN
declare @stawkaVat real
IF @Elementy_Column@=1 /* Inicjowanie pozycji wiersza po wskazaniu kategorii */
BEGIN
UPDATE @Elementy@ set [Opis]= (SELECT Kat_opis from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) WHERE POS=@Elementy_Row@
UPDATE @Elementy@ set [Stawka] = (
select Kon_KonId from
(
select Kon_KonId, flaga, stawka from
(
select Kon_KonId, cast (SUBSTRING (Kon_Wartosc, 7, 1) as int) flaga, cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0, charindex (' ', Kon_Wartosc , 2))),',','.') as real) stawka
from CDN_KNF_Konfiguracja.cdn.Konfig /* <<<<--------------- Tu podmiana nazwy bazy >>>> */
where kon_numer = 301 and Kon_wartosc like '%PL'
) insel1
join cdn.Kategorie on kat_stawka = stawka and kat_flaga = flaga and kat_katid = (SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)
) insel2
) where POS=@Elementy_Row@
UPDATE @Elementy@ set [Rodzaj]=(SELECT Kat_RodzajZakupu from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) where POS=@Elementy_Row@
UPDATE @Elementy@ set [Odliczenia]=(SELECT Kat_Odliczenia+1 from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) where POS=@Elementy_Row@
END
ELSE IF @Elementy_Column@=3
BEGIN
UPDATE @Elementy@ set [Opis2]= (SELECT Kat_opis from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria2] from @Elementy@ where POS=@Elementy_Row@)) WHERE POS=@Elementy_Row@
END
IF @Elementy_Column@=5 or @Elementy_Column@=6 /* Przeliczenie Brutto i wartości VAT po zmianie stawki VAT lub Netto */
BEGIN
declare @Netto decimal (22,4)
SELECT @Netto = [Netto] from @Elementy@ where POS=@Elementy_Row@
select @stawkaVat = isnull (cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0, charindex (' ', Kon_Wartosc , 2))),',','.') as real) , 1)
from CDN_KNF_Konfiguracja.cdn.Konfig /* <<<<--------------- Tu podmiana nazwy bazy >>>> */
where kon_numer = 301 and Kon_KonId = (select [Stawka] from @Elementy@ where POS=@Elementy_Row@) and Kon_wartosc like '%PL'
UPDATE @Elementy@ set [Brutto]= @Netto + (@Netto * (@stawkaVat / 100)) where POS=@Elementy_Row@
UPDATE @Elementy@ set [VAT]= @Netto * (@stawkaVat / 100) where POS=@Elementy_Row@
END
IF @Elementy_Column@=5 or @Elementy_Column@=8 /* Przeliczenie Netto i wartości VAT po zmianie stawki VAT lub Brutto */
BEGIN
declare @Brutto decimal (22,4)
SELECT @Brutto = [Brutto] from @Elementy@ where POS=@Elementy_Row@
select @stawkaVat = isnull (cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0, charindex (' ', Kon_Wartosc , 2))),',','.') as real) , 1)
from CDN_KNF_Konfiguracja.cdn.Konfig /* <<<<--------------- Tu podmiana nazwy bazy >>>> */
where kon_numer = 301 and Kon_KonId = (select [Stawka] from @Elementy@ where POS=@Elementy_Row@) and Kon_wartosc like '%PL'
UPDATE @Elementy@ set [Netto]= @Brutto / ((@stawkaVat/100) + 1) where POS=@Elementy_Row@
UPDATE @Elementy@ set [VAT]= @Brutto / ((@stawkaVat/100) + 1) * (@stawkaVat / 100) where POS=@Elementy_Row@
END
SELECT * from @Elementy@
END
Zapytanie SQL w kontrolce Dane tabelaryczne na zakładce Inicjowanie wartości
Konfiguracja punktu ACD
1. W punkcie konfiguracyjnym ACD (Import dokumentów zakupu KSeF), na zakładce Lista dodano zapytanie, które pobiera pobiera listę faktur z tabel do.KS_Documents, do.KS_WorkAPProcess, do.KS_DocumentHeaders i do.KS_DocumentContractors, filtrując je m.in. po statusie przetworzenia (KSW_Status), operatorze, numerze faktury (KSD_NumerFaktury), NIP, dacie wystawienia (KSH_DataWytworzeniaFa), typie faktury i kwotach.
BEGIN TRY
select d.KSD_ID, NULL, KSD_NumerFaktury, KSD_Tag1, KSD_Tag2, KSD_Tag3
from do.KS_Documents d
left join do.KS_WorkAPProcess W on d.KSD_ID = KSW_DocumentID /*tabela przeprocesowanych dokumentów*/
left join do.KS_DocumentHeaders dh on d.KSD_ID = dh.KSH_DocumentId
left join do.KS_DocumentContractors dc on d.KSD_ID = dc.KSC_DocumentID
where KSW_APDId=@PointId@ /*id punktu ACD */
and KSW_OperatorID=@IdOperatorBPM@ /*dodatkowy warunek, aby na liście operator widział dokumenty przeprocesowane przez siebie*/
and ((@InvoiceStatus@ = 0 and KSW_Status <> 5 and KSW_Archival = 0) OR (@InvoiceStatus@ = 1 and KSW_Archival = 1) OR
(@InvoiceStatus@ = 2 and KSW_Status = 5) OR @InvoiceStatus@ = 3)
and (nullif(@SearchText@,'') is null OR (@SearchText@ <> '' and KSD_NumerFaktury LIKE '%' + @SearchText@ + '%'))
and (@Nip@ is null OR dc.KSC_PodatnikNIP = @Nip@)
and (@DateFrom@ is null or dh.KSH_DataWytworzeniaFa >= @DateFrom@)
and (@DateTo@ is null or dh.KSH_DataWytworzeniaFa <= @DateTo@)
and (@GrossAmountFrom@ is null or KSD_SumaBrutto >= @GrossAmountFrom@)
and (@GrossAmountTo@ is null or KSD_SumaBrutto <= @GrossAmountTo@)
and (@InvoiceType@ is null or KSD_RodzajFaktury = @InvoiceType@)
END TRY
BEGIN CATCH
DECLARE @ErrorMessage varchar(max) = 'W zapytaniu wystąpił błąd : ' + ERROR_MESSAGE();
THROW 50001, @ErrorMessage ,1;
END CATCH
2. W zakładce Kontrolki dodano kontrolkę ID_KSeF, której przypisano zapytanie pobierające identyfikator dokumentu KSEF. Jednocześnie zdefiniowano odpowiednie zapytania SQL dla pozostałych kontrolek, które służą do automatycznego pobierania i wyświetlania danych bezpośrednio z systemu KSeF:
Załączniki
select KSD_SourceContent,CASEWHEN KSD_NumerFaktury LIKE '%/%'
THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.pdf')ELSE CONCAT(KSD_NumerFaktury, '.pdf')END AS modified_columnfrom do.KS_Documentswhere KSD_ID=@Id1@
Załącznik XML
select KSD_Xml,CASEWHEN KSD_NumerFaktury LIKE '%/%'
THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.xml')ELSE CONCAT(KSD_NumerFaktury, '.xml')END AS modified_columnfrom do.KS_Documentswhere KSD_ID=@Id1@
Dokument
select KSD_NumerFaktury from do.KS_Documents where KSD_ID=@Id1@
Kontrahent
select top 1 Knt_KntId, Knt_Kod
from [do].[KS_DocumentContractors]
join [CDN_Optima].[cdn].[Kontrahenci] on Knt_Nip = KSC_PodatnikNIP
where KSC_DocumentId=@Id1@
Data zakupu
SELECT CASE
WHEN KSD_DataDostawy IS NULL THEN KSD_DataWystawienia
ELSE KSD_DataDostawy
END
FROM do.KS_Documents WHERE KSD_ID=@id1@
Data wpływu
select KSH_DataWytworzeniaFa from do.KS_DocumentHeaders where KSH_DocumentID=@Id1@
Data wystawienia
select KSD_DataWystawienia from do.KS_Documents where KSD_ID=@Id1@
Forma płatności
SELECT
(
CASE
WHEN KSD_FormaPlatnosci = 1 THEN 'Gotówka'
WHEN KSD_FormaPlatnosci = 2 THEN 'Karta'
WHEN KSD_FormaPlatnosci = 3 THEN 'Bon'
WHEN KSD_FormaPlatnosci = 4 THEN 'Czek'
WHEN KSD_FormaPlatnosci = 5 THEN 'Kredyt'
WHEN KSD_FormaPlatnosci = 6 THEN 'Przelew'
WHEN KSD_FormaPlatnosci = 7 THEN 'Płatność Mobilna'
ELSE 'Inna'
END
) AS FormaPlatnosci
FROM
do.KS_DocumentsWHERE KSD_Id=@ID1@
Termin płatności
select KSP_TerminPlatnosci from do.KS_PaymentDates where KSP_DocumentID=@Id1@
Numer KSeF
select KSH_NumerReferencyjnyKSeF
from do.KS_DocumentHeaderswhere KSH_DocumentID=@Id1@
Waluta
select KSD_KodWaluty from do.KS_Documents where KSD_ID=@Id1@
IDKSeF
select @Id1@
Data przyjęcia KSeF
select KSH_DataWytworzeniaFa from do.KS_DocumentHeaders where KSH_DocumentID=@Id1@
Numer rachunku bankowego
select KSB_NrRachunku from do.KS_BankAccounts
join do.KS_Documents on ksb_documentId= KSD_Id where ksd_id=@Id1@
Kontrolka ID_KSeF w punkcie ACD
Uzupełnione dane w punkcie ACD
Po pomyślnym pobraniu dokumentu z KSeF w punkcie ACD (Import dokumentów zakupu z KSeF), dane nagłówkowe oraz identyfikator dokumentu uzupełniły się automatycznie w kontrolkach na podstawie danych odczytanych z pliku XML.
Dane pobrane z KSeF w punkcie ACD
Uzupełniona Kontrolka Dane Tabelaryczne
Na podstawie przetworzonych danych z KSeF, w systemie Comarch BPM są generowane dokumenty w ramach wskazanej definicji typu obiegu.
Po pomyślnym zainicjowaniu nagłówka dokumentu, system dokonuje pełnego uzupełnienia skonfigurowanych kontrolekna karcie obiegu.
Kontrolka typu Dane Tabelaryczne zostaje automatycznie wypełniona pozycjami odczytanymi z dokumentu. Wypełnienie to odbywa się z wykorzystaniem dedykowanego zapytania SQL, które dokonuje normalizacji stawek VAT oraz przeliczeń kwot (Netto/Brutto).
Kluczowe jest to, że kontrolka techniczna ID_KSeF (która przechowuje wewnętrzny identyfikator pobranego dokumentu KSeF) jest obserwowana przez kontrolkę Dane Tabelaryczne i na podstawie jej wartości (@ID_KSeF@w zapytaniu SQL) kontrolka Danych Tabelarycznych jest uzupełniana danymi.
Uwaga
Kolumny Kategoria oraz Kategoria 2 w kontrolce dane tabelaryczne są inicjowane wartością null. Wynika to z faktu, że nazewnictwo pozycji na fakturach dostawców w systemie KSeF często nie jest tożsame z nazewnictwem w Comarch ERP Optima. Wymaga to od użytkownika świadomego, ręcznego przypisania odpowiedniej kategorii oraz kategorii pomocniczej (jeżeli jest taka potrzeba) przed zaksięgowaniem dokumentu, aby zapewnić poprawność analityczną zapisów.
Kontrolka Dane tabelaryczne uzupełniona pozycjami odczytanymi z KSeF
Pozostałe dane uzupełnione na karcie obiegu
Po pomyślnym zainicjowaniu dokumentu z poziomu ACD, pozostałe dane na karcie obiegu zostały prawidłowo uzupełnione. System automatycznie przypisał nie tylko dane podstawowe, takie jak numer dokumentu, czy dane kontrahenta, ale również precyzyjnie rozbił pozycje faktury na poszczególne stawki VAT (23% oraz 8%). Prawidłowo przeniesiono także numer rachunku bankowego oraz unikalny numer KSeF, co gwarantuje pełną spójność danych między obiegiem dokumentów, a systemem Comarch ERP Optima.
Uzupełnione dane na karcie obiegu pobrane z KSeF
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?