mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Raport pomija dokumenty z listy - Dla czego?? https://forum.mix-soft.pl/viewtopic.php?f=15&t=6897 |
Strona 1 z 1 |
Autor: | wojtek [ 2015-10-26, 17:55 ] |
Tytuł: | Raport pomija dokumenty z listy - Dla czego?? |
System Symfoni ERP 2015 Poniżej zamieszczam treść raportu, który napisałem. Jego zadaniem jest dla dokumentów zakupu w buforze: 1.Uzupełnić datę i numer obcy, 2.Wystawić dokument handlowy, 3.Wystawić sprzężony z nim dokument magazynowy, 4.Wydrukować zestawienie wystawionych dokumentów Z nieznanych mi przyczyn raport - jeśli zastosować go dla większej ilości dokumentów - pomija bez żadnego komunikatu część zaznaczonych dokumentów z listy. Raport jest dość prosty, ale nie wiem, może popełniłem gdzieś jakiś błąd? Jeśli pominięte przez raport dokumenty znowu zaznaczę i włącze raport jeszcze raz to znowu część dokumentów się wystawia a część zostaje pominięta i pozostaje w buforze. Proszę o pomoc Kod: IORec dok_zk string sDokumId,sNrDok long dokumId long dokErr = SetTaggedPos (FS) long Err,Err2,Err3,nErr Dispatch xDk = xFactory.NewObject("BDokumentZk") int nr = 0 int i record k_ string recNrDok[50] endrec k_ podsum(1) str.wydruk ( 0, -1, 0 ) strona 50,50,50,100 string nazwaRaportu = "Podsumowanie" while dokErr dokumId = GetLineId() sDokumId = using "%l",dokumId nErr = xDk.Load("id="+sDokumId) sNrDok = xDk.kod dok_zk.clear() dok_zk.SetField("id", sDokumId) dok_zk.setfield( "numerObcy", ("."+data()) ) dok_zk.setfield( "dataObcy", data() ) Err = EditZK(dok_zk) popup(0,"Trwa wykonanie raportu....") popup(1,sNrDok) if Err then message "Nie udało się wprowadzić numeru obcego dokumentu: "+sNrDok exit endif if !xDK.czyWystawiony then Err2 = WystawDokumentHandlowy(dokumId,1,0,2) if !Err2 then message "Nie udało się wystawić dokumentu: "+sNrDok exit endif endif Err3 = UtworzDokumentMagazynowy (dokumId, 1, 1)//, 1) sNrDok = xDk.kod if Err3 then message "Nie udało się wystawić dokumentu magazynowego do faktury: "+sNrDok exit endif nr=nr+1 if podsum(1).recNrDok then grow podsum,1 podsum(nr).recNrDok = sNrDok dokErr = SetTaggedPos ( NX) wend print "Wystawiono dokumnety magazynowe dla następujących faktur:"+lf+lf for i = 1 to i > nr PRINT using "%i",i print ". "+podsum(i).recNrDok + lf next i |
Autor: | rafal [ 2015-10-26, 22:20 ] |
Tytuł: | Re: Raport pomija dokumenty z listy - Dla czego?? |
A nie jest tak, że nie może wystawić jednego dokumentu i wyskakuje w pętli while przez exit i nie kontynuuje na następnych? |
Autor: | wojtek [ 2015-10-27, 13:21 ] |
Tytuł: | Re: Raport pomija dokumenty z listy - Dla czego?? |
Zastanawiałem się nad tym, ale następowałoby wtedy przerwanie raportu - więc to nie to. Zmieniłem trochę kod i teraz go testuje. Wyglada że jest lepiej ale dopiero będę wiedział. Edit wrzuciłem tylko dla dokumentu który nie jest wystawiony - a podczas jego wystawiania automatycznie generowany jest dok. magazynowy. Kod: if !xDK.czyWystawiony then dok_zk.clear() dok_zk.SetField("id", sDokumId) dok_zk.setfield( "numerObcy", ("."+data()) ) dok_zk.setfield( "dataObcy", data() ) Err = EditZK(dok_zk) Err2 = WystawDokumentHandlowy(dokumId,1,2,2) if !Err2 then message "Nie udało się wystawić dokumentu: "+sNrDok+"\nSprawdź czy uzupełniono wymagane pola na dokumencie" exit endif else Err3 = UtworzDokumentMagazynowy (dokumId, 1, 1)//, 1) if Err3 then message "Nie udało się wystawić dokumentu magazynowego do faktury: "+sNrDok exit endif endif |
Autor: | wojtek [ 2015-10-27, 14:50 ] |
Tytuł: | Re: Raport pomija dokumenty z listy - Dla czego?? |
Podobno raport pomija część zaznaczonych dokumentów - tak jakby pozycja nie była "zaznaczona". Poniżej nowa wersja raportu. Czy jest możliwe żeby pętla while dla dokErr = SetTaggedPos (FS) pomijała zaznaczony dokument? Albo "nie nadażała" z wystawianiem dokumentów? Exit nie ma tu nic do gadania bo raport uległby zatrzymaniu, a zachowije się tak, że wystawia dokumenty bez żadnego błędu, tylko pomija z niektóre pozycje z listy. Kod: IORec dok_zk string sDokumId,sNrDok long dokumId long dokErr = SetTaggedPos (FS) long Err,Err2,Err3,nErr Dispatch xDk = xFactory.NewObject("BDokumentZk") int nr = 0 int i record k_ string recNrDok[50] endrec k_ podsum(1) str.wydruk ( 0, -1, 0 ) strona 50,50,50,100 string nazwaRaportu = "Podsumowanie" while dokErr dokumId = GetLineId() sDokumId = using "%l",dokumId nErr = xDk.Load("id="+sDokumId) sNrDok = xDk.kod popup(0,"Trwa wykonanie raportu....") popup(1,sNrDok) if Err then message "Nie udało się wprowadzić numeru obcego dokumentu: "+sNrDok exit endif if !xDK.czyWystawiony then dok_zk.clear() dok_zk.SetField("id", sDokumId) dok_zk.setfield( "numerObcy", ("."+data()) ) dok_zk.setfield( "dataObcy", data() ) Err = EditZK(dok_zk) Err2 = WystawDokumentHandlowy(dokumId,1,2,2) if !Err2 then message "Nie udało się wystawić dokumentu: "+sNrDok+"\nSprawdź czy uzupełniono wymagane pola na dokumencie" exit endif else Err3 = UtworzDokumentMagazynowy (dokumId, 1, 1)//, 1) if Err3 then message "Nie udało się wystawić dokumentu magazynowego do faktury: "+sNrDok exit endif endif sNrDok = xDk.kod nr=nr+1 if podsum(1).recNrDok then grow podsum,1 podsum(nr).recNrDok = sNrDok dokErr = SetTaggedPos ( NX) wend print "Wystawiono dokumnety magazynowe dla następujących faktur:"+lf+lf for i = 1 to i > nr PRINT using "%i",i print ". "+podsum(i).recNrDok + lf next i |
Autor: | wojtek [ 2015-10-27, 15:16 ] |
Tytuł: | Re: Raport pomija dokumenty z listy - Dla czego?? |
Znalazłem problem - może się komuś przyda. Raport bazuje na dokumentach zaznaczonych z listy - SetTaggetPoz - i jeżeli dokumenty sa w buforze i na liście dokumentów mam np 10 filtrowanych po statusie "bufor" to zaznaczonych pierwotnie elementów jest 1 do 10. Po wystawieniu dokumentu znika on z listy (bo założony jest filtr) i zmienia się liczba - teraz dokumentów nie jest już 10 tylko 9 - i dokument który był nr 2 teraz jest już numer 1 , a raport numer jeden już zrobił więc go pomija. Żeby raport działał dobrze trzeba go wywoływać bez filtru bufor albo zebrać najpierw w rekordzie informacje o id dokumentu i później zaczać wystawiać dokumenty wg tego raportu a nie settagedpoz |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |