Strona 1 z 1

Dodanie atrybutu

: 28 sty 2026, 07:54
autor: AndrzejK
Cześć,

potrzebuję dodać atrybut, który będzie wartością z karty towaru -> kod dostawcy w momencie kiedy na FS jest wskazany konkretny towar oraz odbiorca. Jak to ogarnąć? Da się z konfiguracji klasy atrybutu, czy robić to triggerem?

Re: Dodanie atrybutu

: 28 sty 2026, 11:55
autor: praiser
powinno się dać to ogarnąć atrybutami i kopiowaniem do FS na nagłówek albo elementy, bo wg dokumentacji

W zapytaniu definiujemy jaka wartość powinna być przypisana do atrybutu na obiekcie docelowym. Wynik zapytania (select) jest podstawą określenia wartości atrybutu na obiekcie docelowym, dlatego powinien być zwrócony jako jednowierszowy recordset zbudowany z min:1 – max:6 kolumn o typach odpowiednio: Atr_Wartosc, Atr_AtrTyp, Atr_AtrFirma, Atr_AtrNumer, Atr_AtrLp, Atr_AtrSubLp.

Jak warunek do kopiowania można wrzucić:

Kod: Zaznacz cały

SELECT 
    <tu co ma być wartością> as Atr_Wartosc,
    0 as Atr_AtrTyp, 
    0 as Atr_AtrFirma,
    0 as Atr_AtrNumer,
    0 as Atr_AtrLp,
    0 as Atr_AtrSubLp
FROM CDN.TraElem
JOIN CDN.TraNag ON TrE_GIDTyp = TrN_GIDTyp 
               AND TrE_GIDNumer = TrN_GIDNumer
JOIN CDN.TwrDst ON TWD_TwrNumer = TrE_TwrNumer 
               AND TWD_KntNumer = TrN_KntNumer
WHERE {FiltrSQL}
    AND TrE_TwrNumer = 12345        --  GIDNumer konkretnego towaru
    AND TrN_GidNumer = 67890        -- GIDNumer konkretnego klienta

Re: Dodanie atrybutu

: 28 sty 2026, 15:18
autor: AndrzejK
tylko pytanie, czy to zadziała to tylko na wystąpienie konkretnego kontrahenta? :)

doprecyzując: by atrybut został dodany dla kontrahenta A i towaru A, a już nie został dodany dla kontrahenta B i towaru A

Re: Dodanie atrybutu

: 28 sty 2026, 16:22
autor: praiser
tak, tak powinno zadziałać choć to tylko koncept

Pierwszy warunek to JOIN do tabeli dostawców:

Kod: Zaznacz cały

JOIN CDN.TwrDst ON TWD_TwrNumer = TrE_TwrNumer 
               AND TWD_KntNumer = TrN_KntNumer
Jeśli na karcie towaru nie ma tego kontrahenta jako dostawcy, to cały wiersz nie zostanie zwrócony (brak wyniku = brak atrybutu).

Drugi warunek w WHERE:

Kod: Zaznacz cały

AND TrE_TwrNumer = 12345        -- GIDNumer konkretnego towaru
AND TrN_KntNumer = 67890        -- GIDNumer kontrahenta (nabywcy)
Jeśli JOIN z TwrDst załatwia sprawę (chcesz tylko pary towar-kontrahent które są w TwrDst), to warunki w WHERE na konkretne GIDy są opcjonalne - potrzebne tylko gdy chcesz dodatkowo zawęzić do wybranych towarów/kontrahentów.

Odwrotnie: jeśli nieważne jest czy kontrahent jest dostawcą, to usuń JOIN a zostaw tylko WHERE na konkretne GIDy. (towar i klient)

Re: Dodanie atrybutu

: 28 sty 2026, 16:30
autor: praiser
Chyba że, źle zrozumiałem pierwszy post.

Czy chodzi o to, że chcesz dodawać atrybut gdy po prostu jest jakiś konkretny towar na dokumencie handlowym, a w odbiorcy jest konkretny kontrahent?

Pytanie kluczowe: Jeśli masz wielu dostawców tego samego towaru, to który ma być przepisywany do atrybutu?

Jeśli w TwrDst jest kilka rekordów dla tego samego towaru (wielu dostawców), zapytanie SQL zwróci wiele wierszy, a system atrybutów oczekuje jednowierszowego recordset.

Re: Dodanie atrybutu

: 29 sty 2026, 11:34
autor: AndrzejK
hej, z pola kod u kontrahenta z kartoteki towaru :) czyli masz jedną pozycję. Wydaje mi się jednak najskuteczniej będzie trigger.