0

Organisation von Anhängen

Moin zusammen,

gibt es in NINOX die Möglichkeit, Dokumente/ Verträge, welche wir je Datensatz unter der Büroklammer ablegen; selbst noch einmal zu organisieren (bspw: mit neuen Zusatzordnern wie "Anforderung"; "Angebot"; "Vertrag";)?

Alternativ hätten wir sonst x-Dokumente je Vorgang/Datensatz, was durchaus unübersichtlich wäre.

Danke schon jetzt für ne kreative Idee

10 Antworten

null
    • Florian_Heinebrodt
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Wir stehen vor dem gleichen Problem. Meine Lösung ist aktuell, ein eigenes Dokumentenmanagement zu bauen, also einer eigenen Tabelle für Anhänge, die sich dann mit Meta-Daten versehen und strukturieren lassen.

      • Kai_Mentrop
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Florian Heinebrodt 

      Hmmm, verständlich und nachvollziehbar, aber vom Prozess her umständlich (jedenfalls für uns). Aktuell ändern wir die Datenbezeichnungen entsprechend, damit wir uns zurecht finden, aber die Ablage der Dokumente in einer Ordnerunterstruktur wäre "hilfreich"

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Kai Mentrop Ordner-ähnliche Strukturen sind, wie Florian schon sagte, nur möglich, wenn man die Dateien nicht als Anhang des jeweiligen Datensatzes, sondern in einer Extra-Tabelle speichert.

      Das hat aber noch weitere Vorteile: Dateianhänge blähen die Datenbank auf und lassen den verfügbaren Speicherplatz schrumpfen. Will man vor diesem Hintergrund mal nichtmehr benötigte Dateianhänge löschen, muss man nicht jeden Stammdatensatz aufrufen und dort das Büroklammer-Register öffnen, um die darin befindlichen Dateien zu löschen, sondern kann das sehr viel schneller und einfacher in der Tabelle mit den Dateianhängen tun. Außerdem müssen gleiche Dateien/Dokumente, die in mehreren Datensätzen benötigt werden (z. B. AGB o. ä.), nicht mehr redundant bei jedem betreffenden Datensatz gespeichert werden. Auch das kann den Speicherbedarf deutlich reduzieren. Und wenn sich so ein Standard-Dokument mal ändert, muss man es nicht neu in jeden einzelnen Datensatz laden, sondern nur ein mal in der zentralen Dateiablage.

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      PS: Und in einer Extra-Tabelle lassen sich zu jeder Datei noch weitere Infos wie bspw. Dateiname, -art und -größe sowie Anmerkungen speichern, nach denen auch gesucht und gefiltert werden kann.

      • Kai_Mentrop
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro 

      OK, danke dafür, aber da das alles Individualdokumente sind, welche nicht mehrfach in verschiedenen Datensätzen vorkommen, wird das nicht funktionieren. Aber einen Versuch der Frage war es wert.

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen
    Kai Mentrop said:
    aber da das alles Individualdokumente sind

    Wobei das ja nur einer von mehreren Vorteilen war. Ich will auch niemanden zu irgendetwas überreden, aber vielleicht noch mal verdeutlichen, dass eine Auslagerung der Dateianhänge in eine eigene Tabelle genau das ermöglichen würde, was erwünscht war: Eine strukturierte Ablage nach Datei- und/oder Dokumenttyp. Natürlich wäre die Anhangtabelle mit den betreffenden Datentabellen verknüpft, so dass man bspw. aus einem Kunden-Datensatz heraus diesem ein neues Dokument zuweisen könnte. Und man hätte dann eine frei platzierbare tabellarische Übersicht aller Dokumente zu diesem Kunden, auf Wunsch kommentiert sowie sortiert oder gefiltert nach Typ.

    Aber das wie gesagt nur noch mal zur Verdeutlichung. Am Ende kann und soll es natürlich jeder so machen, wie es für ihn am besten ist.

      • Michael.3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hallo planox. pro ,

       

      ich suche gerade nach dieser Möglichkeit. Also Datensatzanhänge, die mit Create TextFile erzeugt wurden und nun unter der Büroklammer hängen mit weiteren MetaDaten in eine weitere Tabelle zu speichern, da innerhalb der Büroklammernablage keine Sortierung möglich ist.

       

      Die zusätzliche Tabelle ist da, die neuen Metadaten auch aber ich bekomme den Dateianhang nicht rüber.

      • Michael.3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Die Anhänge befinden sich in der Tabelle Rechnungsläufe und ich hätte sie gerne in der Tabelle Zahlungsträger.

       

      let myBNK := 'BNK-Lauf-ID';
      let myZLDat := format(now(), "YYYY-MM-DD_HHmm";
          let myChoise := dialog("Buchungs-ID", "Ist die Buchungs-ID: " + myBNK + " noch die aktuelle?", ["ja", "nein"]);
          if myChoise = "nein" then
              alert("Bitte zuerst die Banklauf-ID manuell aktualisieren!")
          else
              if 'Zahlaufträgedatei erstellt?' = 1 then
                  alert("Bitte noch nicht übertragene Dateien auswählen!")
              else
                  let myZDatei := 'Zahlaufträgedatei erstellt?';
                  let myArray := (select Zahllauf where 'Status Freigabe' = 1 and 'Embargo-Prüfung' = 1 and 'Z-Datei erstellt' = 0 and Gesperrt != 1);
                  let myRow1 := "Transferart;Ausgabeart;Eigenkontoname;Auftragsunterart;Eigenkonto-BLZ/BIC;Eigenkonto-Nummer;Fremdkonto-BLZ/BIC;Eigenkonto-Inhaber;Fremdkontoname;Fremdkonto-Nummer;Fremdkonto-Inhaber;Verwendungszweck;DM-Betrag;Angelegt;Geplant;Späteste Ausführung;Ausgeführt;Skonto bis;Gebucht;Wertstellung;Fremdkonto-Inhaber;Skonto DM;Mehrfachausführung;Anzahl Ausführungen;Modus;Zusatzdaten;Ausstellungsort;Schecknummer;Textschlüssel;Memotext;Gesperrt;TAN1;TAN2;Angelegt von;Zuletzt geändert von;zuletzt geändert am;Primanota;Kategorisierungen;Betrag EUR;Auftragswährung;Skonto EUR;Umsatztext;1. Ausführung;externe AuftragsID;letzte Ausführung;Ende-zu-Ende-Referenz" + "
      ";
                  let myRows := for i in myArray do
                          i.Transferart + ";" + i.Ausgabeart + ";" + i.Eigenkontoname + ";" + i.text(Auftragsunterart) + ";" + i.'Eigenkonto-BLZ/BIC' + ";" + i.'Eigenkonto-Nummer' + ";" + i.'Fremdkonto-BLZ/BIC' + ";" + i.'Eigenkonto-Inhaber' + ";" + i.Fremdkontoname + ";" + i.'Fremdkonto-Nummer' + ";" + i.'Fremdkonto-Inhaber' + ";" + i.Verwendungszweck + ";" + i.'DM-Betrag' + ";" + i.Angelegt + ";" + i.Geplant + ";" + i.'Späteste Ausführung' + ";" + i.'Ausgeführt' + ";" + i.'Skonto bis' + ";" + i.Gebucht + ";" + i.Wertstellung + ";" + i.'Fremdkonto-Inhaber' + ";" + i.'Skonto DM' + ";" + i.'Mehrfachausführung' + ";" + i.'Anzahl Ausführungen' + ";" + i.Modus + ";" + i.Zusatzdaten + ";" + i.Ausstellungsort + ";" + i.Schecknummer + ";" + i.'Textschlüssel' + ";" + i.Memotext + ";" + i.text(Gesperrt) + ";" + i.TAN1 + ";" + i.TAN2 + ";" + i.'Angelegt von' + ";" + i.'Zuletzt geändert von' + ";" + i.'Zuletzt geändert am' + ";" + i.PrimaNota + ";" + i.Kate + ";" + i.'Betrag EUR' + ";" + i.'Auftragswährung' + ";" + i.'Skonto EUR' + ";" + i.Umsatztext + ";" + i.'1. Ausführung' + ";" + i.'externe AuftragsID' + ";" + i.'letzte Ausführung' + ";" + substr(i.'Ende-zu-Ende-Referenz', 0, 32) + "
      "
                      end;
                  let myFileName := format(now(), "YYYY-MM-DD_HHmm") + " " + myBNK + " " + "Zahllauf" + ".csv";
                  let myCSV := createTextFile(this, myRow1 + myRows, myFileName);
                  'Anzahl der Zahlungstransfers' := cnt(myArray);
                  'Letzter ZL am' := now();
                  Gesamtwert := sum(myArray.'Betrag EUR');
                  let newBLP := (create 'Bankenlauf-Protokoll');
                  newBLP.(Datum := today());
                  newBLP.(Positionen := cnt(myArray));
                  newBLP.(Gesamtbetrag := sum(myArray.'Betrag EUR'));
                  newBLP.(ID := myBNK);
                  alert("Es wurden " + cnt(myArray) + " Datensätze mit einem Transfervomumen von " + sum(myArray.'Betrag EUR') + " EUR verarbeitet. Bitte die Zahlungsträgerdatei herunterladen und im Filesysem <Dokumente/Zahlungsträgertransfer> ablegen, damit MacGiro sie importieren kann.");
                  let newZT := (create 'Zahlungsträger');
                  newZT.(Dateierstellung := today());
                  newZT.('BNK-ID' := myBNK);
                  newZT.(Dateinamen := myFileName);
                  newZT.(Datei := importFile(this, printAndSaveRecord(this, myFileName)));
                  newZT.(Anzahl := cnt(myArray));
                  newZT.(Datei := myFileName);
                  newZT.(Wert := sum(myArray.'Betrag EUR'))
              end;
              ...

       

      Hast Du eine Idee wie das geht?

       

      Habe es mit printandsafe probiert aber nicht hinbekommen.

       

      VG

       

      Michael

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michael 

      Hallo Michael, ohne mir dein Script jetzt genauer angesehen zu haben: Bei createTextFile(), importFile() und printAndSaverecord() wird als erster Parameter jeweis die ID des Datensatzes angegeben, in dem die Datei erstellt bzw. gespeichert werden soll. Meistens ist es die des aktuellen Datensatzes, also"this". Es kann aber auch eine beliebige andere ID sein, z. B. die eines gerade neu erzeugten Datensatzes.

      Desweiteren stellt sich die Frage, in welchem Format die Datei erstellt werden soll. Mit printAndSaveRecord() bekommt man ein PDF-File, mit createTextFile() eben eine Textdatei mit beliebiger Erweiterung (.txt, .csv, .htm ...).

      Will man also bspw. aus dem aktuellen Datensatz ein PDF erzeugen, aber in einer anderen Tabelle speichern, könnte das so aussehen (reduziert auf den Vorgang des Erzeugens und Speicherns der Datei):

      let me := this;
      let myFileName := "Trallala.pdf":
      let newRecord := create TABELLE;
      importFile(newRecord, printAndSaveRecord(me, "DRUCKLAYOUT"), myFileName)
      

      Als Ergebnis würde sich im Anhang des neu erzeugten Datensatzes in TABELLE eine Datei namens "Trallala.pdf" befinden. Will man die Datei nicht im Anhang, sondern in einem Bildfeld speichern, setzt man in der letzten Zeile einfach die ID und den betreffenden Feldnamen vor das "importFile":

      newRecord.BILDFELD := importFile(newRecord, ...)
      
    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 8 Tagen
    • Gemeldet - anzeigen

     Ich nutze die von dir hier beschriebene Syntax, um ein pdf-Lieferschein in einer anderen Tabelle als die, in der das Drucklayout liegt, in einem Bildfeld abzuspeichern. Das funktioniert auch soweit. Allerdings habe ich das Problem, dass wenn ich die Funktion in einer Schleife in einem Script verwende, welche mehrfach durchlaufen wird, teilweise die Dateien nicht in dem Bildfeld abgespeichert werden. Nun habe ich ein Sleep (1000) nach jeder iteration eingebaut, aber das Problem bleibt hier und da bestehen.  Hier ist ein Scriptausschnitt:

    if i.Vertriebsweg = 11 then
                    printRecord(neuerLS, "Lieferschein_REWE");
                    let allepdf := printAndSaveRecord(neuerLS, "Lieferschein_XYZ");
                    neuerLSArchiv.(Lieferschein := importFile(this, allepdf, neuerLSArchiv.Lieferschein_Nr + ".pdf"));
                    i.(Lieferschein_Nr := i.Lieferschein_Nr + 1);
                    sleep(1500)

    Was kann ich ändern, damit das Problem nicht mehr besteht? Frank
                

Content aside

  • vor 8 TagenZuletzt aktiv
  • 10Antworten
  • 167Ansichten
  • 6 Folge bereits