Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: sztywniak w Grudzień 23, 2010, 21:04:46

Tytuł: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sztywniak w Grudzień 23, 2010, 21:04:46
zaczynamy
Subiekt GT przechowuje dane w bazie MS SQL Server. Dane w tej bazie są uporządkowane w pewną strukture.
dane o towarach przechowywane są w tabeli tw__towar
dane o nagłówkach dokumentów w tabeli dok__dokument
dane o pozycjach dokumentów w tabeli dok_pozycja
dane o rozrachunkach w tabeli nz__finanse
jest tam dużo więcej tabel ale o tym w kolejnych lekcjach.

Każda z tabel np tw__towar składa się z pól w których znajdują się konkretne dane i tak :
tw_id - identyfikator wewnętrzny towaru
tw_symbol - symbol towaru
tw_nazwa   - nazwa towaru
tw_opis - opis towaru
tw_PKWIU - PKWIU
Zacznijmy więc od towarów. Jeżeli chcemy wyciągnąć jakieś dane z bazy używamy polecenia SELECT.
Jego uproszczona składnia to :
SELECT pola_ktore_chcemy_wyciagnac FROM nazwa_tabeli WHERE warunki_jakie_maja_spelnić_wyswietlone_dane

Przykład 1 :

SELECT tw_symbol, tw_nazwa FROM tw__towar

To polecenie wyciągnie informacje o symbolu i nazwie wszystkich towarów z bazy.

Przykład 2 :

SELECT tw_symbol, tw_nazwa FROM tw__towar WHERE tw_nazwa LIKE 'p%'

To polecenie wyciągnie informacje o symbolu i nazwie towarów których nazwa zaczyna się na litere P.

Jeśli chcemy zobaczyć wszystkie pola jakiejś tabeli możemy użyć znaku *  (gwiazdka)

Przykład 3:

SELECT * FROM tw__towar

To polecenie wyciągnie informacje o wszystkich danych w tabeli. W taki sposób możemy podejrzeć jakie w tabeli są pola.
Polecam obejrzeć sobie te pola i poćwiczyć wyciąganie różnych pól.

CDN ...
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: someone w Styczeń 16, 2011, 18:04:44
A ja mam pytanie: czy wynik takiego zestawienia możne zapisać się w pliku .txt
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Styczeń 16, 2011, 18:45:09
Możesz sam zapisać poprzez kopiuj->wklej  lub operacje na liście-->drukuj listę i tam wskazujesz że chcesz do pliku
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: someone w Styczeń 16, 2011, 20:31:03
Ale mi chodzi o to czy można to zautomatyzować tak, aby powstawał plik z wynikiem tego zestawienia
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Styczeń 16, 2011, 20:44:05
Zainteresuj się narzędziem osql (masz je w instalacji SQL serwera). Możesz napisać treść zapytania w pliku tekstowym i kazać "wyrzucić" wynik do pliku tekstowego
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Taner w Styczeń 18, 2011, 12:11:04
Czy któryś z kolegów posiada opis bazy danych Insert mam taka z wersji 1.16 ale jest juz troche nie aktualna ?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: quver w Styczeń 25, 2011, 18:18:53
Insert pisał na swojej stronie, że schemat można dostać u autoryzowanych partnerów ale jak rozmawiałem z jednym twierdzi, że nic takiego nie mają... więc może być ciężko...
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: detemoto w Styczeń 25, 2011, 20:40:47
Cytuj
mam taka z wersji 1.16
tez znalazłem w sieci tylko v1.05 czyli całkowity staroć a chętnie bym skorzystał z nowej.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Bar Naba w Styczeń 25, 2011, 23:33:46
napisz do nich maila i pewnie dostaniesz
 i proszę jest

Pzdr BN
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: detemoto w Styczeń 26, 2011, 08:18:25
Nie mogę tego dodać do zestawień:
pojawia się komunikat:
błąd w pliku - Linia 0, pozycja 0 i poniżej - proszę podać plik z XML...... i dla XLS to samo.....
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Styczeń 26, 2011, 08:24:57
Tego nie dodajesz do zestawień. Otwierasz po prostu plik XML
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: detemoto w Styczeń 26, 2011, 08:40:14
Plik XML jest tekstowy i wygląda jak zapytanie sql-owe. Być może tak ma być.
Ja raczej myślałem o pliku z ładnym opisem, bo taki znalazłem w sieci, z pełną charakterystyką poszczególnych tabel i pól.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Styczeń 26, 2011, 10:26:57
Otwórz lik xml w Internet Explorer to będziesz miał ładne tabelki
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: exequos w Luty 17, 2011, 18:30:16
a czy ktos posiada i moglby udostepnic specyfikacje do view i funkcji bazy subiekta?
ew czy mozna to jakos wyciagnac z bazy?
to niezwykle pomocne w zestawieniach bedzie
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sztywniak w Luty 17, 2011, 20:58:38
niestety jest to niezgodne z prawem
Tytuł: Re: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: exequos w Luty 19, 2011, 14:47:45
Niezgodne publikowanie czy posiadanie?;-)
Bo autoryzowani serwisanci maja do tego sekretu dostep?
A w necie strzepy sa raz ktos podaje jedno raz inne... A do zestawien w sam raz by sie przydalo:-)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sztywniak w Luty 19, 2011, 15:31:47
nie, autoryzowani serwisanci nie mają dostępu do źródeł procedur ...
publikowana jest jedynie dokumentacja tabel
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: KrzysiekS w Październik 05, 2011, 18:18:50
Dla podobnych do mnie podaję ciekawą stronę:
http://www.sql-kursy.pl/sql-kurs-podstawy.html (http://www.sql-kursy.pl/sql-kurs-podstawy.html)

Cytat: sztywniak
Subiekt GT przechowuje dane w bazie MS SQL Server. Dane w tej bazie są uporządkowane w pewną strukture.
dane o towarach przechowywane są w tabeli tw__towar
dane o nagłówkach dokumentów w tabeli dok__dokument
dane o pozycjach dokumentów w tabeli dok_pozycja
dane o rozrachunkach w tabeli nz__finanse
jest tam dużo więcej tabel ale o tym w kolejnych lekcjach.
Cytuj

Można prosić o kolejną lekcję ?
Pozdrawiam.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sztywniak w Październik 07, 2011, 22:55:23
muszę się zmotywować do napisania kolejnych lekcji, skutecznie utrudnia mi to praca zawodowa ;-)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: pajong w Kwiecień 19, 2012, 12:25:12
Witam,

co w sytuacji kiedy chciałbym wyciągnąć dane o wartości VAT dla każdego produktu ?
w której tabeli są trzymane te dane?
jak do tej pory trafiłem na tabele dok_Vat ale nie nie jestem pewien czy to poprawna tabela..
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Kwiecień 19, 2012, 21:27:20
dok_vat to podsumowanie VAT z dokumentów

Pozycje na dokumentach są w tabeli dok_pozycja (dane dotyczące wartości Vat dla tych pozycji też tam są)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: pajong w Kwiecień 19, 2012, 21:51:53
wyciągam z bazy po kolei:

SELECT tw_Symbol, tw_Nazwa, st_Stan, tc_CenaBrutto1, tw_PKWiU, tw_PodstKodKresk
     FROM tw__Towar
          INNER JOIN tw_Stan ON tw__Towar.tw_Id = tw_Stan.st_TowId
          INNER JOIN tw_Cena ON tw__Towar.tw_Id = tw_Cena.tc_IdTowar
     WHERE tw_Stan.st_MagId = 1"

teraz jeżeli chce wyciągnąć % VAT dla danego towaru to wyciągam 
ob_VatProc gdzie tw__Towar.tw_Id = dok_Pozycja.ob_TowId ?

a jesli tak to dlaczego w ob_TowId znajduje się kilka takich samych wartości ??
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Kwiecień 19, 2012, 22:44:33
Musisz dokładniej określać co chcesz uzyskać. Najpierw napisałeś, że chcesz "wyciągnąć dane o wartości VAT dla każdego produktu". Wartość kojarzy mi się raczej z kwotą więc pomyślałem, że jak kwota vat to pewnie z pozycji dokumentów.
Teraz jednak widzę, że piszesz o stawce procentowej - to zupełnie inna sprawa.

W tw__towar masz tw_idvatsp czyli identyfikator stawki vat przy sprzedaży a w sl_stawkavat masz słownik stawek vat
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: pajong w Kwiecień 19, 2012, 23:23:42
fakt, moja nieuwaga chodziło mi o Stawkę %, 
Próbuje wyciągnąć dane w postaci

Symbol | Nazwa | stan | cena | PKWiU | EAN | VAT%

SELECT tw_Symbol, tw_Nazwa, st_Stan, tc_CenaBrutto1, tw_PKWiU, tw_PodstKodKresk,  vat_Stawka
     FROM tw__Towar
          INNER JOIN tw_Stan ON tw__Towar.tw_Id = tw_Stan.st_TowId
          INNER JOIN tw_Cena ON tw__Towar.tw_Id = tw_Cena.tc_IdTowar
     INNER JOIN sl_StawkaVat ON tw__Towar.tw_IdVatSp = sl_StawkaVAT.vat_Id    
     WHERE tw_Stan.st_MagId = 1"

chyba powinno być ok.
Dzięki ;)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: tkrolik w Czerwiec 25, 2012, 02:21:58
Czy może ktoś wrzucić najświeższą dokumentację bazy danych subiekta 1.28
bo 1.29 nie musi być :)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Piotr S. w Lipiec 17, 2012, 15:57:21
Jakby ktoś wrzucił od razu 1.29 też byłoby miło :)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: marcink w Lipiec 17, 2012, 16:51:41
Trzeba napisać do Insertu.

Na forum jest specyfikacja chyba do 1.25 ale świeższą też możecie się podzielić :)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Biniew w Lipiec 17, 2012, 19:00:45
http://biniew.pl/1_29.zip

Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: jaras w Styczeń 07, 2013, 21:24:44
fragment mojego warunku to:

…..WHERE     (nzf_Data = '2013-01-01') AND (nzf_Nota……….

Jak zamiast daty 2013-01-01 wstawić funkcję pobierającą pierwszy dzień aktualnego miesiąca ?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: birds22 w Styczeń 07, 2013, 22:29:42
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: jaras w Październik 02, 2013, 14:31:57
Dziękuje pięknie za ostatnią pomoc.

Proszę jeszcze o podpowiedz jak uzyskać funkcje określającą  datę - 3 lata wstecz.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: :-Przemo. w Sierpień 22, 2015, 23:46:54
Dzień dobry,

Poprosiłbym jeszcze o listę dozwolonych zmiennych (tzn. czasem w Waszych zapytaniach można np. wybrać okres, którego dotyczy zestawienie), np. 
Cytuj
{DR: Z okresu::}

Pozdrawiam
    :-Przemo.

zaczynamy [...ciach...]
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: dkozlowski w Sierpień 23, 2015, 10:23:40
Wszystko masz opisane w pomocy do programu: F1->Zestawienia własne SQL.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: zielePL w Luty 02, 2017, 16:36:35
A wie ktoś może jak przywołać wartość detaliczną dokumentu (dokładnie faktury zakupowej)?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: candy w Luty 02, 2017, 16:47:52
Chodzi ci o wartość towarów z tej FZ, wyrażoną w aktualnych cenach sprzedaży?

Nie ma takiej wartości w bazie. Musisz sobie wyliczyć.
Przy FZ (zwykłej) to nie takie trudne, ale przy FZ zbiorczej może być sporo zabawy.

Pamiętaj tylko, że ta wartość może się w każdej chwili zmienić, wystarczy zmienić cenę sprzedaży w kartotece towaru.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sklep@elektrofull.pl w Czerwiec 27, 2017, 17:55:09
Witam

Mam takie zestawienie SQL ktore dziala ale nie do konca tzn. wystawietla mi liste sprzedanych towarow z okreslonego przeze mnie zakresu wskazuje ja prawidlowo ale w pozycji ilość i wartosc sa bledy i nie prawdziwe informacje "co zrobilem nie tak ?? "

druga sprawa to jak zrobic na tym etapie sumowanie tych samych pozycj jak to sie ma w wzorcu wydruku. Bardzo prosze o pomoc.....

wygenrowne zestawienie sql

Prosze KLIKNAC na obrazku prawym przyciskiem POKAZ OBRAZ bo sie moze nie miescic w okienku
(http://www.elektrofull.pl/allegro/subiekt_sql.jpg)

kod sql ponizej

SELECT
       dok_NrPelny [Nr dokumentu],
       dok_DataWyst [ Data wystawienia],
       adr_Nazwa [Kontrahent],
       [Nazwa towaru] = CASE
                   WHEN tw_Nazwa = ''
                       THEN '(Brak nazwy towaru)'
                       ELSE CASE
                               WHEN tw_Nazwa IS NULL
                                   THEN ob_opis
                                   ELSE tw_Nazwa
                            END
                  END,
       tw_Symbol [Symbol towaru],
       tw_Opis [Opis],
       ob_Ilosc [Ilość],
       ob_WartNetto[Wartość netto],
       tw_pkwiu [PKWiU],
      tw_IdKrajuPochodzenia [Kod kraju],
       tw_KodTowaru [Kod CN]
FROM dok__Dokument
LEFT JOIN kh__Kontrahent ON dok__Dokument.dok_PlatnikId=kh__Kontrahent.kh_Id
LEFT JOIN adr__Ewid ON kh_Id=adr_IdObiektu AND adr_TypAdresu=1
LEFT JOIN dok_Pozycja ON dok__Dokument.dok_Id=dok_Pozycja.ob_DokHanId
LEFT JOIN tw__Towar ON dok_Pozycja.ob_TowId=tw__Towar.tw_Id
LEFT JOIN sl_GrupaTw ON tw__Towar.tw_IdGrupa = sl_GrupaTw.grt_Id
WHERE
 dok_DataWyst BETWEEN {DR:Data dokumentu z okresu:}
AND
(dok__Dokument.dok_PlatnikId = 25499)
  AND ob_Ilosc<=1
     ORDER BY dok_DataWyst, dok_NrPelny
Tytuł: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: candy w Czerwiec 27, 2017, 18:14:58
Wystawiasz faktury zbiorcze?
Jeśli tak to to w ogóle nie zadziała.
Ten SELECT wyświetli poprawnie w zasadzie tylko dane z faktur "zwykłych".
Na korektach, zbiorczych i zaliczkowych pokaże głupoty.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sklep@elektrofull.pl w Czerwiec 28, 2017, 11:52:58
Dziekuje za zainteresowanie

Dokładnie wystawiam faktury zbiorcze :( i musze takie wystawiac z Wztek z calego tygodnia....

Jak to zrobic by dzialalo czyms zastapic ?

druga sprawa jak grupować ?



Prosze o wskazówki - moge oczywiscie sie odwdzieczyc jakos finansowo jesli inaczej sie juz nie da :)

Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: candy w Czerwiec 28, 2017, 12:06:43
Oj, musiałbym Ci napisać nowe zestawienie.
Trzeba uwzględnić że pozycja faktury zbiorczej zawiera różnicę w cenie i ilości w stosunku do WZ dla pozycji wynikające z wcześniej wystawionych WZ, a cenę i iość dla pozycji dopisanych. Bardzo to zakręcone i zestawienia wychodzą niebanalne.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: sklep@elektrofull.pl w Czerwiec 28, 2017, 12:14:57
Bardzo proszę jesli by bylo mozna jakos sie dogadac, bo nie chce oczywiscie nic za darmo, a nie zdobede na tyle szybko tej wiedzy. A bede niestety z tego korzystal co miesiac. Moglibysmy sie dogadac jakos ? :)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: candy w Czerwiec 28, 2017, 13:09:16
OK, ale to już na PW.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: g6pl w Sierpień 23, 2018, 17:17:12
Witam ALL
A jakie zadać zapytanie, aby wyświetlić(wyłowić) tylko towary, które są na stanie??
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: yemet w Sierpień 23, 2018, 17:28:01
select tt.tw_Nazwa from tw__Towar tt where exists (select 1 from tw_Stan st where st.st_Stan>0 and st.st_TowId=tt.tw_id)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: g6pl w Sierpień 27, 2018, 08:18:19
Witam
Dziękuję....
A jak dodać do powyższego zapytania, żeby pobierał dane tylko z jednego wskazanego magazynu i sortował wynik alfabetycznie?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: g6pl w Sierpień 27, 2018, 14:40:45
Sortowanie po nazwie działa.. ale jak z tym magazynem zrobić?

select tt.tw_Nazwa as "Nazwa Towaru", st.st_Stan as "Stan"
from tw__Towar tt
left join tw_Stan st on st.st_TowId=tt.tw_id
where st.st_Stan>0
Order by tt.tw_Nazwa asc
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: yemet w Sierpień 27, 2018, 17:02:13
Trzeba dopisać joina do tabeli słownika magazynów i doczepić kontrolkę filtru na magazyny.

EDIT: Sam filtr na magazyny wystarczy jak nie potrzebujesz wyświetlać nazwy magazynu.
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: alutka w Październik 16, 2018, 15:08:31
jak napisać polecenie SQL żeby mi wyfiltrowało z listy towarów/produktów: cechę towaru oraz kod CN produktu?
musi być:      symbol kartotekowy, nazwa produktu, cecha, kod CN
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Biniew w Październik 17, 2018, 07:36:09
a ktora cecha? bo grupa jest jedna i to proste a cech moze byc bardzo wiele
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: arronlewis w Styczeń 03, 2019, 12:13:11
Witam

Szukam pomocy w przygotowaniu zestawienia, które będzie dla wybranego towaru pokazywało raport obrotów z następującymi kolumnami:

Lp., Data dokumentu, Nr dokumentu, Nazwa pełna Kontrahenta, Miasto Kontrahenta, Przychód (ilościowo), Rozchód (ilościowo)

Podobne zestawienie można wyciągnąć z Informatora towaru, ale niestety nie można wybrać wszystkich powyższych kolumn (np. nazwa kontrahenta tylko skrócona zamiast pełnej, nie można wybrać kolumny miasto), a ponadto potrzebuję, aby przy nazwie towaru na wydruku znalazła się informacja Symbol towaru u dostawcy oraz Uwagi z zakładki Opis w kartotece towaru (na wydruku pola te musiałyby się nazywać kolejno "Termin ważności" i "Seria"). Fajnie, gdyby na wydruku pojawiła się również informacja o wybranym okresie dla którego jest wygenerowane zestawienia.

Czy ktoś pomoże? :)
Tytuł: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: candy w Styczeń 03, 2019, 12:40:02
A zdradzisz jak sobie wyobrażasz tę pomoc?
Bo tak na podstawie pytania to nie bardzo wiem czego oczekujesz.
Że ktoś je napisze czy że ktoś podpowie, w których tabelach masz szukać?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: arronlewis w Styczeń 03, 2019, 18:30:11
W sensie, że ktoś napisze takie zestawienie odpłatnie :)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: Biniew w Styczeń 03, 2019, 19:27:31
teraz to zes pomógł:-)
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: adam_implus w Marzec 15, 2021, 14:47:02
Witam, dla większości to pewnie proste, ale ja w SQL nie siedzę. Potrzebuje wygenerować zestawienie: nr id kontrahenta, symbol, pełna nazwa tego kontrahenta, nr konta wirtualnego, dowolny parametr własny kontrahenta. Może ktoś pomoże?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: kartman w Październik 23, 2021, 15:30:41
Wlasnie ucze sie SQLa, to moje pierwsze kroki.
Przygotowalem sobie zestawienie, ktore prezentuje mi jaka jest masa towarów znajdujących sie na ZK wystawionych w danym oknie czasowym pogrupowane wg Kontrahentow, Czyli wiersz 1: Kontrahent1 | X kg, wiersz 2: Kontrahent2 | Y kg, wiersz 3: Kontrahent3 | Z kg.
Tresc zapytania SQL na dole.

Chcialbym zrobic drugie zestawienie, ktore zaprezentuje to samo, ale z WZ, zamiast ZK, wiec w nowym zapytaniu zmienilem tylko dok_Typ=16 na dok_Typ=11. Zapytanie przechodzi test "Testuj zapytanie", ale w przeciwienstwie to identycznego zapytania na podstawie dok_Typ=16 daje puste zestawienie.
Gdzie robie blad?

PS Poleci ktos jakies sciagawki z opisem co faktycznie znajduje sie w danej kolumnie w glownych tabelach? Np. czym jest dok_Podtyp=0 czym 1 a czym 2??

SELECT
kh__Kontrahent.kh_Symbol AS Kontrahent
, SUM(tw__Towar.tw_Masa*dok_Pozycja.ob_Ilosc) AS Masa
FROM dok_Pozycja
INNER JOIN tw__Towar   ON dok_Pozycja.ob_TowId         =   tw__Towar.tw_Id
INNER JOIN dok__Dokument   ON dok_Pozycja.ob_DokHanId      =   dok__Dokument.dok_Id
INNER JOIN kh__Kontrahent   ON kh__Kontrahent.kh_Id         =   dok__Dokument.dok_PlatnikId
WHERE (
 (dok__Dokument.dok_DataWyst BETWEEN {D: Wprowadzone w okresie od:} AND {D: do})
AND (dok__Dokument.dok_Typ=16)
)
GROUP BY kh__Kontrahent.kh_Symbol
ORDER BY Kontrahent ASC
;
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: dkozlowski w Październik 23, 2021, 15:43:28
Chcialbym zrobic drugie zestawienie, ktore zaprezentuje to samo, ale z WZ, zamiast ZK, wiec w nowym zapytaniu zmienilem tylko dok_Typ=16 na dok_Typ=11. Zapytanie przechodzi test "Testuj zapytanie", ale w przeciwienstwie to identycznego zapytania na podstawie dok_Typ=16 daje puste zestawienie.
Gdzie robie blad?

Złączenie z dokumentami magazynowymi jest realizowane poprzez kolumnę "ob_DokMagId", a nie "ob_DokHanId".

PS Poleci ktos jakies sciagawki z opisem co faktycznie znajduje sie w danej kolumnie w glownych tabelach? Np. czym jest dok_Podtyp=0 czym 1 a czym 2??

Powtarzamy to do znudzenia na forum, nie rozumiem dlaczego nie skorzystałeś z tej zgromadzonej przez lata wiedzy ? Opis struktury bazy danych znajduje się w równie niedocenianej i mijanej pomocy do programu.

Polecam też współpracę z wybranym dostawcą programu/serwisantem, osoby w odróżnieniu od dokumentacji odpowiadają na zadane pytania.

ps.
Przypominam też, że podstawą do tworzenia rozwiązań dodatkowych jest znajomość działania programu, a w programie można określać ilość również w dodatkowych jednostkach miary, ale waga towaru jest zapisywana w jednostce podstawowej - wartości przeliczasz według jednostki wybranej na dokumencie, a nie podstawowej jednostki:
 
Cytuj
ob_Ilosc   Ilosc towaru w wybranej jednostce na pozycji
ob_IloscMag   Ilość towaru w jednostce podstawowej towaru
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: kartman w Listopad 02, 2021, 02:21:07
Podkresle jeszcze raz, tak jak w poprzednim poscie: to moje pierwsze kroki w SQLu. Litosci ;)

Popelnilem pewny zapytanie SQL, ktorego tresc jest zmanipulowanym przeze mnie wynikiem SQL Profilera dla zapytania, ktore baza dostaje kiedy uruchamiam zestawienie "Sprzedaz wedlug kontrahentow". Nie analizowalem CASE'ow i JOINow, tylko sklecilem cos takiego, zeby zamiast marzy otrzymac "narzut" czyli zysk/koszt. Usunalem tez niepotrzebne mi kolumny, dodalem troche Transact SQLa zeby moc wybierac zakres czasu i filtrowac po sl_GrupaKh.grk_Id.
Oto tresc zapytania:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa

Daje mi to co chce podejrzec.

Popelnilem tez drugie - bardzo podobne - zapytanie. Roznice sa wytluszczone:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
AND tw__Towar.tw_IdGrupa NOT IN (9, 28)
GROUP BY adr_Nazwa

Oba zapytania oddzielnie daja mi uzyteczne odpowiedzi. Mimo to, chcialbym niejako dodac kolumne "Narzut2" z drugiego zapytania - z uwzglednieniem tego dodatkowego argumentu w klauzuli WHERE - do mojego pierwszego zapytania tak, zeby w odpowiedzi na to pierwsze zapytanie w Subiekcie obok kolumny Narzut pojawila sie kolumna Narzut2 z wartosciami z drugiego zapytania.

Jak to polaczyc?

Subquery w klauzuli SELECT? Probowalem takiego:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
, Narzut2 =
(
SELECT
Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
AND tw__Towar.tw_IdGrupa NOT IN (9, 28)
)
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa

Niestety w kazdym wierszu kolumny Narzut2 podaje mi te sama wartosc.

Subquery w innej klauzuli, np FROM?
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: kartman w Listopad 03, 2021, 12:35:39
Udało się przy pomocy kolegi spoza tego forum. W razie gdyby kogos to interesowalo, tresc zapytania ponizej:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
, Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0  OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) / SUM(CASE WHEN (ob_TowRodzaj&22)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa
Tytuł: Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
Wiadomość wysłana przez: yemet w Listopad 03, 2021, 12:42:06
dbo.fnZestSub_KosztSpr({D: od:}
Przy funkcjach sprawdzających koszt powinno być użyte {D: do} jeśli koszt ma być liczony zgodnie z fabrycznym zestawieniem.

AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
Przedstawiciel jako grupa kontrahentów? Można i tak ale bardziej naturalnym wyborem byłby opiekun kontrahenta.