W wersji 2024.0.0 został dodany nowy typ punktu ACD, który służy do współpracy z KSeF – „Import dokumentów zakupu z KSeF”.
Klucz może przybierać jedną z następujących wartości:
1.Demo – w przypadku wprowadzenia takiej wartości praca z systemem KSeF odbywa się w trybie Demo;
2.Production – wartość domyślna od wersji 2026.0.0; w przypadku wprowadzenia takiej wartości praca z systemem KSeF odbywa się w trybie Produkcyjnym, czyli wersji produkcyjnej systemu;
3.Test – w przypadku wprowadzenia takiej wartości praca z systemem KSeF odbywa się w trybie testowym.
W kwestii różnic pomiędzy powyższymi trybami zob. Przełączanie trybu pracy z KSeF
W wersji 2026.0.0 w pliku Web.config w folderze aplikacji serwerowej (dawnej web) wprowadzono nowy klucz “KSeFProdVersion“, który ma umożliwić zmianę wersji KSeF dla pracy w trybie produkcyjnym. Klucz może przyjmować jedną z następujących wartości:
- 1 – wartość domyślna w wersji 2026.0.0; możliwa jest praca w trybie produkcyjnym KSeF 1.0
- 2 – możliwa jest praca w trybie produkcyjnym KSeF 2.0
Praca w trybie produkcyjnym KSeF 2.0 będzie możliwa jedynie wtedy, gdy <add key=”KSeFWorkMode” value=”Production” /> oraz <add key=”KSeFProdVersion” value=”2″ /> – ten tryb pracy będzie aktywny dopiero po uruchomieniu przez Ministerstwo Finansów środowiska produkcyjnego KSeF 2.0, tj. po 01.02.2026.
Klucz “KSeFProdVersion“ nie wpływa na pracę w trybie „Test“ oraz „Demo“.
Zakładka Tryb współpracy
Aby utworzyć punkt konfiguracyjny typu „Import dokumentów zakupu z KSeF” należy w oknie „Automatyczne generowanie dokumentów” dodać nowy punkt konfiguracyjny za pomocą ikony
, a następnie na liście trybów pracy punktu wybrać opcję „Import dokumentów zakupu z KSeF” .

Zakładka Ogólne
Wygląd zakładki „Ogólne” jest zależny od trybu pracy Comarch BPM (dawniej DMS).
W trybie jednospółkowym na zakładce należy w ramach pola:
- Nazwa punktu – określić nazwę pod jaką punkt konfiguracyjny będzie widoczny na liście punktów;
- Typ obiegu – wskazać typ obiegu, w ramach którego będą generowane dokumenty zawierające dane z KSeF; od wersji 2026.0.0 należy dokonać wyboru jednego lub wielu typów obiegów – po kliknięciu w pole rozwijana jest lista wszystkich typów obiegów dostępnych w systemie, a administrator powinien zaznaczyć checkbox obok jednego lub więcej typu obiegu – liczba zaznaczonych typów obiegów może być dowolna. Jeśli lista jest długa, po prawej stronie dostępny jest suwak.
Gdy operator zaznaczy typy obiegów i kliknie obok listy, wówczas zostanie ona zamknięta, a w polu „Typ obiegu“ będzie widoczny napis „Wybrano: [liczba wybranych typów obiegów]“.
Jeżeli Comarch BPM (dawniej DMS) pracuje w trybie jednospółkowym, wówczas komunikacja z KSeF odbywa się na podstawie danych (numeru NIP firmy oraz tokena uwierzytelniającego), które zostały podane w ramach zakładki „KSeF” na zakładce
[Ustawienia].(zob. Integracje (dawna zakładka „KSeF”)).


W trybie wielospółkowym na zakładce należy w ramach pola:
- Nazwa punktu – określić nazwę pod jaką punkt konfiguracyjny będzie widoczny na liście punktów;
- Spółka – wskazać spółkę, dla której będzie odbywać się komunikacja z KSeF – na podstawie numeru NIP oraz/albo tokenu, które zostały zapisane podczas konfiguracji danej spółki na zakładce „Połączenia z ERP” na zakładce
[Ustawienia].(zob. Połączenia z ERP). Zapytania, które są wprowadzane na zakładkach „Lista” oraz „Kontrolki” również są wykonywane w kontekście bazy danej spółki; - Typ obiegu – wskazać typ obiegu, w ramach którego będą generowane dokumenty zawierające dane z KSEF; od wersji 2026.0.0 należy dokonać wyboru jednego lub wielu typów obiegów – po kliknięciu w pole rozwijana jest lista wszystkich typów obiegów dostępnych w systemie, a administrator powinien zaznaczyć checkbox obok jednego lub więcej typu obiegu – liczba zaznaczonych typów obiegów może być dowolna. Jeśli lista jest długa, po prawej stronie dostępny jest suwak.
Gdy operator zaznaczy typy obiegów i kliknie obok listy, wówczas zostanie ona zamknięta, a w polu „Typ obiegu“ będzie widoczny napis „Wybrano: [liczba wybranych typów obiegów]“.

- Nazwy atrybutów na liście dokumentów w punkcie ACD – w wersji 2025.0.0 na zakładce „Ogólne” na punkcie konfiguracyjnym punktu ACD typu „Import dokumentów zakupu z KSeF” dodano pole „Nazwy atrybutów na liście dokumentów w punkcie ACD”, w ramach którego dostępne są pola: „Atrybut 1”, Atrybut 2” i „Atrybut 3”. Nowododane pola umożliwiają wprowadzenie dodatkowych informacji opisujących daną fakturę, co pozwala na bardziej szczegółową identyfikację i klasyfikację dokumentów w procesie ich przetwarzania.
W ramach pól „Atrybut 1”, „Atrybut 2” i „Atrybut 3” można zdefiniować maksymalnie 3 nazwy dodatkowych pól (atrybutów), które będą widoczne na liście dokumentów w punkcie ACD jako nazwy kolumn.
Informacje o nazwach atrybutów/kolumn są dostępne w tabeli do.DF_ConfAPDictionary.
Jeśli uprawniony operator nie wprowadzi żadnej nazwy atrybutu, wówczas kolumny z atrybutami nie zostaną utworzone, a na liście dokumentów będzie widoczna tylko jedna kolumna „Dokument”.
Jeżeli operator wprowadzi wartość w jednym z dodatkowych pól (atrybutów), wówczas na liście będzie widoczna jedna dodatkowa kolumna z taką nazwą, jaką wprowadzono w polu; analogicznie, jeśli uzupełniono dwa pola, będą widoczne dwie dodatkowe kolumny.

- Zmiana wartości na podstawie kontrolek obserwowanych (Obserwatory) – pole dodane w wersji 2026.0.0; umożliwia wyłączenie obserwatorów, które wykonują się w czasie dodawania dokumentów do obiegu z punktu ACD. Jeśli w polu parametru:
-
- Wybrano wartość „Włączona” – wartości kontrolek mogą zostać nadpisane podczas generowania dokumentu do obiegu, zgodnie z kontrolkami obserwowanymi; wartość domyślna;
- Wybrano wartość „Wyłączona” – wartości kontrolek nie zostaną nadpisane zgodnie z kontrolkami obserwowanymi podczas generowania dokumentu do obiegu (wartości zgodne z podglądem w punkcie ACD).
Zakładka Lista
Na zakładce „Lista”, analogicznie do pozostałych trybów pracy punktów konfiguracyjnych, należy za pomocą zapytania SQL określić listę dokumentów, która będzie wyświetlana w oknie ACD po pobraniu plików z KSeF.
Zapytanie SQL wprowadzone na zakładce „Lista” w ramach konfiguracji punktu ACD typu „Import dokumentów zakupu z KSeF” jest odmienne od zapytań SQL dla innych typów punktów ACD, różni się także od zapytania SQL dotychczas wprowadzanego w ramach punktu ACD typu „Import dokumentów zakupu z KSeF”.
Przykład zapytania wyświetlającego listę dokumentów.
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

Można wprowadzić alternatywne wersje zapytania – w takim przypadku, jeśli wyszukiwanie na liście w punkcie ACD ma uwzględniać wszystkie dane, jakie są na niej widoczne, należy analogicznie zmodyfikować także warunki wyszukiwania – np. tak jak w poniższym przykładzie.
- w ramach kolumny „Dokument” oprócz numeru dokumentu wyświetlane są dodatkowe dane: data wystawienia, nazwa kontrahenta i NIP kontrahenta
- dostępne są kolumny 3 atrybutów (o nazwach określonych na zakładce „Ogólne”)
- wyszukiwanie odbywa się w zakresie wszystkich czterech kolumn („Dokument” z dodatkowymi informacjami oraz w kolumnach atrybutów)
BEGIN TRY SELECT d.KSD_Id, NULL, KSD_NumerFaktury + ' | ' + CONVERT(varchar, KSD_Datawystawienia, 104) + ' | ' + KSC_PodatnikNazwa + ' | ' + KSC_PodatnikNIP, 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 + ' | ' +CONVERT(varchar, KSD_Datawystawienia, 104) + ' | ' + KSC_PodatnikNazwa + ' | ' + KSC_PodatnikNIP LIKE '%' + @SearchText@ + '%')) OR (@SearchText@ <> '' and KSD_Tag1 LIKE '%' + @SearchText@ + '%') OR (@SearchText@ <> '' and KSD_Tag2 LIKE '%' + @SearchText@ + '%') OR (@SearchText@ <> '' and KSD_Tag3 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


Zakładka Kontrolki
Na zakładce „Kontrolki” za pomocą zapytań SQL należy wskazać wartości, które będą wyświetlane w poszczególnych kontrolkach po przeprocesowaniu dokumentu.
Przykłady zapytań SQL dla faktur pobranych z KSeF są dostępne w artykule: Przykłady zapytań SQL w zakładce Kontrolki dla punktu ACD „Import dokumentów zakupu z KSeF”
W wersji 2026.0.0 zmodyfikowano zakładkę „Kontrolki” w taki sposób, aby możliwe było odrębne definiowanie mapowania kontrolek dla każdego typu obiegu wybranego na zakładce „Ogólne”.
W tym celu w górnej części zakładki dodano pole, po kliknięciu w które rozwijana jest lista typów obiegów przypisanych do danego punktu ACD na zakładce „Ogólne“. Gdy zostanie wybrany typ obiegu, wówczas poniżej dostępny będzie obszar, w ramach którego można zdefiniować kontrolki dla danego typu obiegu. Pozostałe ustawienia dotyczące zakładki „Kontrolki“ nie ulegają zmianie – aby dodać kontrolkę do mapowania, należy kliknąć w przycisk
[Dodaj], a następnie wprowadzić odpowiednie zapytanie SQL w polu znajdującym się po prawej stronie okna. Mapowanie danej kontrolki można usunąć, klikając w ikonę kosza
na prawo od nazwy kontrolki



Od wersji 2024.3.0 operator może dodawać plik pdf z dokumentem KSeF do kontrolki typu Załącznik. W tym celu powinien w ramach konfiguracji punktu ACD typu „Import dokumentów zakupu z KSeF” wykonać kolejno następujące czynności:
- na zakładce „Ogólne” w polu „Typ obiegu” wybrać typ obiegu, w ramach którego znajduje się kontrolka typu Załącznik;
- na zakładce „Kontrolki” wybrać dany typ obiegu (od wersji 2026.0.0), następnie kontrolkę typu Załącznik i w ramach pola po prawej stronie okna wprowadzić zapytanie SQL – w poniższym przykładzie nazwą pliku będzie nazwa faktury:
Select KSD_SourceContent, CASE WHEN KSD_NumerFaktury LIKE '%/%' THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.pdf') ELSE CONCAT(KSD_NumerFaktury, '.pdf') END AS modified_column from do.KS_Documents where KSD_ID=@Id1@


Od wersji 2025.0.0 w ramach zakładki „Kontrolki” uprawniony operator może zdefiniować zapytanie SQL, które przeniesie dane z wybranego atrybutu na określoną kontrolkę typu Tekst.
Zapytania SQL dla poszczególnych atrybutów:
- Dla pola „Atrybut 1”
select KSD_Tag1 from do.KS_Documents where KSD_ID=@Id1@
- Dla pola „Atrybut 2”
select KSD_Tag2 from do.KS_Documents where KSD_ID=@Id1@
- Dla pola „Atrybut 3”
select KSD_Tag3 from do.KS_Documents where KSD_ID=@Id1@

- kontrolka typu Kontrahent „Kontrahent”
- kontrolka typu Tekst „NIP”
- kontrolka typu Data i godzina „Data wystawienia”
W poniższym przykładzie jest to typ obiegu „Faktury zakupu KSeF”.
2. Na zakladce „Ogólne” w ramach pola „Nazwy atrybutów na liście dokumentów w punkcie ACD” wprowadza:- w polu „Atrybut 1” – Kontrahent
- w polu „Atrybut 2” – NIP
- w polu „Atrybut 3” – Data wystawienia

3. Na zakładce „Kontrolki” wybiera typ obiegu, w którym znajdują się kontrolki omówione w punkcie 1 (w tym przykladzie typ obiegu „Faktury zakupu KSeF”). Następnie za pomocą przycisku „Dodaj” dodaje kolejne mapowania kontrolek, wprowadzając dla nich nastepujące zapytania SQL:
- Kontrahent
UPDATE [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] SET KSD_Tag1 = CAST(KSC_PodatnikNazwa AS VARCHAR(255)) FROM [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] JOIN [nazwa_bazy_Comarch_BPM].[do].[KS_DocumentContractors] on KSC_DocumentId = KSD_Id WHERE KSD_Id = @Id1@; -- 2. Pobranie danych do wyświetlenia w kontrolce SELECT TOP 1 Knt_GidNumer, Knt_Akronim FROM [nazwa_bazy_Comarch_BPM].[do].[KS_DocumentContractors] JOIN [nazwa_bazy_Comarch_ERP_XL].[cdn].[KntKarty] ON Knt_Nip = KSC_PodatnikNIP WHERE KSC_DocumentId = @Id1@;
- NIP
UPDATE [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] SET KSD_Tag2 = CAST(KSC_PodatnikNIP AS VARCHAR(255)) FROM [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] JOIN [nazwa_bazy_Comarch_BPM].[do].[KS_DocumentContractors] on KSC_DocumentId = KSD_Id WHERE KSD_Id = @Id1@; -- 2. Pobranie danych do wyświetlenia w kontrolce SELECT KSC_PodatnikNIP FROM [nazwa_bazy_Comarch_BPM].[do].[KS_DocumentContractors] JOIN [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] on KSC_DocumentId = KSD_Id WHERE KSD_ID = @Id1@;
- Data wystawienia
-- 1. Aktualizacja pola KSD_Tag3 sformatowaną datą UPDATE [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] SET KSD_Tag3 = CONVERT(varchar(10), KSD_Datawystawienia, 104) WHERE KSD_Id = @Id1@; -- 2. Pobranie danych do wyświetlenia w kontrolce SELECT KSD_Datawystawienia FROM [nazwa_bazy_Comarch_BPM].[do].[KS_Documents] WHERE KSD_Id = @Id1@;

4. Operator zapisuje zmiany wprowadzony w punkcie ACD, klikając w przycisk „Zapisz”.
Rezultat zmian w konfiguracji punktu ACD: Po pobraniu listy faktur w punkcie ACD dane – kontrahent, numer NIP i data wystawienia- są widoczne na podglądzie kontrolek do zmapowania oraz w ramach atrybutów na liście dokumentów.
W przypadku problemów z wyświetleniem danych należy nacisnąć raz lub dwukrotnie przycisk „Odśwież”.
Należy pamiętać, że w przypadku ręcznej modyfikacji wartości atrybutów powrócą one do poprzednich, zmapowanych wartości, gdy lista będzie odświeżana.

W wersji 2025.1.0 umożliwiono zapis pliku XML z KSeF do bazy Comarch BPM (dawniej DMS), tak, aby możliwe było dodanie go w ramach kontrolki typu Załącznik.
W tym celu podczas konfiguracji punktu ACD typu „Import dokumentów zakupu z KSeF” na zakładce „Kontrolki” należy po lewej stronie okna wybrać kontrolkę typu Załącznik, do której ma zostać dodany plik xml, a następnie po prawej stronie, w ramach edytora wprowadzić następujące zapytanie SQL:
Select KSD_Xml, CASE WHEN KSD_NumerFaktury LIKE '%/%' THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.xml') ELSE CONCAT(KSD_NumerFaktury, '.xml') END AS modified_column from do.KS_Documents where KSD_ID=@Id1@

Gdy definicja punktu ACD została zapisana, wówczas podpięty plik załącznika XML można zobaczyć w oknie punktu ACD.

Po wygenerowaniu dokumentu BPM (dawniej DMS) plik XML jest dostępny w ramach kontrolki typu Załącznik wybranej na definicji punktu ACD. Podobnie jak w przypadku innych plików dołączanych do kontrolki typu Załącznik, plik XML można usunąć za pomocą ikony
lub zapisać na dysku, klikając w ikonę
, a następnie wybierając odpowiednią lokalizację i naciskając „Zapisz”.

Zakładka Uprawnienia
Na zakładce „Uprawnienia” należy wskazać pracowników, którzy będą mogli procesować dokumenty w ramach punktu.
Uprawnienia mogą być dodawane wyłącznie poprzez wskazanie pracowników, nie ma możliwości dodania uprawnień dla pracowników wskazanego działu czy pracowników zajmujących określone stanowisko.
Na zakładce „Uprawnienia” w ramach typu punktu konfiguracyjnego „Import dokumentów zakupu z KSeF” znajduje się także dodatkowa kolumna „Edycja dokumentu”.
Jeśli operator zaznaczy obok danego pracownika checkbox w ramach kolumny „Edycja dokumentu”, wówczas taki pracownik będzie mógł zmieniać wartości w kontrolkach bezpośrednio w punkcie ACD.


Na każdej zakładce znajduje się ikona
[Eksport], która umożliwia eksportowanie danego punktu ACD do zapisu na dysk (zob. Eksport punktu ACD). Istnieje również możliwość importu punktu konfiguracyjnego typu „Import dokumentów zakupu z KSeF”, podobnie jak w przypadku innych typów punktów ACD.( zob. Import punktu ACD).




