mojaSymfonia FORUM
https://forum.mix-soft.pl/

[HMF2017] Drukowanie do pdf wielu dokumentów
https://forum.mix-soft.pl/viewtopic.php?f=15&t=7817
Strona 1 z 1

Autor:  koronen [ 2017-03-15, 08:31 ]
Tytuł:  [HMF2017] Drukowanie do pdf wielu dokumentów

Drukuję do pdf wiele dokumentów w pętli. Przechodzi mi powiedzmy 4000 po czym się wysypuje komunikatem "błednie umieszczony endif" lub "błędnie umieszczony endsub" lub inne świadczące o błędnej składni. Oczywiście aktualnie drukujący się dokument jest poprawny i składnia też się nagle nie zmieniła. Wygląda na to że następjue coś w rodzaju przepełnienia pamięci :/? Miał ktoś może podobne doświadczenia?

Kod:
int errDk
long i
Dispatch xDokSp = xFactory.NewObject("BDokSp")
for i=200000 to i>210000
   errDk = xDk.Load(Using"id='%l'",i)
   if !errDk then
      Run("Dokument VAT IFJ",-2,KatalogGlowny,"0",(Using "%l", xDk.id),T(xDk.numer),"","","")
   Endif
next i

Autor:  rafal [ 2017-03-15, 09:35 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Możliwe. Zrób tak, żeby w pętli przy każdym dokumencie tworzył się nowy obiekt BDokSp i niszczył.

Kod:
int errDk
long i
Dispatch xDokSp
Dispatch xNull
for i=200000 to i>210000
xDokSp  = xFactory.NewObject("BDokSp")
   errDk = xDk.Load(Using"id='%l'",i)
   if !errDk then
      Run("Dokument VAT IFJ",-2,KatalogGlowny,"0",(Using "%l", xDk.id),T(xDk.numer),"","","")
   Endif
xDokSp = xNull
next i


Może zamiast obiektu BDokSp użyj
Kod:
baseDK dk

Autor:  koronen [ 2017-03-15, 15:34 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Niestety nie pomogło ani niszczenie obiektu ani użycie BaseDK... Może w samym wydruku trzeba coś "zmienić"?

Autor:  rafal [ 2017-03-15, 16:01 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Trzeba by u Ciebie popatrzeć.

Autor:  koronen [ 2017-03-15, 22:57 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Żeby się upewnić że nie same modyfikacje w wydruku są problemem postanowiłem założyć nową bazę i maksymalnie uprościć procedurę. Utworzyłem jedną fakturę i drukowałem ją w pętli. Niestety efekt jest ten sam - utworzyło się około 4000 dokumentów i pojawił się błąd typu "błędnie umieszczony endif"...

Kod:
long i
for i=1 to i>10000
   Run("Dokument VAT I",-2,"C:\\Import\\","0","65536",(Using"%l",i),"","","")
next i


Naprawdę nie ma na to sposobu? Dzięki za wskazówki.

Autor:  rafal [ 2017-03-15, 23:43 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Pokaz screena komunikatu bledu.

Autor:  koronen [ 2017-03-16, 21:23 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Pierwszy komunikat to:

Obrazek

po kliknięciu "OK" pojawia się

Obrazek

po kolejnym "OK" komunikat powtarza się i tak aż do końca pętli.

Autor:  rafal [ 2017-03-16, 22:07 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Brak obrazkow.

Autor:  koronen [ 2017-03-16, 22:36 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Powinno działać z menu kontekstowego "otwórz grafikę w nowej karcie" - przynajmniej u mnie działa to w chrome. Ale wrzucam inne url.
Pierwszy komunikat:
Obrazek
Kolejne:
Obrazek

Autor:  rafal [ 2017-03-16, 23:06 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Zobacz jeszcze czy cos da opoznienie w petli zeby byl czas na wykonanie zapisu.

Autor:  koronen [ 2017-03-16, 23:26 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Przede wszystkim "opóźniacz" spowoduje że raport przestanie być funkcjonalny bo już teraz wykonuje się 2 godziny a przechodzi powiedzmy 20%. Po drugie mocno wątpię w skuteczność bo błędy pojawiają się z podobną częstotliwością czyli po jakiś 4000-4500 dokumentów - jeśli byłaby to kwestia czasu to wydaje mi się że raport wysypywałby się w różnych momentach. Poza tym "Run" czeka aż zakończy się działanie raportu wywoływanego - np. jeśli wrzucimy "message" do wywoływanego raportu to Run zatrzymuje działanie pętli do póki raport się nie wykona do końca. Myślę że przydałoby się jakiś mechanizm w stylu rodzaju garbage collector... Nie mam niestety pomysłu:(

Autor:  rafal [ 2017-03-17, 00:57 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Ok

Autor:  rafal [ 2017-03-17, 08:59 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

Wygląda to na operację jednorazową więc możesz zrobić to partiami.
A potem generować na bieżąco po jednym w OnAfterInsert()

Autor:  bongos [ 2017-08-01, 14:11 ]
Tytuł:  Re: [HMF2017] Drukowanie do pdf wielu dokumentów

koronen pisze:
Żeby się upewnić że nie same modyfikacje w wydruku są problemem postanowiłem założyć nową bazę i maksymalnie uprościć procedurę. Utworzyłem jedną fakturę i drukowałem ją w pętli. Niestety efekt jest ten sam - utworzyło się około 4000 dokumentów i pojawił się błąd typu "błędnie umieszczony endif"...

Kod:
long i
for i=1 to i>10000
   Run("Dokument VAT I",-2,"C:\\Import\\","0","65536",(Using"%l",i),"","","")
next i


Naprawdę nie ma na to sposobu? Dzięki za wskazówki.


Hej,

no niestety mi tak 'czasami' wywala się hmf na rozwiązaniu OnTimer-owym.
Coś musi być nie teges z intepreterem AmBasic przy 'długim obciążeniu' bo za diabła błędu nie znalazłem tam gdzie program sugerował.
Pozostaje mi się połączyć w bólu z kolegą :-).
No chyba, że masz jakieś obserwacje to napisz.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/