Baza wiedzy LINKSPOT › Wskazówki

Czy wiesz, że w kontrolce Dane tabelaryczne wartości w poszczególnych kolumnach mogą się przeliczać w oparciu o zmianę wartości w innej kolumnie przy pomocy zapytania SQL?

Wskazówki · Opublikowano 2025-11-04

Zastosowanie

Dzięki zastosowaniu tej konfiguracji, proces wprowadzania danych w Comarch BPM zyskuje pełną zdolność automatycznego kalkulowania wszędzie tam, gdzie użyta jest kontrolka tabelaryczna. Głównym celem jest eliminacja ręcznych obliczeń, co bezpośrednio przekłada się na mniejszą liczbę błędów i znacznie szybszą pracę użytkownika. Konfiguracja ta umożliwia automatyczne przeliczanie wartości w kolumnach wynikowych (np. Netto, Brutto) w oparciu o zmianę danych wejściowych (np. Cena lub Ilość) w tym samym wierszu.

Film obrazujący zastosowanie konfiguracji

https://pomoc.comarch.pl/bpm/wp-content/uploads/2025/10/filmauto.mp4

Zawartość przykładu

Kliknij tutaj, aby pobrać przykład

Zasada działania

Mechanizm opiera się na ciągłym monitorowaniu zmian wartości w kontrolce tabelarycznej i automatycznym uruchamianiu zapytania SQL, które przelicza i aktualizuje wartości w kolumnach wynikowych.

Konfiguracja przykładu

  1. Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) Elementy i skonfigurowano w niej następujące kolumny:

Kolumny w kontrolce typu Dane tabelaryczne

  1. W kontrolce typu Dane tabelaryczne  na zakładce Listy zdefiniowano zapytanie pobierające:
 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

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

  1. 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 pobiera stawki VAT z bazy XL i na podstawie Ilości i Ceny wylicza wartość Netto, po uzupełnieniu Stawki VAT wylicza wartość Brutto, a po zmianie wartości Brutto wylicza Cenę i wartość Brutto.
/*Deklaracja Stawki VAT */
DECLARE @VAT AS DECIMAL(4, 2)

/* Pobranie stawki VAT z tabeli CDN.Nazwy na podstawie kolumny StawkaVAT w bieżącym wierszu */
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 [StawkaVAT]
FROM @Elementy@
WHERE POS = @Elementy_Row@
)

/* JEŚLI ZMIENIONO KOLUMNY: 2 (Cena), 3 (Ilość), 5 (Stawka VAT) */
IF @Elementy_Column@=2 OR @Elementy_Column@=3 OR @Elementy_Column@=5
BEGIN
/* PRZELICZANIE W PRZÓD (Cena/Ilość/Stawka VAT -> Netto/Brutto) */

/*Wyliczenie i aktualizacja netto i brutto */
UPDATE @Elementy@
SET
[Netto] = (Ilosc * Cena),
[Brutto] = (Ilosc * Cena) * (@VAT + 1)
WHERE POS = @Elementy_Row@

/* !!! OBOWIĄZKOWE: Odświeżenie wiersza !!! */
SELECT * FROM @Elementy@
END

/* JEŚLI ZMIENIONO KOLUMNĘ: 6 (Brutto) */
IF @Elementy_Column@=6 
BEGIN
/* PRZELICZANIE W TYŁ (Brutto -> Cena/Netto) */

/* Aktualizacja ceny i netto (Ilość stała) */
UPDATE @Elementy@
SET
[Cena] = [Brutto] / (@VAT + 1), -- Obliczenie Ceny Netto z Brutto
[Netto] = [Ilosc] * ([Brutto] / (@VAT + 1)) -- Obliczenie Wartości Netto
WHERE POS = @Elementy_Row@

/* !!! OBOWIĄZKOWE: Odświeżenie wiersza !!! */
SELECT * FROM @Elementy@
END

Zapytanie SQL w kontrolce Dane tabelaryczne na zakładce Inicjowanie wartości

  1. Tryb pracy: W kontrolce typu Dane tabelaryczne, na zakładce Ograniczenie edycji kolumnę „Netto”ustawiono w trybie „Do odczytu”.

Kolumna Netto w trybie „Do odczytu”

  1. Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o nazwie (identyfikatorze) Podsumowanie, 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 Podsumowanie

Uzupełniona Kontrolka Dane Tabelaryczne

Po wprowadzeniu wartości w kontrolce typu Dane tabelaryczne w kolumnach Cena, Ilość lub Stawka VAT kontrolka typu Dane Tabelaryczne została automatycznie zaktualizowana. Dla każdej pozycji, system automatycznie przeliczył i uzupełnił wartości w kolumnach Netto oraz Brutto w tym samym wierszu. Możliwe jest przeliczanie wartości w przód (Cena/Ilość → Netto/Brutto) oraz w tył (Brutto → Cena/Netto). Wartości w kolumnach wynikowych (Netto, Brutto) są widoczne, ale kolumna Netto jest zablokowana do ręcznej edycji (tryb „Do odczytu„), co gwarantuje poprawność danych. Kontrolka Podsumowanie wyświetla poprawną sumę końcową z kolumny Brutto kontrolki typu Dane tabelaryczne.

Kontrolka typu Dane tabelaryczne z uzupełnionymi kolumnami

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?

Sprawdź Szkolenia Comarch BPM!

+ Mam problem z tym tematem Otwórz w portalu bazy wiedzy »