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

Polecenie RUN w pętli
https://forum.mix-soft.pl/viewtopic.php?f=15&t=6557
Strona 1 z 1

Autor:  Adi [ 2015-03-20, 10:23 ]
Tytuł:  Polecenie RUN w pętli

Witam
Czy ktoś próbował uruchamiać polecenie RUN w pętli. Musze wygenerować wydruki pdf dla wielu dokumentów w celu eksportu na stronę www. Niestety wywołanie RUN w pętli powoduje koniec pętli. Nie wykonuje się dla kolejnych wywołań.
Próbowałem wstawić pętle opóźniającą, ale nic nie daje.

Autor:  rafal [ 2015-03-20, 10:27 ]
Tytuł:  Re: Polecenie RUN w pętli

pokaż kawałek kodu

Autor:  Adi [ 2015-03-20, 11:46 ]
Tytuł:  Re: Polecenie RUN w pętli

Kod:
err1 = SetTaggedPos(FS)
while err1
   id = GetLineId()
   Npdf = Plik_pdf(id)
   NEpp = Plik_Epp(id)
   NCsv = Plik_Csv(id)

   //teraz xml
   buf = Nepp
   replace ".epp",".xml"
   Nxml = buf


   //teraz zapisz w pliku
   setkey(dk,"id")
   setkeyseg(dk,"id",id)
   err = getrec(dk,EQ)
   buf = getfield(dk,"opis")
   delete " "
   delete " "
   delete " "
   delete "/"
   delete "/"
   delete "/"
   TNumer = buf
   if TNumer=="" then Tnumer = using "%l",id
   f.StartElement("Faktura")
   f.Element("NumerFV","<[!CDATA[" + getfield(dk,"kod")+"]]>")
   f.Element("DataWyst","<[!CDATA[" + getfield(dk,"data")+"]]>")
   f.Element("DataSprz","<[!CDATA[" + getfield(dk,"datasp")+"]]>")
   f.Element("TerminZapl","<[!CDATA[" + getfield(dk,"plattermin")+"]]>")
   skwota = using "%12.4f",GetField(dk,"walbrutto")
   f.Element("WartoscFV","<[!CDATA[" + skwota+"]]>")
   f.Element("NumerZam","<[!CDATA[" + Tnumer+"]]>")
   f.Element("PlikPdf","<[!CDATA[" + Npdf+".pdf"+"]]>")
   f.Element("PlikCsv","<[!CDATA[" + Ncsv+"]]>")
   f.Element("PlikEpp","<[!CDATA[" + Nepp+"]]>")
   f.Element("PlikXml","<[!CDATA[" + Nxml+"]]>")

   f.EndElement("Faktura")

   // teraz xml
   PobierzPola( rootEl ,"Firma", 1, "KH")
   PobierzPola( rootEl ,"Info", 1, "XT")

   PobierzPola( rootEl ,"Dokument", GetLineId( Id ), "DK")

   p = xml.createProcessingInstruction("xml","version='1.0' encoding='windows-1250' standalone='no'")
   xml.insertBefore(p,xml.childNodes(0))

   xml.Save(  Pkatalog + NXml )
   Siddok = using "%l",id
   RUN("Dokument VAT I DRUK",-2,PKatalog,"",Siddok,"","0","",Npdf,"")
err1 = SetTaggedPos(NX)
wend

Autor:  rafal [ 2015-03-20, 12:37 ]
Tytuł:  Re: Polecenie RUN w pętli

Dlaczego nazwę pliku przekazujesz w Arg5?

Oto działający przykład

Kod:
   
long err = SetTaggedPos(FS)
long id

while err
   id = GetLineId(err)
   
   Run("Dokument VAT I", -2, "e:\\tmp\\", "", (Using "%l", id), "", "0", "", "", "")

err = SetTaggedPos(NX)
wend


Z tym, że ja mam na początku raportu Dokument VAT I dodaną linię

Kod:
pdfDisp.Filename = arg1


Co powoduje, że nazwa tworzonego pliku to id_dokumenty.pdf

Autor:  Adi [ 2015-03-23, 09:07 ]
Tytuł:  Re: Polecenie RUN w pętli

Cześć
Przekazuję w arg5 ponieważ tworzę dla jednego dokumentu kilka dokumentów wynikowych csv,xml, itd.
Dla klienta pobierającego ze strony www nazwa pliku 345_dokument.pdf nic nie mówi, natomiast FV123_2015.pdf
już tak. Pierwotnie generowanie pdf miałem w podprogramie też nie działa.
Czy twój przykład działa dla wielu wybranych dokumentów.?

Autor:  rafal [ 2015-03-23, 09:29 ]
Tytuł:  Re: Polecenie RUN w pętli

Tak, przykład działa dla wielu zaznaczonych dokumentów.

Autor:  Adi [ 2015-03-26, 08:11 ]
Tytuł:  Re: Polecenie RUN w pętli

Miałeś racje działa w pętli, mój raport też, problem leżał w podprogramie do generowania xml. :oops:

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