Table of Contents

Drucken und exportieren

microtech ERP gibt Datensätze über Layouts aus. Layouts liegen in Layout-Gruppen der Form Modul.Name, etwa Au.VogDrVorgang für Auftrag/Vorgänge/Vorgänge/Vorgang. Jede Gruppe enthält die einzelnen Layouts wie „Rechnung" oder „(Projekte-Liste)".

Gedruckt werden kann jeder Datensatz, der IHasAutoDataSet umsetzt: Artikel, Adressen, Projekte und Vorgänge gleichermaßen. Der Ablauf ist immer derselbe:

  1. LayoutBuilder für das Layout holen
  2. Druckereinstellungen setzen
  3. Build() und Print aufrufen

Die GraphQL-Schnittstelle bietet keine Druckausgabe.

Aus einem Datensatz drucken

GetLayoutBuilder ermittelt die Layout-Gruppe aus dem Datensatz selbst:

var artikel = bpApp.QueryDataSet<Artikel>()
    .First(a => a.ArtNr == "10000");

var layout = artikel.GetLayoutBuilder("(Artikel-Liste)")
    .WithPrinterSettings(new LayoutPrinterSettings
    {
        FileExport = true,
        PrintKind = PrintKind.pkErsteFolgeSeiten,
        FileFormat = FileFormats.AdobeAcrobatReader,
        FileName = @"C:\Export\Artikel.pdf",
        FileOverwrite = true
    })
    .Build();

artikel.Print(layout);

Ohne Layoutnamen verwendet GetLayoutBuilder() das erste Layout des Datensatzes und überspringt dabei E-Mail-Layouts. Für den Druck auf dem eingestellten Drucker setzen Sie FileExport = false; FileFormat, FileName und FileOverwrite entfallen dann.

Der Datensatz muss aus einer Abfrage stammen. Andernfalls wirft Print eine InvalidOperationException.

Layouts einer Gruppe auswählen

Über bpApp.Drucken und OpenLayoutGroup sprechen Sie eine Gruppe direkt an und lesen mit GetPossibleLayouts die verfügbaren Layoutnamen:

var drucken = bpApp.Drucken;
try
{
    var gruppe = drucken.OpenLayoutGroup(LayoutGroupAuftrag.VogDrVorgang);

    foreach (var name in gruppe.GetPossibleLayouts())
        Console.WriteLine(name);

    var layout = gruppe.GetLayoutBuilder("Rechnung")
        .WithFileExport(true)
        .WithFileFormat(FileFormats.AdobeAcrobatReader)
        .WithFileName(@"C:\Export\Rechnung.pdf")
        .WithFileOverwrite(true)
        .Build();

    vorgang.Print(layout);
}
finally
{
    bpApp.FreeSpecialObject(drucken);
}

Das SpecialObject müssen Sie selbst wieder freigeben. Der Weg über den Datensatz erledigt das bereits.

Die Gruppennamen stehen als Konstanten bereit und lassen sich ebenso als Zeichenkette ("Au.VogDrVorgang") übergeben:

Klasse Modul Beispiele
LayoutGroupAuftrag Au. VogDrVorgang, ArtDrFormular, AdrDrListe
LayoutGroupGlobal Gl. AnsDrListe, BnkDrListe
LayoutGroupFiBu Fi. Finanzbuchhaltung
LayoutGroupLohn Lo. Lohnabrechnung
LayoutGroupSupport Su. Support

Druckereinstellungen setzen

LayoutPrinterSettings:

Feld Bedeutung
PrintKind Seitenauswahl, etwa PrintKind.pkErsteFolgeSeiten
FileExport true gibt in eine Datei statt auf den Drucker aus
FileFormat Zielformat aus FileFormats
FileName Pfad der Exportdatei
FileOverwrite true überschreibt, false nummeriert den Dateinamen durch

Bei FileExport = true verlangt WithPrinterSettings sowohl FileFormat als auch FileName und wirft sonst eine MissingFieldException.

Warning

WithPrinterSettings speichert die Einstellungen am Layout. Sie gelten damit auch für spätere Ausgaben desselben Layouts, ebenso in der microtech-ERP-Oberfläche. Die Einzelmethoden WithFileExport, WithPrintKind, WithFileFormat, WithFileName und WithFileOverwrite wirken nur auf die aktuelle Ausgabe.

Die hinterlegten Einstellungen lesen Sie mit GetPrinterSettings:

var einstellungen = artikel.GetLayoutBuilder("(Artikel-Liste)").GetPrinterSettings();

Console.WriteLine($"{einstellungen.FileFormat} → {einstellungen.FileName}");

Ausgabe in Dokumente ablegen

Ist die Vorgangsart entsprechend eingerichtet, legt microtech ERP die Ausgabe als Dokument ab. Das Auslesen dieser Dokumente beschreibt das Dokumente-Kapitel.