0

Dateianhang per importFile aus Druckformular generieren...

Hallo Gemeinde,

ich hadere ein wenig mit den neuen Funktionen importFile() und file(). Im Prinzip geht es mir darum, per Button-Druck ein individuell benamtes PDF zu erstellen und idealerweise direkt in der Vorschau zu öffnen.

Im Webinar haben wir gelernt, dass zumindest der Teil des Öffnens in der Vorschau, wie man es mit printRecord gewohnt ist nicht funktioniert, weil nur die Funktion importFile die namensgebende Option bietet.

Als Workaround wollte ich nun per Button ein Dokument in den Anhang schubsen und dieses ein Bild-Feld füllen lassen - so könnte der Anwender per Klick auf das gefüllte Bildfeld die wie gewünscht benamte PDF in der Vorschau öffnen. Das wäre ein Klick mehr, hätte aber, so dachte ich zumindest, den Vorteil, dass ich im Datensatz-Anhang so eine Historie der generierten PDFs zu liegen hätte und im Bildfeld immer das letzte vorliegt.

 

Mit

let myLayout := "Kamera-Aufkleber";
let myName := Kamera.'Werks-IP' + " - " + format(date(today()), "YYYY-MM-DD") + ".pdf";
importFile(this, printAndSaveRecord(this, myLayout), myName)

wird das PDF wunschgemäß in den Anhang gesetzt. Ergänze ich dieses Script um

'Kamera-Aufkleber' := file(this, myName)

landet das korrekt benamte PDF im Bildfeld 'Kamera-Aufkleber', aber nicht im Anhang!?

D.h. jede Funktion alleine macht, was ich erwarte - in Kombination aber nicht. Hat jemand eine Idee, welchem Denkfehler ich unterlegen bin? Oder nimmt file() tatsächlich die Datei wieder aus dem Anhang heraus?

 

lg, Torsten

6 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, 

    Die Bildfelder sind quasi eine Erweiterung der Anhangsfelder. Mit 'Kamera-Aufkleber' := file(this, myName) schiebst du den File von Anhängen ins Bildfeld. Wenn du jetzt mit 'Kamera-Aufkleber' :=null das Bildfeld leerst, wird die Datei zurück in den Anhängen landen. Das ist aber keine Lösung für dich, sondern nur meine Erfahrungen mit Bildfelder und Anhängen.

     

    Leo

    • Torsten_Stang.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    d.h. wenn ich zu Scriptanfang das Bildfeld leere hätte ich zumindest die Historie im Anhang und das aktuelle im Bildfeld?

    Das wäre auch okay, muss ich nachher probieren, wenn ich vom Weiher zurück bin ;-)

     

    lg, Torsten 

    • Torsten_Stang.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo nochmal,

    wollte nur zurückmelden:

     

    'Kamera-Aufkleber' := null;
    let myLayout := "Kamera-Aufkleber";
    let myNumber := cnt(files(this)) + 1;
    let myName := Kamera.'Werks-IP' + " - " + format(date(today()), "YYYY-MM-DD") + ".pdf";
    importFile(this, printAndSaveRecord(this, myLayout), myName);
    'Kamera-Aufkleber' := file(this, myName)

     

    macht genau das, was ich mir nach Deinem Hinweis dachte, Leo. Ist bereits ein PDF im Bildfeld, wird es in den Anhang geschoben, ein neues generiert und das Bildfeld damit gefüllt. Damit ist das aktuelle im Frontend für den User, ältere im Anhang als Historie. Gefällt mir viel besser so, danke!

    Da ich die PDFs in der Regel wenn überhaupt erst nach einiger Zeit neu erstelle genügt mir hier die Unterscheidung per Datum im Dateinamen. Ansonsten hätte ich mit cnt(files(this))+1 eben eine fortlaufende Nummer im Namen einbauen können (falls das jemand so braucht ;-) ).

     

    lg Torsten 

    • Torsten_Stang.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo - Nachtrag:

     

    Das vorgenannte Script lässt die App am iPad in einer Endlos-Schleife zurück ;-(

     

    lg, Torsten 

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Stimmt, habe bei cr gemeldet 

    • Torsten_Stang.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke, bist mir zuvor gekommen...  ;-)

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 6Antworten
  • 4498Ansichten