Zmiany i poprawki dotyczące interfejsu aplikacji web
Zmiany funkcjonalne w wersji 2026.0.0
W wersji 2026.0.0 w aplikacji web Comarch BPM wprowadzono następujące zmiany dotyczące interfejsu:
Nowy komunikat wyświetlany przy próbie przekazania z listy, gdy warunki przekazania nie zostały spełnione
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
Rozszerzenie pola „Komentarz”
Zarówno w aplikacji web, jak i w Repozytorium zwiększono liczbę znaków, które można wprowadzić w ramach pola „Komentarz”, znajdującego się w panelu szczegółów przekazania – z 255 znaków do 900 znaków. Tak jak dotychczas operator może rozciągnąć pole komentarza, chwytając w prawym dolnym rogu i rozciągając je. Jeżeli ilość znaków przekracza dostępne miejsce w polu komentarza, wówczas zostanie wyświetlony suwak.
Pole komentarza, w którym wprowadzono 900 znaków (aplikacja web)
Wprowadzenie separacji tysięcy w kontrolkach i kolumnach liczbowych
Wartość w kontrolkach i kolumnach liczbowych (typu Liczba całkowita, Liczba stałoprzecinkowa i Liczba rzeczywista) jest prezentowana w formacie, który umożliwia oddzielenie części tysięcy za pomocą spacji, np. 999 939.
Widok przykładowych wartości w kolumnach liczbowych w kontrolce typu Dane tabelaryczne
Zmiany dotyczące wyboru daty w kontrolce typu Data i godzina
W ramach kontrolki typu Data i godzina umożliwiono ręczne wprowadzanie daty, bez konieczności otwierania kalendarza, aby wybrać datę. Datę można wprowadzić zgodnie z formatem dd.mm.rrrr, wprowadzona data musi też odpowiadać rzeczywistości (nie można wprowadzić takiej daty jak np. 33.77.2012).
Data wprowadzona ręcznie w kontrolce typu Data i godzina
Ręczne wprowadzenie daty jest równoznaczne z zaznaczeniem jej w kalendarzu – jeśli operator otworzy kalendarz, np. klikając w przycisk „Enter” w ramach danej kontrolki typu Data, wówczas poprawnie wprowadzona data jest oznaczona na niebiesko w kalendarzu.
Umożliwiono obsługę klawiatury dla kontrolki typu Data i godzina – wobec tego:
Wybór daty można zatwierdzić za pomocą przycisku „Enter”, zaś po kliknięciu w przycisk „Tab” nastąpi przejście do kolejnego elementu;
Operator może przejść do poprzedniego elementu, wybierając kombinację przycisków „Shift” + „Tab”
Jeśli focus jest ustawiony na danym elemencie, wówczas za pomocą przycisku „Enter” operator może wywołać akcję – przykładowo kliknięcie w strzałkę w lewo zmieni miesiąc na poprzedni, a w strzałkę w prawo – na następny;
Operator może poruszać się w obrębie danego miesiąca w kalendarzu za pomocą strzałek w lewo/w prawo – jedynie w obrębie jednego miesiąca, z wyjątkiem pierwszego i ostatniego tygodnia miesiąca. Klikanie w strzałki góra/dół pozwala na zmianę miesiąca na poprzedni/następny;
Jeśli dla kontrolki wybrano opcję „Tak” dla parametru „Czas”, wówczas operator może zmienić godziny i minuty za pomocą strzałek góra/dół
Zmiany w aplikacjach mobilnych Comarch BPM
Zmiany funkcjonalne w wersji 2026.0.0
W wersji 2026.0.0 w aplikacjach mobilnych wprowadzono następujące poprawki i zmiany ergonomiczne:
Umożliwienie uruchomienia zdefiniowanych wydruków (raportów) z poziomu karty obiegu
W wersji 2026.0.0 w aplikacjach mobilnych Comarch BPM na systemy: Android i iOS umożliwiono uruchomienie zdefiniowanych wydruków (raportów) z poziomu karty obiegu. Z tego powodu wprowadzono następujące zmiany:
W ramach karty obiegu usunięto ikonę kosza i wprowadzono zamiast niej menu kontekstowe ( dla aplikacji na Android, dla aplikacji na iOS), w którym dostępne są dwie opcje:
Generuj wydruk – opcja dostępna, jeśli w aplikacji desktop na zakładce [Struktura organizacyjna] na karcie pracownika, na zakładce „Uprawnienia”, w ramach sekcji „Praca z dokumentem” zaznaczono „Tak” w polu „Wydruk standardowy”; po wyborze tej opcji otwierane jest okno wydruku
Usuń dokument – opcja dostępna, jeśli w aplikacji desktop na zakładce [Struktura organizacyjna] na karcie pracownika, na zakładce „Uprawnienia”, w ramach sekcji „Praca z dokumentem” zaznaczono „Tak” w polu „Usuwanie dokumentów”; po kliknięciu w tę opcję dany dokument zostanie usunięty
Nowe menu rozwijane na karcie obiegu (Android)
Nowe menu rozwijane na karcie obiegu (iOS)
Okno wydruku (Android)
Okno wydruku (iOS)
W aplikacji na system Android na zakładce „Konto” dodano nową sekcję „Wydruk dokumentów”, w ramach której operator może zaznaczyć opcję „Ukryj przebieg etapów” – wówczas na wydruku nie będzie widoczny przebieg etapów dla danego dokumentu. Analogiczne ustawienie dotyczące ukrywania etapów zostało dodane bezpośrednio na zakładce „Konto” w aplikacji iOS.
Zakładka „Konto“ z nową sekcją „Wydruk dokumentów (Android)
Sekcja „Wydruk dokumentów“ (Android)
Ogólne zmiany w aplikacji na Android
W ramach aplikacji mobilnej na Android wprowadzono dodatkowo następujące zmiany:
Opcja czyszczenia wszystkich filtrów (także typu lub/oraz rodzaju) dla dokumentów za pomocą jednego przycisku – „Usuń filtry“, tak, aby przywrócone zostały początkowe ustawienia listy dokumentów („U mnie”, „Wszystkie typy”, „Filtry”);
Widok przycisku „Usuń filtry“ w aplikacji na Android
Skalowanie załączników – kiedy operator otworzy podgląd załącznika tak, że można go przybliżać, wówczas obszar przybliżenia jest zmaksymalizowany na cały widok (podgląd ma być widoczny w całości, można przybliżyć załącznik na całym obszarze widoku).
Ogólne zmiany w aplikacji na iOS
W ramach aplikacji mobilnej na iOS wprowadzono dodatkowo następujące zmiany:
Ukrywanie klawiatury tak, aby nie zasłaniała wartości na liście i zatwierdzanie tekstu w aktywnym polu – do klawiatury dodano przycisk systemowy „Gotowe“ („Done“), w który można kliknąć, aby zamknąć klawiaturę;
Widok przycisku „Done“ („Gotowe“) w aplikacji na iOS
Uzupełnianie pól tekstowych rozpoczyna się automatycznie wielką literą;
Rozwiązanie problemu ergonomicznego dotyczącego zapisu kontrolki typu Dokumenty w obiegu – zlikwidowanie automatycznego focusa, gdy wybrano przycisk „Dodaj“, tak, aby jako pierwszy wyświetlał się pełny komunikat z opcją tworzenia nowego dokumentu w ramach obiegu, nieprzysłonięty klawiaturą.
Pobieranie danych z KSeF do kontrolki tabelarycznej Elementy na Fakturze zakupu XL
Zastosowanie
Dzięki zastosowaniu tej zintegrowanej konfiguracji, proces obiegu faktur zakupu 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 wartości przy zmianie ceny, ilości lub stawki VAT.
Minimalizacja błędów i skrócenie czasu obsługi faktury: Proces akceptacji bazuje na poprawnych i spójnych danych, które są weryfikowane przed zaksięgowaniem w systemie Comarch ERPXL.
Zawartość przykładu
Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu zakupu z krokami akceptacji, konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERPXL
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.KntKarty należy wskazać właściwą nazwę bazy Comarch ERXL.
Mechanizm opiera się na dwóch trybach działania zintegrowanych w jednej kontrolce Dane Tabelaryczne (Elementy), wykorzystując dane z bazy Comarch BPM, które zostały zapisane po przetworzeniu faktury z KSeF w punkcie ACD.
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 to 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.
W zapytaniu SQL zawarta jest niezbędna logika konwersji (CTE z ROW_NUMBER), która mapuje stawki VAT z KSeF na identyfikatory liczbowe (Naz_GIDLp) z tabeli CDN.Nazwy, których BPM wymaga do poprawnego wyświetlania danych w kolumnie typu Lista (Stawka VAT).
Dodatkowo, kontrolka Dane Tabelaryczne (Elementy) obserwuje sama siebie (@^SenderControlName@ = ’Elementy’), co aktywuje logikę automatycznego przeliczania wartości w trybie edycji:
Zapytanie monitoruje zmiany w kolumnach wejściowych, takich jak Cena lub Ilość (oraz Stawka VAT).
W przypadku edycji tych pól, skrypt automatycznie pobiera stawkę VAT, a następnie przelicza i aktualizuje wartości Netto (Ilość * Cena) oraz Brutto (Netto * (1 + VAT)) w bieżącym wierszu.
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:
”Towar” (identyfikator kolumny: Towar) – typ Towar
”Nazwa” (identyfikator kolumny: Nazwa) – typ Tekst
”Cena” (identyfikator kolumny: Cena) – typ Liczba stałoprzecinkowa
”Ilość” (identyfikator kolumny: Ilosc) – typ Liczba stałoprzecinkowa
”Netto” (identyfikator kolumny: Netto) – typ Liczba stałoprzecinkowa
”Stawka VAT” (identyfikator kolumny: StawkaVAT) – typ Lista
”Brutto” (identyfikator kolumny: Brutto) – typ Liczba stałoprzecinkowa
Kolumny w kontrolce Dane tabelaryczne
3. W kontrolce typu Dane tabelaryczne na zakładce Listy zdefiniowano zapytanie pobierające:
Stawki VAT:
select Naz_gidLp as Id,
CASE
WHEN Naz_Nazwa='A 23.00' THEN '23%'
WHEN Naz_Nazwa='B 8.00' THEN '8%'
WHEN Naz_Nazwa='C 0.00' THEN '0%'
WHEN Naz_Nazwa='D 0.00' THEN 'ZW'
WHEN Naz_Nazwa='E 0.00' THEN 'NP'
WHEN Naz_Nazwa='F 7.00' THEN '7%'
WHEN Naz_Nazwa='G 5.00' THEN '5%'
END
from CDN.Nazwy
where Naz_GIDTyp = 624 AND trim(substring(Naz_Nazwa,9,2))=''
Lista Stawka VAT w kontrolce Dane tabelaryczne
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). Zapytanie inicjuje kolumnę Towar jako wartość NULL, którą użytkownik powinien uzupełnić ręcznie.
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:
IF @^SenderControlName@ = 'ID_KSeF' /*Identyfikator kontrolki do której pobierane jest ID dokumentu KSeF */
BEGIN
/* Tryb 1: Inicjowanie wierszy z dokumentu KSeF */
WITH ProcessedDocumentItems AS (
/* CTE 1: Ujednolicenie stawek VAT, tabela KSI_ElementStawkaVAT */
SELECT
KSI_ElementNazwa,
KSI_ElementCenaNetto,
KSI_ElementIlosc,
KSI_ElementWartoscNetto,
KSI_ElementStawkaVAT,
CASE
WHEN di.KSI_ElementStawkaVAT LIKE 'Stawka%' THEN LTRIM(RTRIM(SUBSTRING(di.KSI_ElementStawkaVAT, 7, LEN(di.KSI_ElementStawkaVAT) - 6)))
WHEN di.KSI_ElementStawkaVAT = 'zw' THEN 'ZW'
WHEN di.KSI_ElementStawkaVAT = 'np' THEN 'NP'
ELSE di.KSI_ElementStawkaVAT
END AS StandardizedStawkaVAT
FROM
[BPM_Przyklady].do.KS_DocumentItems AS di /*Należy wskazać nazwę bazy BPM*/
WHERE KSI_DocumentId = @ID_KSeF@ /*Identyfikator kontrolki liczba całkowita, do której pobierane jest ID dokumentu KSeF*/
),
ProcessedNazwyRanked AS (
/* CTE 2: Porządkowanie stawek VAT z tabeli słownikowej (CDN.Nazwy), w celu zapewnienia unikalności */
SELECT
Naz_GIDLp,
Naz_Nazwa1,
CASE
WHEN LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%ZW%' THEN 'ZW'
WHEN LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%NP%' THEN 'NP'
WHEN CHARINDEX(' ', LTRIM(RTRIM(n.Naz_Nazwa1))) > 0 THEN LTRIM(RTRIM(SUBSTRING(n.Naz_Nazwa1, 1, CHARINDEX(' ', n.Naz_Nazwa1) - 1)))
ELSE LTRIM(RTRIM(n.Naz_Nazwa1))
END AS StandardizedNazwa1_ForJoin,
CASE
WHEN LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%ZW%' OR LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%NP%' THEN 0.00
WHEN ISNUMERIC(
CASE
WHEN CHARINDEX(' ', LTRIM(RTRIM(n.Naz_Nazwa1))) > 0 THEN LTRIM(RTRIM(SUBSTRING(n.Naz_Nazwa1, 1, CHARINDEX(' ', n.Naz_Nazwa1) - 1)))
ELSE LTRIM(RTRIM(n.Naz_Nazwa1))
END
) = 1 THEN CAST(
CASE
WHEN CHARINDEX(' ', LTRIM(RTRIM(n.Naz_Nazwa1))) > 0 THEN LTRIM(RTRIM(SUBSTRING(n.Naz_Nazwa1, 1, CHARINDEX(' ', n.Naz_Nazwa1) - 1)))
ELSE LTRIM(RTRIM(n.Naz_Nazwa1))
END
AS DECIMAL(5, 2)) / 100.0
ELSE 0.00
END AS CalculatedVATRate,
/* Numerujemy rekordy dla tego samego klucza łączenia. */
ROW_NUMBER() OVER (PARTITION BY
CASE
WHEN LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%ZW%' THEN 'ZW'
WHEN LTRIM(RTRIM(n.Naz_Nazwa1)) LIKE '%NP%' THEN 'NP'
WHEN CHARINDEX(' ', LTRIM(RTRIM(n.Naz_Nazwa1))) > 0 THEN LTRIM(RTRIM(SUBSTRING(n.Naz_Nazwa1, 1, CHARINDEX(' ', n.Naz_Nazwa1) - 1)))
ELSE LTRIM(RTRIM(n.Naz_Nazwa1))
END
ORDER BY n.Naz_GIDLp ASC) as RN
FROM
CDN.Nazwy AS n
WHERE Naz_GIDTyp = 624
),
ProcessedNazwy AS (
/* CTE 3: Finalne, unikalne stawki */
SELECT
Naz_GIDLp,
StandardizedNazwa1_ForJoin,
CalculatedVATRate
FROM
ProcessedNazwyRanked
WHERE RN = 1 /* Wybieramy tylko jeden (pierwszy) rekord dla każdej unikalnej stawki */
)
/* Końcowy SELECT: Zwraca żądany zestaw kolumn */
SELECT
NULL AS 'Towar',
pi.KSI_ElementNazwa,
pi.KSI_ElementCenaNetto,
pi.KSI_ElementIlosc,
pi.KSI_ElementWartoscNetto,
pn.Naz_GIDLp AS 'stawka VAT', /* ID stawki z drugiej tabeli */
pi.KSI_ElementWartoscNetto * (1 + pn.CalculatedVATRate) AS 'Wartość brutto'
FROM
ProcessedDocumentItems AS pi
JOIN
ProcessedNazwy AS pn
ON
pi.StandardizedStawkaVAT = pn.StandardizedNazwa1_ForJoin;
END
Ta sekcja jest wywoływana przy każdej modyfikacji danych w kontrolce „Elementy” i wymaga użycia ELSE po sekcji KSeF:
ELSE
IF @^SenderControlName@ = 'Elementy' /*Identyfikator kontrolki Dane tabelaryczne*/
BEGIN
/* Tryb 2: Automatyczne przeliczanie wartości w trybie edycji */
/* Kolumny 3-Cena, 4-Ilość, 6-Stawka VAT */
IF @Elementy_Column@=3 OR @Elementy_Column@=4 OR @Elementy_Column@=6
BEGIN
DECLARE @VAT as decimal (4,2)
/* Pobranie stawki VAT */
SELECT @VAT=CAST(SUBSTRING (Naz_Nazwa1, 0, CHARINDEX (' ', Naz_Nazwa1)) as decimal (4,2))/100
FROM CDN.Nazwy
WHERE Naz_GIDTyp=624 AND Naz_GIDLp=
(SELECT [Stawka VAT]
FROM @Elementy@
WHERE POS=@Elementy_Row@)
UPDATE @Elementy@
/* Aktualizacja wartości Netto */
SET [Netto] = (Ilosc * Cena),
/* Aktualizacja wartości Brutto */
[Brutto] = (Ilosc * Cena) * (@VAT + 1)
WHERE POS=@Elementy_Row@
/* Zwrócenie zaktualizowanej tabeli - Obowiązkowy select */
SELECT * FROM @Elementy@
END
END
Zapytanie SQL w kontrolce Dane tabelaryczne na zakładce Inicjowanie wartości
Kolumna Netto i Brutto w trybie „Do odczytu”
6.Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o identyfikatorze WartoscNetto, w której dodano powiązanie do kontrolki Elementy i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Netto z kontrolki tabelarycznej:
select sum (Netto) from @Elementy@
Kontrolka Liczbowa Wartość Netto
7.Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o identyfikatorze WartoscBrutto, w której dodano powiązanie do kontrolki Elementy i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Brutto z kontrolki tabelarycznej:
select sum (Brutto) from @Elementy@
Kontrolka Liczbowa Wartość Brutto
8. Punkt ACD: W punkcie konfiguracyjnym ACD (Współpraca z KSeF), na zakładce Kontrolki, dodano kontrolkę ID_KSeF i przypisano jej zapytanie, które pobiera ID dokumentu KSeF: select @Id1@
Zdefiniowano również odpowiednie zapytania SQL do poszczególnych kontrolek, do których będą pobierane dane z KSeF.
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
Po pomyślnym zainicjowaniu dokumentu z punktu ACD, kontrolka Dane Tabelaryczne została automatycznie wypełniona pozycjami odczytanymiz KSeF. Dla każdej pozycji, system automatycznie przeliczył i uzupełnił wartości w kolumnach Netto i Brutto w tym samym wierszu. W przypadku nieprawidłowości w kwotach możliwe jest przeliczanie wartości Netto/Brutto poprzez zmianę Ceny/Ilości lub Stawki VAT. Kolumna Netto oraz Brutto jest zablokowana do ręcznej edycji (tryb „Do odczytu”), co gwarantuje poprawność danych. Kontrolka Wartość Netto wyświetla poprawną sumę końcową z kolumny Netto kontrolki Dane tabelaryczne. Kontrolka Wartość Brutto wyświetla poprawną sumę końcową z kolumny Brutto kontrolki Dane tabelaryczne.
Uwaga
Kolumna „Towar” w kontrolce dane tabelaryczne jest inicjowana wartością null , ponieważ nazewnictwo na fakturach dostawców w KSeF często odbiega od kartotek w systemie ERP, co wymaga od użytkownika świadomego, ręcznego dopasowania pozycji do odpowiedniego indeksu towarowego przed zaksięgowaniem.
Kontrolka Dane tabelaryczne uzupełniona pozycjami odczytanymi z KSeF oraz podsumowanie kwot
Pozostałe dane uzupełnione na karcie obiegu
Po pomyślnym zainicjowaniu dokumentu z punktu ACD, pozostałe dane na karcie obiegu zostały prawidłowo uzupełnione.
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?
Udostępnienie mechanizmu do pobierania listy pracowników, działów i struktury organizacyjnej dla spółek połączonych z bazami Comarch BPM Standalone
W wersji 2025.2.0 umożliwiono pobieranie listy pracowników, działów i struktury organizacyjnej dla spółek połączonych z bazami Comarch ERP Optima oraz Comarch BPM Standalone. W tym celu na zakładce [Struktura organizacyjna] w górnej części okna została dodana ikona [Importuj], analogiczna do ikony dotychczas dostępnej tylko dla współpracy z Comarch ERP XL.
Widok zakładki „Struktura organizacyjna” dla spółki Comarch BPM Standalone przed importem danych – widoczny jest przycisk „Importuj”
Po kliknięciu w przycisk [Importuj] zostaje otwarte okno importu danych.
W ramach okna importu danych w zakładkach: „Pracownicy”, „Działy” i „Struktura organizacyjna” można za pomocą zapytania SQL pobrać odpowiednio: listę pracowników, listę działów oraz strukturę organizacyjną. Zapytanie SQL należy wprowadzić w oknie „Procedura SQL”, otwartym po kliknięciu w przycisk [SQL] w ramach danej zakładki.
Dla Comarch BPM Standalone okno „Procedura SQL” jest puste – operator może w nim wprowadzić ręcznie zapytanie SQL potrzebne do pobrania z bazy danych pracowników, działów lub struktury organizacyjnej, w zależności od wybranej zakładki.
Okno importu danych z bazy Comarch BPM Standalone, zakładka „Pracownicy” – widok po kliknięciu w przycisk „Importuj”
Po zapisaniu zmian w oknie „Procedura SQL” na zakładce „Pracownicy” należy zaznaczyć checkboxy obok tych pracowników, którzy mają zostać zaimportowani do Comarch BPM, a następnie nacisnąć przycisk [Zapisz]. Wówczas wybrani pracownicy pojawią się w sekcji „Stan Aktualny” w oknie importu danych, a po zamknięciu okna widoczni będą na zakładce „Pracownicy” w ramach zakładki [Struktura organizacyjna].
Analogicznie należy postępować na zakładkach „Działy” i „Struktura organizacyjna” w ramach okna importu danych.
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Pracownicy”– zaznaczanie pracowników ze spółki Comarch BPM Standalone do zaimportowania
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Pracownicy”– Widok listy pracowników zaimportowanych ze spółki Comarch BPM Standalone na liście w sekcji „Stan Aktualny”
Widok zakładki „Pracownicy” na zakładce „Struktura organizacyjna” po zaimportowaniu pracowników
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Działy”– zaznaczanie działów ze spółki Comarch BPM Standalone do zaimportowania
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Działy”– Widok listy działów zaimportowanych ze spółki Comarch BPM Standalone na liście w sekcji „Stan Aktualny”
Widok zakładki „Działy” na zakładce „Struktura organizacyjna” po zaimportowaniu działów
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Struktura organizacyjnay”– zaznaczanie elementów struktury organizacyjnej ze spółki Comarch BPM Standalone do zaimportowania
Okno importu danych z bazy Comarch BPM Standalone na zakładce „Struktura organizacyjna”–widok struktury organizacyjnej zaimportowanej ze spółki Comarch BPM Standalone na liście w sekcji „Stan Aktualny”
Widok drzewa struktury organizacyjnej na zakładce „Struktura organizacyjna” po zaimportowaniu struktury organizacyjnej
Udostępnienie mechanizmu do pobierania listy pracowników, działów i struktury organizacyjnej dla spółek połączonych z bazami Comarch ERP Optima
W wersji 2025.2.0 umożliwiono pobieranie listy pracowników, działów i struktury organizacyjnej dla spółek połączonych z bazami Comarch ERP Optima oraz Comarch BPM Standalone. W tym celu na zakładce [Struktura organizacyjna] w górnej części okna została dodana ikona [Importuj], analogiczna do ikony dotychczas dostępnej tylko dla współpracy z Comarch ERP XL.
Widok zakładki „Struktura organizacyjna” dla spółki współpracującej z Comarch ERP Optima przed importem danych – widoczny jest przycisk „Importuj”
Po kliknięciu w przycisk [Importuj] zostaje otwarte okno importu danych.
W ramach okna importu danych w zakładkach: „Pracownicy”, „Działy” i „Struktura organizacyjna” można za pomocą zapytania SQL pobrać odpowiednio: listę pracowników, listę działów oraz strukturę organizacyjną. Zapytanie SQL należy wprowadzić w oknie „Procedura SQL”, otwartym po kliknięciu w przycisk [SQL] w ramach danej zakładki.
Okno importu danych z bazy Comarch ERP Optima, zakładka „Pracownicy” – widok po kliknięciu w przycisk „Importuj”
Po zapisaniu zmian w oknie „Procedura SQL” na zakładce „Pracownicy” należy zaznaczyć checkboxy obok tych pracowników, którzy mają zostać zaimportowani do Comarch BPM, a następnie nacisnąć przycisk [Zapisz]. Wówczas wybrani pracownicy pojawią się w sekcji „Stan Aktualny” w oknie importu danych, a po zamknięciu okna widoczni będą na zakładce „Pracownicy” w ramach zakładki [Struktura organizacyjna].
Analogicznie należy postępować na zakładkach „Działy” i „Struktura organizacyjna” w ramach okna importu danych.
Okno importu danych z bazy Comarch ERP Optima na zakładce „Pracownicy”– zaznaczanie pracowników ze spółki Comarch ERP Optima do zaimportowania
Okno importu danych z bazy Comarch ERP Optima na zakładce „Pracownicy”– Widok listy pracowników zaimportowanych ze spółki Comarch ERP Optima na liście w sekcji „Stan Aktualny”
Widok zakładki „Pracownicy” na zakładce „Struktura organizacyjna” po zaimportowaniu pracowników
Okno importu danych z bazy Comarch ERP Optima na zakładce „Działy”– zaznaczanie działów ze spółki Comarch ERP Optima do zaimportowania
Okno importu danych z bazy Comarch ERP Optima na zakładce „Działy”– Widok listy działów zaimportowanych ze spółki Comarch ERP Optima na liście w sekcji „Stan Aktualny”
Widok zakładki „Działy” na zakładce „Struktura organizacyjna” po zaimportowaniu działów
Okno importu danych z bazy Comarch ERP Optima na zakładce „Struktura organizacyjnay”– zaznaczanie elementów struktury organizacyjnej ze spółki Comarch ERP Optima do zaimportowania
Okno importu danych z bazy Comarch ERP Optima na zakładce „Struktura organizacyjna”–widok struktury organizacyjnej zaimportowanej ze spółki Comarch ERP Optima na liście w sekcji „Stan Aktualny”
Widok drzewa struktury organizacyjnej na zakładce „Struktura organizacyjna” po zaimportowaniu struktury organizacyjnej
Schemat Mapowania Danych z Plików XML (struktura KSeF) do Konkretnych Tabel w Comarch BPM
Udostępniono dokumentację przedstawiającą zależności pomiędzy danymi z plików XML faktur zakupowych KSeF a odpowiadającymi im polami w tabelach w bazie Comarch BPM.
Po kliknięciu w przycisk znajdujący się poniżej zostanie pobrany plik dotyczący tej kwestii:
Do współpracy z Comarch BPM (dawniej DMS) szczególnie zaleca sięusługę Comarch OCR.
Aktualnie każdy użytkownik Comarch BPM (dawniej DMS) ma jednorazowy bezpłatny dostęp dopakietu DEMO 50 – wówczas przez miesiąc możliwe jest wprowadzenie 50 stron.
Czy wiesz, że wykorzystując procedurę On.AfterDocumentDeleted możesz zapisywać do bazy dane o usunięciu dokumentu, rejestrując ID usuniętego dokumentu, ID operatora oraz dokładną datę i czas tej akcji w Comarch BPM?
Zastosowanie
Poniższy przykład przedstawia, jak za pomocą procedury On.AfterDocumentDeleted w bazie danych Comarch BPM zapisywać informacje o tym, kto, kiedy i jaki dokument usunął z obiegu.
Zawartość przykładu
Zmodyfikowana procedura do.OnAfterDocumentDeleted, która jest wywoływana automatycznie podczas usuwania dokumentu.
Tabelka wdrożeniowa do.WDR_DeletedDocumentsLog, w której są zapisywane informacje kto i kiedy usunął dany dokument.
Procedura do.OnAfterDocumentDeleted dodaje do tabelki wdrożeniowej do.WDR_DeletedDocumentsLog informacje o usunięciu dokumentu (ID dokumentu, ID użytkownika usuwającego oraz datę i czas operacji).
Parametry wejściowe: Procedura wykorzystuje dwa parametry wejściowe:
@documentId: Zawiera ID dokumentu (DWD_ID) z tabeli do.DF_Work.
@userId: Zawiera ID operatora (DCD_ID) z tabeli do.DF_ConfOSDictionary.
Pobieranie Pełnego Numeru Dokumentu: Mimo że pełny numer dokumentu (DWD_FullNumber) nie jest parametrem wejściowym, procedura pobiera go bezpośrednio z tabeli nagłówkowej dokumentu do.DF_Work, używając jako klucza przekazanego @documentId.
Tabela do.DF_ConfOSDictionary: Używamy jej do pobrania loginu operatora (DCD_Login), co czyni log bardziej czytelnym niż samo ID.
Funkcja GETDATE(): Zapewnia dokładną datę i czas, kiedy operacja usunięcia została wykonana.
Instrukcja INSERT INTO: Wstawia zebrane dane do tabeli wdrożeniowej do.WDR_DeletedDocumentsLog.
Konfiguracja przykładu
1.
Utworzono w bazie danych BPM w schemacie do. własną tabelę o nazwie do.WDR_DeletedDocumentsLog, w ktorej będą zapisywane informacje dotyczące usunięć dokumentów.
Przyklad
Przykład tabeli:
CREATE TABLE do.WDR_DeletedDocumentsLog (
DDL_Id INT IDENTITY(1,1) PRIMARY KEY,
DDL_DocumentId INT NOT NULL, /*ID usuniętego dokumentu (DWD_ID z do.DF_Work)*/
DDL_FullNumber VARCHAR(50) NULL, /*Numer dokumentu (DWD_FullNumber z do.DF_Work)*/
DDL_DeletedByUserId INT NULL, /*ID użytkownika, który usunął dokument (DCD_ID z do.DF_ConfOSDictionary)*/
DDL_UserName VARCHAR(255) NULL, /*Login użytkownika*/
DDL_DeleteDate DATETIME NOT NULL /*Data i czas operacji*/
);
2. W procedurze do.OnAfterDocumentDeleted dodano kod:
/* Deklaracja zmiennych */
DECLARE @userLogin VARCHAR(100);
DECLARE @fullNumber VARCHAR(50); --z do.DF_Work (DWD_FullNumber)
/* 1. Pobranie loginu użytkownika z tabeli do.DF_ConfOSDictionary - Tabela słownika działów i pracowników */
IF @userId IS NOT NULL
BEGIN
SELECT @userLogin = DCD_Login
FROM do.DF_ConfOSDictionary
WHERE DCD_ID = @userId;
END
/* 2. Pobranie pełnego numeru dokumentu z tabeli do.DF_Work (Tabela nagłówkowa dokumentu) */
IF @documentId IS NOT NULL
BEGIN
SELECT @fullNumber = DWD_FullNumber
FROM do.DF_Work
WHERE DWD_ID = @documentId;
END
/* 3. Dodanie informacji o usunięciu dokumentu do tabeli wdrożeniowej */
INSERT INTO do.WDR_DeletedDocumentsLog (
DDL_DocumentId,
DDL_FullNumber,
DDL_DeletedByUserId,
DDL_UserName,
DDL_DeleteDate
)
VALUES (
@documentId,
@fullNumber,
@userId,
@userLogin,
GETDATE()
);
3. Zmodyfikowana procedura wygląda następująco:
ALTER PROCEDURE [do].[OnAfterDocumentDeleted]
@documentId as int = NULL, -- DWD_ID from DF_Work table
@userId as int = NULL -- DCD_ID from DF_ConfOSDictionary table, the user who deleted the document
AS
BEGIN
begin try
/* Deklaracja zmiennych */
DECLARE @userLogin VARCHAR(100);
DECLARE @fullNumber VARCHAR(50); --z do.DF_Work (DWD_FullNumber)
/* 1. Pobranie loginu użytkownika z tabeli do.DF_ConfOSDictionary - Tabela słownika działów i pracowników */
IF @userId IS NOT NULL
BEGIN
SELECT @userLogin = DCD_Login
FROM do.DF_ConfOSDictionary
WHERE DCD_ID = @userId;
END
/* 2. Pobranie pełnego numeru dokumentu z tabeli do.DF_Work (Tabela nagłówkowa dokumentu) */
IF @documentId IS NOT NULL
BEGIN
SELECT @fullNumber = DWD_FullNumber
FROM do.DF_Work
WHERE DWD_ID = @documentId;
END
/* 3. Dodanie informacji o usunięciu dokumentu do tabeli wdrożeniowej */
INSERT INTO do.WDR_DeletedDocumentsLog (
DDL_DocumentId,
DDL_FullNumber,
DDL_DeletedByUserId,
DDL_UserName,
DDL_DeleteDate
)
VALUES (
@documentId,
@fullNumber,
@userId,
@userLogin,
GETDATE()
);
end try
begin catch
DECLARE @ErrorMessage varchar(max) = 'W procedurze do.OnAfterDocumentDeleted wystąpił błąd: ' + ERROR_MESSAGE();
--THROW 50001, @ErrorMessage ,1;
declare @ErrorSeverity int = ERROR_SEVERITY(), @ErrorState int = ERROR_STATE()
raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState);
end catch
END
Uzupełniona tabela do.WDR_DeletedDocumentsLog
Po usunięciu dokumentu w Comarch BPM za pomocą ikony kosza, w tabeli wdrożeniowej pojawia się wpis:
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?