Kopiowanie Atrybutów ZS->WM->FS

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Grisza Master
Posty: 4
Rejestracja: 29 wrz 2011, 11:11
Rola: Użytkownik CDN XL
Wersja: 10

Kopiowanie Atrybutów ZS->WM->FS

Post autor: Grisza Master »

Witajcie, Potrzebuję pomocy.
Chcę, aby kopiowały się atrybuty z elementów ZS na elementy WM a potem z elementów WM na elementy FS (ZS->WM , WM->FS).
Mam opcję ODCZYT. Czy muszę pisać oddzielny kod na kopiowanie elementów z WM na elementy FS, czy można to zrobić za jednym zamachem
(tzn. ZS->WM->FS)?
(U nas w firmie najpierw powstaje ZS, z tego generujemy WM, a z WM generujemy FS)
Napisałem kod, ale nie działa.
CDNXL 10.5.2

Kod: Zaznacz cały

Select Atr_wartosc, Atr_AtrTyp, Atr_atrFirma, Atr_atrNumer, Atr_AtrLp FROM CDN.Atrybuty JOIN CDN.MagElem ON MaE_GIDNumer=Atr_ObiNumer AND MaE_GIDLp=Atr_ObiLp
 AND Atr_atkID = {Ato_AtkID} Where {FiltrSQL}
Będę wdzięczny za pomoc. :idea:
pawel.wilk
Posty: 38
Rejestracja: 06 sie 2008, 14:06
Rola: Administrator CDN XL
Wersja: 10
Lokalizacja: Kraków

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: pawel.wilk »

Wydaje mi się że da się to załatwić jedną definicją - tyle że atrybut musi być dowiązany do wszystkich obiektów na które ma się kopiować ( Definicja atrybutów -> Klasa atrybutu -> Obiekty) plus zdefiniowane kopiowanie atrybutów (Definicja atrybutów -> Kopiowanie atrybutów -> Obiekty docelowe)

Sama definicja zapytania jest zdefiniowana domyślnie i wygląda tak - nic tam nie trzeba zmieniać

SELECT Atr_Wartosc, Atr_AtrTyp, Atr_AtrFirma,Atr_AtrNumer, Atr_AtrLp FROM CDN.Atrybuty JOIN CDN.TwrKarty ON Atr_ObiTyp = Twr_GIDTyp AND Atr_ObiNumer = Twr_GIDNumer AND Atr_AtkId = {Ato_AtkID} JOIN CDN.Dostawy ON Dst_TwrNumer = Twr_GIDNumer WHERE {FiltrSQL}
Grisza Master
Posty: 4
Rejestracja: 29 wrz 2011, 11:11
Rola: Użytkownik CDN XL
Wersja: 10

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: Grisza Master »

Dzięki za odpowiedź.
Niestety to nie działa.
Mój atrybut ma dowiązane 3 obiekty. Elementy ZS, elementy WM i elementy FS
Następnie w zakładce kopiowanie atrybutów dodałem te 3 powyższe obiekty. Zmieniłem swój kod na Twój kod*.
Następnie kliknąłem na mój atrybut, wszedłem na zakładkę obiekty i na każdym z 3 obiektów kliknąłem 'lupę - połączenie klasa-obiekt". Tam zaznaczyłem opcję 'zaawansowane', jako źródło ustawiłem nowy poprawiony kod* i akcję na 'odczyt'.
Nie rozumiem, dlaczego wykorzystuję zdefiniowane zapytanie, które odpowiada za kopiowanie atrybutów z karty towarów na dostawy.
Wydaje mi się (być może źle myślę), że powinienem wykorzystać zapytanie kopiujące atrybuty z elementów jakiegoś dokumentu na elementy innych dokumentów. Takiego zdefiniowanego zapytania nie widzę.
Pierwszy raz dokonuję kopiowania atrybutów, więc sorki, jeśli moje wywody są idiotyczne.
Jeszcze raz proszę Cię o przeanalizowanie problemu. Pierwszy raz atrybut dodaję na poziomie wystawienia ZS (na poszczególnym elemencie pozycji). Atrybut na karcie towaru nie istnieje.
z góry dzięki za pomoc :idea:
pawel.wilk
Posty: 38
Rejestracja: 06 sie 2008, 14:06
Rola: Administrator CDN XL
Wersja: 10
Lokalizacja: Kraków

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: pawel.wilk »

aa.. nie doczytałem jakoś...

No to tak, zakładka kopiowanie atrybutów:
Dodajesz obiekt "na_wm"
SELECT CDN.Atrybuty.Atr_Wartosc
FROM CDN.Atrybuty INNER JOIN
CDN.MagNag INNER JOIN
CDN.MagElem ON CDN.MagNag.MaN_GIDNumer = CDN.MagElem.MaE_GIDNumer INNER JOIN
CDN.ZamElem INNER JOIN
CDN.ZamNag ON CDN.ZamElem.ZaE_GIDNumer = CDN.ZamNag.ZaN_GIDNumer ON CDN.MagNag.MaN_ZaNNumer = CDN.ZamNag.ZaN_GIDNumer AND
CDN.MagNag.MaN_ZaNTyp = CDN.ZamNag.ZaN_GIDTyp ON CDN.Atrybuty.Atr_ObiNumer = CDN.ZamElem.ZaE_GIDNumer
WHERE {FiltrSQL} AND (CDN.Atrybuty.Atr_AtkId = GID_ATRYBUTU_CO_CIE_INTERESUJE)

Dodajesz obiekt "na_FS"
SELECT CDN.Atrybuty.Atr_Wartosc, CDN.Atrybuty.Atr_AtrTyp, CDN.Atrybuty.Atr_AtrFirma, CDN.Atrybuty.Atr_AtrNumer, CDN.Atrybuty.Atr_AtrLp
FROM CDN.TraNag INNER JOIN
CDN.ZamNag ON CDN.TraNag.TrN_ZaNNumer = CDN.ZamNag.ZaN_GIDNumer AND CDN.TraNag.TrN_ZaNTyp = CDN.ZamNag.ZaN_GIDTyp INNER JOIN
CDN.ZamElem ON CDN.ZamNag.ZaN_GIDNumer = CDN.ZamElem.ZaE_GIDNumer INNER JOIN
CDN.Atrybuty ON CDN.ZamElem.ZaE_GIDNumer = CDN.Atrybuty.Atr_ObiNumer INNER JOIN
CDN.TraElem ON CDN.TraNag.TrN_GIDNumer = CDN.TraElem.TrE_GIDNumer
WHERE (CDN.Atrybuty.Atr_AtkId = GID_ATRYBUTU_CO_CIE_INTERESUJE) AND {FiltrSQL}

Zakładka obiekty, wybierasz dokumenty magazynowe -> WM -> pozycje
Dodajesz klase aktrybutu i w środku:
Zaawansowane -> Zródło -> wybierasz "na_wm"
Zaawansowane -> Akcja -> DODANIE

Analogicznie dla obiektu FS.pozycje tylko źródło zmien na "na_fs", i gidy atrybutu wstaw odpowiednie...
U mnie działa.
Grisza Master
Posty: 4
Rejestracja: 29 wrz 2011, 11:11
Rola: Użytkownik CDN XL
Wersja: 10

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: Grisza Master »

Samo kopiowanie atrybutu rzeczywiście działa. Dzięki, ale... ;)
po wpisaniu Gidu Atrybutu, czyli Atr_AtkId = 22 na poszczególne pozycje WM kopiuje mi się zawsze ten atrybut niezależnie czy został wstawiony na pozycję na ZS, a ponadto wartości atrybutu na pozycjach WM są jednakowe.
Przykład.
Mam 3 pozycje na ZS
poz.1 atrybut (nr22) o wartości 1
poz.2 atrybut(nr22) o wartości 2
poz.3 bez atrybutu
po przekształceniu na WM otrzymuję
poz.1 atrybut(nr22) o wartości 1
poz.2 atrybut(nr22) o wartości 1
poz.3 atrybut(nr22) o wartości 1
Czy u Ciebie jest tak samo ? Może ja coś źle wpisałem, ale sprawdzałem wiele razy i to w różnych kombinacjach i wynik zawsze ten sam.
Znów proszę Cię o pomoc :idea:
pawel.wilk
Posty: 38
Rejestracja: 06 sie 2008, 14:06
Rola: Administrator CDN XL
Wersja: 10
Lokalizacja: Kraków

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: pawel.wilk »

Faktycznie, nie sprawdziłem
na_wm:
SELECT CDN.Atrybuty.Atr_Wartosc, CDN.Atrybuty.Atr_AtrTyp, CDN.Atrybuty.Atr_AtrFirma, CDN.Atrybuty.Atr_AtrNumer, CDN.Atrybuty.Atr_AtrLp
FROM CDN.Atrybuty INNER JOIN
CDN.MagNag INNER JOIN
CDN.MagElem ON CDN.MagNag.MaN_GIDNumer = CDN.MagElem.MaE_GIDNumer INNER JOIN
CDN.ZamElem INNER JOIN
CDN.ZamNag ON CDN.ZamElem.ZaE_GIDNumer = CDN.ZamNag.ZaN_GIDNumer ON CDN.MagNag.MaN_ZaNNumer = CDN.ZamNag.ZaN_GIDNumer AND
CDN.MagNag.MaN_ZaNTyp = CDN.ZamNag.ZaN_GIDTyp AND CDN.MagElem.MaE_Pozycja = CDN.ZamElem.ZaE_Pozycja ON
CDN.Atrybuty.Atr_ObiNumer = CDN.ZamElem.ZaE_GIDNumer AND CDN.Atrybuty.Atr_ObiLp = CDN.ZamElem.ZaE_GIDLp
and Atr_AtkId = {Ato_AtkID}
WHERE {FiltrSQL}

na_fs
SELECT CDN.Atrybuty.Atr_Wartosc, CDN.Atrybuty.Atr_AtrTyp, CDN.Atrybuty.Atr_AtrFirma, CDN.Atrybuty.Atr_AtrNumer, CDN.Atrybuty.Atr_AtrLp
FROM CDN.TraNag INNER JOIN
CDN.ZamNag ON CDN.TraNag.TrN_ZaNNumer = CDN.ZamNag.ZaN_GIDNumer AND CDN.TraNag.TrN_ZaNTyp = CDN.ZamNag.ZaN_GIDTyp INNER JOIN
CDN.ZamElem ON CDN.ZamNag.ZaN_GIDNumer = CDN.ZamElem.ZaE_GIDNumer INNER JOIN
CDN.Atrybuty ON CDN.ZamElem.ZaE_GIDNumer = CDN.Atrybuty.Atr_ObiNumer AND CDN.ZamElem.ZaE_GIDLp = CDN.Atrybuty.Atr_ObiLp INNER JOIN
CDN.TraElem ON CDN.TraNag.TrN_GIDNumer = CDN.TraElem.TrE_GIDNumer AND CDN.ZamElem.ZaE_Pozycja = CDN.TraElem.TrE_Pozycja
and Atr_AtkId = {Ato_AtkID}
WHERE {FiltrSQL}

To powinno działać
Grisza Master
Posty: 4
Rejestracja: 29 wrz 2011, 11:11
Rola: Użytkownik CDN XL
Wersja: 10

Re: Kopiowanie Atrybutów ZS->WM->FS

Post autor: Grisza Master »

Działa !!!
Naprawdę bardzo wielkie podziękowania :D :D :D
ODPOWIEDZ