Zastosowanie
Dzięki tej konfiguracji, proces obsługi dokumentów w Comarch BPM zyskuje zaawansowaną zdolność automatycznego pobierania danych z dokumentów ERPXL. Wdrożenie tego wzorca znacznie przyspiesza procesy zakupowe, ponieważ eliminuje konieczność ręcznego wyszukiwania i przepisywania danych z dokumentów (w przykładzie dokument Przyjęcia Zewnętrznego (PZ)). System automatycznie pobiera kluczowe informacje nagłówkowe (Kontrahent, Wartość Netto) z wybranego dokumentu PZ, uzupełniając kontrolkę tabelaryczną i wprowadzając dane bezpośrednio do obiegu.
Film obrazujący zastosowanie konfiguracji
https://pomoc.comarch.pl/dms/wp-content/uploads/2025/06/pz2.mp4
Zawartość przykładu
- Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu z konfiguracją kontrolki typu Dane tabelaryczne.
Kliknij tutaj, aby pobrac przykład
Zasada działania
Mechanizm opiera się na obserwowaniu kolumny typu Lista (lista wyboru dokumentu PZ) i uruchamianiu złożonego zapytania SQL, które pobiera powiązane dane nagłówkowe z tabel Comarch ERP XL.
- W kontrolce typu Dane Tabelaryczne zdefiniowano kolumnę ListaPZ (typ: Lista) służącą do wyboru dokumentu PZ oraz kolumny wynikowe: PZ (typ: Dokument elektroniczny), Kontrahent (typ: Kontrahent) i Netto (typ: Liczba stałoprzecinkowa).
- Na zakładce Listy zdefiniowano zapytanie pobierające wszystkie dokument PZ (o typie Trn_GIdTyp=1489) z tabeli cdn.TraNag.
- Na zakładce Inicjowanie wartości dodano obserwację kontrolki przez samą siebie.
- Zapytanie SQL (Wzór na wartość SQL ERP) jest wyzwalane przy każdej zmianie kolumny ListaPZ.
- Zapytanie SQL pobiera GIDNumer wybranego dokumentu PZ i na jego podstawie odpytuje tabelę cdn.TraNag oraz cdn.KntKarty (dla Kontrahenta).
- Polecenie UPDATE @DokumentyPZ@ SET aktualizuje kolumny wynikowe w wierszu.
- Osobna kontrolka typu SumaNettoPZ obserwuje kolumnę (Netto) i zlicza jej sumę za pomocą prostego zapytania SQL (select sum (Netto) from @DokumentyPZ@).
Konfiguracja przykładu
1.Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) DokumentyPZ i skonfigurowano w niej następujące kolumny:
- ”ListaPZ” (identyfikator kolumny: ListaPZ) – typ Lista
- ”PZ” (identyfikator kolumny: PZ) – typ Dokument elektroniczny
- ”Kontrahent” (identyfikator kolumny: Kontrahent) – typ Kontrahent
- ”Netto” (identyfikator kolumny: Netto) – typ Liczba stałoprzecinkowa

Kolumny w kontrolce Dane tabelaryczne
2.W kontrolce typu Dane tabelaryczne na zakładce Listy zdefiniowano zapytanie pobierające:
- Listę dokumentów PZ z Comarch ERPXL:
select trn_gidnumer,cdn.numerdokumentu(trN_GIDTyp,TrN_SpiTyp, Trn_TRNTyp,TrN_TrNNumer,TrN_TrNRok, TrN_TrNSeria, TrN_trNMiesiac) from cdn.TraNag where
Trn_GIdTyp=1489

Lista pobierająca dokumenty PZ w kontrolce typu Dane tabelaryczne
3.Dodano obserwację kontrolki: W kontrolce typu Dane tabelaryczne, na zakładce Inicjowanie wartości, dodano powiązanie do samej siebie.
Powiązanie kontrolki do samej siebie
4.Dodano zapytanie SQL: W kontrolce typu Dane tabelaryczne, na zakładce Inicjowanie wartości w sekcji Wzór na wartość SQL ERP dodano zapytanie, które automatycznie podpina dokument elektroniczny w kolumnie PZ , oraz wczytuje kluczowe dane nagłówkowe (Kontrahent i Netto) bezpośrednio z wybranego dokumentu. Logika ta polega na trzykrotnym użyciu instrukcji UPDATE @DokumentyPZ@ SET w jednym bloku kodu. Każda instrukcja, oparta o połączenia (JOIN) z tabelami nagłówkowymi ERP XL (cdn.TraNag, cdn.KntKarty), pobiera i aktualizuje inną wartość w bieżącym wierszu tabeli.
IF @DokumentyPZ_Column@ = 1
BEGIN
/*[1] Zapisanie GID dokumentu PZ do kolumny PZ_ID w celu dalszych zapytań*/
UPDATE @DokumentyPZ@ SET [PZ_ID] =
(
SELECT [ListaPZ] FROM @DokumentyPZ@ WHERE POS = @DokumentyPZ_Row@
)
WHERE POS = @DokumentyPZ_Row@
/* [2] Pobranie Kontrahenta (Knt_GidNumer) z tabel nagłówkowych ERP XL*/
UPDATE @DokumentyPZ@ SET [Kontrahent] =
(
SELECT Knt_GidNumer FROM cdn.TraNag
JOIN cdn.kntkarty ON TrN_KntNumer = Knt_GIDNumer
WHERE TrN_GIDNumer = [ListaPZ]
)
WHERE POS = @DokumentyPZ_Row@
/*[3] Pobranie Wartości Netto (TrN_NettoP) z tabel TraNag/TraElem*/
UPDATE @DokumentyPZ@ SET [Netto] = (
SELECT TOP 1 TrN_NettoP
FROM cdn.TraNag
JOIN cdn.TraElem ON TrE_GIDNumer = TrN_GIDNumer
WHERE TrN_GIDNumer = [ListaPZ]
)
WHERE POS = @DokumentyPZ_Row@
/*!!! OBOWIĄZKOWE: Odświeżenie wiersza w kontrolce Dane tabelaryczne !!!*/
SELECT * FROM @DokumentyPZ@
END

Zapytanie SQL w kontrolce typu Dane tabelaryczne na zakładce Inicjowanie wartości
5.Tryb pracy: W kontrolce typu Dane tabelaryczne, na zakładce Ograniczenie edycji kolumnę „Kontrahent” oraz „Netto” ustawiono w trybie „Do odczytu”.

Kolumna Netto w trybie „Do odczytu”
6.Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o nazwie (identyfikatorze) SumaNettoPZ, w której dodano powiązanie do kontrolki DokumentyPZ i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Netto z kontrolki tabelarycznej:
select sum (Netto) from @DokumentyPZ@

Kontrolka Liczbowa Suma Netto PZ
Uzupełniona Kontrolka Dane Tabelaryczne
Po wybraniu z listy dokumentu PZ w kontrolce typu Dane tabelaryczne, wiersz został automatycznie zaktualizowany. W efekcie, w drugiej kolumnie podpiął się dokument elektroniczny PZ oraz zostały uzupełnione kluczowe dane nagłówkowe: Kontrahent i Wartość Netto. Kontrolka SumaNettoPZ wyświetla poprawną sumę końcową z kolumny Netto wszystkich podpiętych dokumentów PZ.

Kontrolka typu Dane tabelaryczne z uzupełnionymi kolumnami

Dokument PZ podpięty w kontrolce Dane tabelarycznej
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?