Direkt zum Hauptinhalt

Einen Bericht entwerfen

Ziel​

Einen Bericht innerhalb der Plattform gestalten – auf einer Zeichenfläche, neben den Abfragen, die ihn füllen –, statt ihn in einem separaten Werkzeug zu zeichnen und JSON zurückzukopieren.

Wo er sich öffnet​

Öffnen Sie Ihre Lösung, wählen Sie Berichte, wählen Sie einen Bericht aus, und drücken Sie Entwerfen. Die Zeichenfläche öffnet sich an Ort und Stelle, unter derselben Brotkrumenleiste und denselben Auswahlfeldern für Umgebung und Lösung, in denen Sie bereits gearbeitet haben. Sie ist keine zweite Anwendung und kein neuer Tab: Einen Bericht zu entwerfen ist Erstellerarbeit, und dies ist das Erstellerportal.

Entwerfen und Bearbeiten sind zwei Befehle, weil sie zwei verschiedene Hälften verantworten:

  • Entwerfen ist das Layout – die Seite, ihre Bänder, ihre Tabellen, ihr Logo.
  • Bearbeiten ist alles, was eine Zeichenfläche nicht wissen kann – welche gespeicherten Abfragen die Vorlage füllen und welches Feld jede davon eingrenzt, wenn jemand einen einzelnen Datensatz druckt.

Bei den meisten Berichten verwenden Sie beide, und keiner überschreibt die Hälfte des anderen.

Voraussetzungen​

  • Sie sind als Ersteller angemeldet, mit ausgewählter Lösung und Umgebung.
  • Der Bericht existiert bereits. Erstellen Sie ihn zuerst – siehe Einen Bericht erstellen – und entwerfen Sie ihn dann.

Schritte​

  1. Öffnen Sie Ihre Lösung, und wählen Sie Berichte.
  2. Wählen Sie den Bericht aus, und drücken Sie Entwerfen.
  3. Wurde der Bericht noch nie entworfen, öffnet sich die Zeichenfläche nur mit der Tafel Styles — den Farben und Textstilen, mit denen ein Entwurf beginnt; sie wird nie gedruckt. Verwenden Sie Einfügen → Berichtsseite, um eine Seite abzulegen, und ordnen Sie Ihre Inhalte darin an.
  4. Zeichnen Sie den Bericht: Bänder für Kopf- und Fußzeile, einen Wiederholungsbereich für die Zeilen, Text, der an die Felder Ihres Datasets gebunden ist. Palette und Ebenenbereich funktionieren wie immer; der Inspektor hat jetzt zwei Registerkarten – siehe unten.
  5. Drücken Sie Speichern.

Mit einem Beispiel beginnen​

Einfügen → Beispielberichte legt eine fertige Berichtsseite neben das, was Sie bereits gezeichnet haben, auf die Zeichenfläche – nichts wird ersetzt – und lädt ihre Beispieldaten in den Editor für Berichtsdaten, sodass sie sofort eine Vorschau zeigt.

Die Liste hat zwei Hälften, und sie beantworten unterschiedliche Fragen.

Die ersten fünf sind fertige Dokumente – Rechnung, Vertrieb, Kontaktliste, Zusammenfassung, Dashboard – und zeigen, wie ein Bericht aussehen kann.

Die nächsten vier demonstrieren jeweils eine Funktion – das Richtige, wenn Sie den gewünschten Effekt kennen, aber nicht den Handgriff. Jedes trägt in seiner eigenen Seitenfußzeile eine Zeile, die sagt, wo Sie hinschauen sollen:

BeispielZeigt
Gestaltung (Zebra + bedingte Formatierung)Gebänderte Zeilen, eine Farbe und Schriftstärke, die sich oberhalb eines Schwellenwerts ändern, eine Statusfarbe und eine Markierung, die nur in den Zeilen erscheint, für die sie gilt
WasserzeichenEin ENTWURF-Stempel über jeder Seite und ein Dokumentenlenkungsblock in der Ecke
Wiederholte Kopf- und FußzeileEin Briefkopf und eine Fußzeile auf jedem Blatt, Spaltenüberschriften, die überall wiederkehren, wo die Tabelle weitergeht, und eine Zwischensumme pro Blatt neben einer Gesamtsumme für die ganze Tabelle
DiagrammeEin Balkendiagramm und ein Liniendiagramm, darunter eine Tabelle, die dasselbe Dataset liest

Öffnen Sie eines, wählen Sie ein Band oder eine Zelle aus, und lesen Sie seine Ausdrücke im Inspektor oder auf der Seite Code. Es sind gewöhnliche Zeichnungen – bearbeiten Sie sie, behalten Sie die Hälfte, die Sie wollten, und löschen Sie den Rest.

Diese vier binden eine echte Tabelle

Ihre Zellen lesen row.par_name, row.par_amount, row.par_currency und row.par_status – die Spalten der Beispieltabelle expenses – statt erfundener Namen. Nur deshalb lässt sich dieselbe Zeichnung als funktionierender Bericht mit echten Zeilen dahinter installieren, statt in der Vorschau gut auszusehen und leer zu drucken. Richten Sie sie auf Ihre eigene Tabelle aus, indem Sie Dataset und Bindungen bearbeiten; die Techniken bleiben dieselben.

Die Regel für gebänderte Zeilen übernehmen

Zebrastreifen sind der Hintergrund des Zeilenrahmens des Wiederholungsbereichs, und er lautet rowIndex % 2 == 1 ? '#f8fafc' : '' – die Zeilennummer, kein Feld. Einen Wert zu lesen sieht genauso aus, bis jemand die Tabelle anders sortiert.

Eine verkettete Prüfung braucht Klammern

a ? b : c ? d : e lässt sich nicht parsen. Schreiben Sie row.status == 'Approved' ? '#059669' : (row.status == 'Rejected' ? '#be123c' : '#b45309'). Ein Ausdruck, der sich nicht parsen lässt, lässt die Eigenschaft genau so, wie Sie sie gezeichnet haben – das Symptom ist also eine Farbe, die sich nie ändert, und kein Fehler.

Mit KI generieren​

Mit KI generieren beschreibt eine Seite in Worten und zeichnet sie. Beschreiben Sie, was Sie möchten – das Feld ist absichtlich groß, eine Seite, die sich zu generieren lohnt, braucht einen Absatz –, und drücken Sie Generieren oder Strg/⌘+Eingabe. Was zurückkommt, wird dem, was bereits auf der Zeichenfläche ist, hinzugefügt; nichts, was Sie gezeichnet haben, wird ersetzt. Für einen Neuanfang leeren Sie zuerst die Zeichenfläche und generieren dann.

Was auch immer zurückkommt, wird geprüft, bevor etwas erscheint – jede Form muss eine sein, die dieser Editor tatsächlich bauen kann –, sodass eine Antwort, die eine nicht existierende Form nennt, keinen kaputten Kasten auf Ihre Seite setzt.

Sie korrigiert sich selbst, bevor sie aufgibt. Wenn nichts Verwendbares zurückkommt, schickt die Plattform die Antwort mit dem benannten Problem direkt an das Modell zurück, statt Sie zu bitten, einen Fehler zu beheben, den Sie nie geschrieben haben. Sie versucht es bis zu dreimal, und die Schaltfläche zeigt dabei Korrigiere… Versuch 2 von 3.

Eine teilweise verwendbare Antwort wird behalten, nicht verworfen. Die Formen, die gezeichnet werden konnten, stehen auf der Zeichenfläche, und der Dialog bleibt offen und listet auf, was weggelassen wurde – eine Antwort mit zehn Formen, von denen zwei unbrauchbar waren, kommt also als acht Formen und zwei Sätze an, statt als acht Formen und Schweigen. Ein Teilergebnis, über das man Sie nicht informiert, lesen Sie so, als hätte Ihre eigene Beschreibung weniger verlangt.

Sie beschreiben den Entwurf und sonst nichts. Welches KI-Modell antwortet, richtet ein Administrator einmal für die ganze Plattform ein – es gibt keinen Schlüssel einzufügen und keinen Anbieter auszuwählen.

Wenn es keine KI-Schaltfläche gibt, ist auf dieser Plattform keine KI eingerichtet. Fragen Sie einen Administrator; es ist eine Einstellung auf dem Server, nichts, was ein Ersteller einschalten kann.

Die zwei Registerkarten des Inspektors​

Der Eigenschaftenbereich rechts hat zwei Registerkarten, und sie beantworten zwei unterschiedliche Fragen:

  • Grafik – was das Objekt ist: wo es sitzt, wie groß es ist, seine Füllung, seine Kontur, sein Text.
  • Bericht – was das Objekt für den Bericht bedeutet: dass dieser Rahmen die Seite ist, oder ein Kopfband, oder ein Wiederholungsbereich, und woran ein Text oder ein Bild gebunden ist.

Ein Punkt auf der Registerkarte Bericht bedeutet, dass das ausgewählte Objekt bereits Teil des Berichts ist – die Seite, ein Band, ein gebundener Text –, sodass Sie es sehen, ohne die Registerkarte zu öffnen. Welche Registerkarte Sie auch offen lassen, sie bleibt offen, während Sie andere Objekte auswählen.

Manche Objekte haben nichts, was auf die Registerkarte Bericht gehört: Nur ein Rahmen kann die Seite oder ein Band sein, und nur ein Text oder ein Bild kann an Daten gebunden werden. Die Registerkarte sagt das, statt sich leer zu öffnen.

Speichern tut zwei Dinge auf einmal, und das ist der Teil, den es sich zu verstehen lohnt: Es kompiliert das Gezeichnete in die Vorlage, die gedruckt wird, und es speichert Ihre Zeichnung daneben. Deshalb können Sie morgen wieder auf Entwerfen drücken und bekommen Ihr Layout zurück statt einer Rekonstruktion davon – die Zeichnung wird aufbewahrt, nicht nur ihr Ergebnis.

Ein Seitenentwurf, egal wie viele Blätter er druckt​

Ein Seitenentwurf paginiert: Der Hauptteil fließt auf so viele Blätter, wie der Inhalt braucht, und Seitenkopf und Seitenfuß werden oben und unten auf jedem neu gezeichnet. Eine Rechnungsliste mit hundert Zeilen ist ein Seitenentwurf und vier gedruckte Seiten.

Mehrere Seitenentwürfe in einem Bericht – Abschnitte​

Zeichnen Sie einen zweiten Berichtsseiten-Rahmen auf die Zeichenfläche, und Sie erhalten einen Abschnitt: ein Deckblatt, das auf eine Art gestaltet ist, der Hauptteil auf eine andere, die Geschäftsbedingungen auf der Rückseite. Jeder als Berichtsseite markierte Rahmen ist ein Abschnitt, in der Reihenfolge, in der sie auf der Zeichenfläche liegen, und jeder Abschnitt beginnt auf einem eigenen Blatt.

Jeder Abschnitt hat eigene Ränder und eigenen Seitenkopf, Seitenfuß, Briefkopf und Wasserzeichen – ein Deckblatt ohne Kopfzeile und ohne Seitenzahl und ein Hauptteil mit beidem, in einem Bericht. Ein Abschnitt ohne Inhalt druckt gar nichts statt eines leeren Blatts.

Die Seitenzahlen zählen den ganzen Bericht, nicht den Abschnitt: Das Deckblatt ist Seite 1 von n, wobei n auch jedes Blatt zählt, das Hauptteil und Bedingungen einnehmen. Wer eine gedruckte Seite in der Hand hält, will „3 von 9“.

Hinweis

Jeder Abschnitt wird auf derselben Papiergröße gedruckt, übernommen vom ersten Seitenrahmen. Ein Drucker hat ein Fach, sodass ein Bericht, der A4 und A5 mischt, nirgends korrekt gedruckt würde. Ändern Sie die Größe eines der Rahmen, weist der Designer beim Speichern darauf hin und druckt dann alles auf dem Papier des ersten Rahmens. Die Ränder können Sie pro Abschnitt ändern, das Blatt nicht.

Ein Abschnitt heißt „ab hier sieht die Seite anders aus“. Wenn Sie nur ein neues Blatt mit demselben Entwurf wollen, ist das die Markierung unten.

Einen Bereich auf einer neuen Seite beginnen​

Die Paginierung bricht eine Seite um, wenn der nächste Block nicht mehr passt. Das beantwortet „diese Zeile nicht teilen“; es kann nicht „dieser Teil beginnt auf einer eigenen Seite“ beantworten, denn das hat nichts damit zu tun, wie viel Platz noch übrig ist.

Wählen Sie den Bereich aus – ein Band, einen Wiederholungsbereich, einen Spaltencontainer, ein Diagramm – und aktivieren Sie Beginnt auf einer neuen Seite auf der Registerkarte Bericht des Inspektors. Der Bericht bricht unmittelbar davor um, ob die Seite voll ist oder nicht. Verwenden Sie das für eine Reihe von Forderungen pro Kunde oder überall dort, wo ein neues Blatt mit demselben Seitenentwurf gewünscht ist. Wenn die Seite selbst anders aussehen soll, zeichnen Sie einen zweiten Seitenrahmen und verwenden stattdessen einen Abschnitt.

Zwei Details, die Sie kennen sollten:

  • Es entsteht nie ein leeres Blatt. Ein Umbruch oben auf einer Seite, die bereits leer ist, tut nichts – wenn Sie ihn also beim ersten Bereich des Berichts aktivieren oder bei zwei Bereichen hintereinander, kostet Sie das kein Papier.
  • Bei einem Band, das sich als Tabellenkopf wiederholt, landet der Umbruch vor dem Kopf, und genau das wollen Sie: Die neue Seite beginnt mit den Spaltenüberschriften, und die Zeilen folgen.

Greifen Sie nicht dazu, um ein Band hübsch fallen zu lassen – ein Band so lange mit Leerraum aufzufüllen, bis es überläuft, sieht heute richtig aus und bricht in dem Moment, in dem sich die Daten ändern. Das Häkchen ist die dauerhafte Art, es zu sagen.

Über ein Dataset wiederholen​

Ein Wiederholungsbereich-Rahmen zeichnet seinen Inhalt einmal pro Zeile. Markieren Sie den Rahmen auf der Registerkarte Bericht des Inspektors als Wiederholungsbereich, und wählen Sie dann unter Wiederholen über, was er durchläuft.

Wiederholen über ist eine Dropdownliste der eigenen Datasets dieses Berichts – rows, invoices –, es gibt also keinen Namen, den Sie sich merken, und keinen, den Sie falsch schreiben könnten. Steht das gewünschte nicht in der Liste, fügen Sie es unter Bearbeiten im Seitenbereich Berichte hinzu, und es erscheint hier.

Absichtlich eine Liste statt eines Felds, in das Sie tippen: Ein Wiederholungsbereich durchläuft ein ganzes Dataset, sodass „welches“ genau so viele Antworten hat, wie der Bericht Datasets hat. Die Zeilen einzugrenzen – etwa nur die genehmigten Forderungen – gehört in das Dataset selbst, wo die Abfrage lebt und wo jedes Band, das dieses Dataset liest, dieselbe Antwort erhält; schreiben Sie es in das Feld eines einzelnen Rahmens, braucht das nächste Band seine eigene Kopie davon.

Was ein Text oder ein Bild zeigt​

Ein Text oder ein Bild innerhalb eines Wiederholungsbereichs ist gebunden, und die Bindung wird im selben Editor geschrieben wie jedes andere Stück BS Lang in der Plattform: Er vervollständigt, was Sie aufrufen können, zeigt, was eine Funktion erwartet, und unterstreicht einen Fehler während der Eingabe, statt später eine leere Zelle zu drucken.

Auf der Registerkarte Bericht des Inspektors ist Bindung eine Dropdownliste der Felder, an die Sie binden können, denn das ist eine Bindung meistens, und einen Namen, den Sie auswählen, können Sie nicht falsch schreiben.

Alles, was mehr als ein Feld ist, schreiben Sie auf der Codeseite: Wählen Sie den Text aus und drücken Sie in der Symbolleiste Code schreiben (die Schaltfläche </>). Die Liste an ihrer Seite beginnt mit Was er zeigt, der Bindung, und führt danach jede Eigenschaft auf, die den Daten folgen kann (siehe Gestaltung, die aus den Daten kommt weiter unten). Der Editor bietet Platz zum Arbeiten: Vervollständigung, was jede Funktion erwartet, und eine rote Unterstreichung unter einem Fehler, während Sie tippen; die Liste markiert jeden Eintrag als Geschrieben oder Hat einen Fehler. Dort gehört concat('Page ', pageNumber, ' of ', pageCount) hin. Das ✕ in ihrer Ecke bringt Sie zurück zur Zeichnung, und was Sie geschrieben haben, wird mit ihr gespeichert, wenn Sie Speichern drücken.

Öffnen Sie das Auge, um zu sehen, was Sie schreiben können. Jedes Ausdrucksfeld der Plattform hat eines, und dahinter steht alles, was dieser Ausdruck erreichen kann: Seite (pageNumber, pageCount, page.rows), Zeile des Wiederholungsbereichs (row, rowIndex, rows, rowCount), die Spalten des Datasets, das dieser Wiederholungsbereich durchläuft, die eigenen Aggregate des Berichts mit dem, was jedes erwartet, und die eigenen Funktionen der Sprache. Durchsuchen Sie es, klicken Sie auf einen Eintrag, und er wird an Ihrer Cursorposition eingefügt. Es ist da, weil die Vervollständigung nicht „was steht in dieser Zeile?“ beantworten kann – die Vervollständigung sagt Ihnen, was als Nächstes kommt, sobald Sie zu tippen begonnen haben, und das Auge sagt Ihnen, was da ist, bevor Sie begonnen haben.

Innerhalb eines Wiederholungsbereichs werden die Spalten als row.<field> geschrieben – row ist ein Datensatz genau eines Datasets, und ein Feld aus einem anderen würde zu nichts aufgelöst. Außerhalb eines Wiederholungsbereichs gibt es überhaupt kein row, daher werden dieselben Felder über ihr Dataset angesprochen: rows[0].total.

Eine Spalte aus einer verknüpften Tabelle wird unter dem Namen geschrieben, den die Abfrage der Verknüpfung gegeben hat. Eine gespeicherte Abfrage, die den Kunden als customer verknüpft, bietet seine Spalten als row.customer.par_name und row.customer.par_credit_limit an, und die Listenfunktionen nehmen denselben Namen in Anführungszeichen: sum(rows, 'customer.par_credit_limit'). Benennen Sie die Verknüpfung in der Abfrage um, müssen die Bindungen folgen.

Und es ist ein Ausdruck, nicht nur ein Feldname. row.amount * 1.2, row.status == 'Approved' ? 'Yes' : 'No', concat(row.first, ' ', row.last), sum(page.rows, 'amount') für eine Summe pro Seite – dieselbe Sprache wie in einer Geschäftsregel, den Bindungen eines Bildschirms und einem Lösungsskript.

Wo Sie sich befindenWas im Gültigkeitsbereich liegt
Eine Zeile eines Wiederholungsbereichsrow, rowIndex, rows, rowCount und jedes Dataset über seinen Namen
Ein Seitenkopf oder SeitenfußpageNumber, pageCount, page.rows, page.rowCount
Überalldie Datasets über ihren Namen, data und die Aggregate unten

Summen, Gruppen und laufende Summen​

Eine Tabellensumme gehört in eine Summenzeile. Zeichnen Sie ein Band unter den Wiederholungsbereich, und aktivieren Sie auf der Registerkarte Bericht Summenzeile für den Wiederholungsbereich darüber. Es wird einmal nach der letzten Zeile gezeichnet und sieht rows und rowCount für das ganze Dataset – sum(rows, 'amount') ist dort also die Summe der Tabelle.

Das ist eine andere Zahl als eine Seitensumme, die sum(page.rows, 'amount') im Seitenfuß lautet und nur die Zeilen zählt, die auf diesem Blatt gelandet sind. Beide sind nützlich; wählen Sie bewusst.

Eine laufende Summe ist sum(take(rows, rowIndex + 1), 'amount') in der Zeile selbst – jede Zeile bis einschließlich dieser.

Gruppieren ist Aufgabe des Datasets. Speichern Sie eine Abfrage, die gruppiert – eine Zeile pro Status, mit Anzahl und Summe (siehe Eine Abfrage speichern) –, fügen Sie sie dem Bericht unter Datasets als zweites Dataset hinzu und wiederholen Sie darüber wie über jedes andere: Jede Zeile, die er zeichnet, ist eine Gruppe, bereits gezählt und summiert, und eine Summenzeile darunter addiert die Gruppen. Ein Wiederholungsbereich kann nicht in der Zeile eines anderen liegen; ein Bericht listet daher nicht die eigenen Zeilen jeder Gruppe unter einer Überschrift für die Gruppe auf.

Ein zweites Dataset erreichen Sie mit lookup(regions, 'code', row.region).manager – die erste Zeile, deren Spalte übereinstimmt, sodass Sie einen Namen drucken können, den Ihre eigene Abfrage nicht abgerufen hat.

Gestaltung, die aus den Daten kommt​

Wählen Sie ein Band, eine Zelle oder eine Form aus, drücken Sie Code schreiben und wählen Sie in der Liste unter Eigenschaften eine Eigenschaft: Jede nimmt einen Ausdruck, der pro Zeile beantwortet wird:

EigenschaftBeispiel
Hintergrundrow.amount > 1000 ? '#fee2e2' : ''
Textfarberow.overdue ? '#b91c1c' : ''
Schriftstärkerow.isTotal ? '700' : ''
Angezeigt, wennrow.note != ''

Leer bedeutet „lass es so, wie ich es gezeichnet habe“ – deshalb haben die Beispiele auf der anderen Seite ein bloßes '', statt Ihre eigene Farbe zu wiederholen, und deshalb kann das Einschalten nie einen Bericht leeren, der vorher in Ordnung war. Angezeigt, wenn ist die Ausnahme: Eine falsche Antwort entfernt das Element vollständig, einschließlich Hintergrund und Rahmen – was eine Bindung von Text an '' nie könnte.

Um eine ganze Zeile einzufärben, legen Sie den Hintergrund am Zeilenrahmen des Wiederholungsbereichs fest, nicht an einer Zelle darin.

Die Aggregate: sum · count · avg · min · max · pluck · round · abs · upper · lower · concat · ifEmpty · format. Jedes nimmt eine Liste und, wo es eine braucht, die zu lesende Spalte: sum(claims, 'par_amount').

Die Listenfunktionen: where · exclude · take · skip · sortBy · groupBy · lookup · distinct. Jede von ihnen nennt eine Spalte, nie eine Bedingung – where(claims, 'status', 'Approved'), nicht where(claims, row.status == 'Approved'). Das ist eine echte Grenze und keine Stilfrage: Eine Funktion erhält ihre Argumente bereits ausgewertet, sodass eine Bedingung einmal beantwortet würde statt einmal pro Zeile.

pluck ist diejenige, die mit einer Liste statt mit einem einzelnen Wert antwortet, und an sie wird ein Diagramm gebunden. Ein Diagramm will eine Datenreihe, und ein Dataset besteht aus Zeilen – pluck(revenue, 'amount') liefert ihm also die Beträge und pluck(revenue, 'month') die Beschriftungen daneben, beide aus demselben Dataset, sodass sie nicht um eine Zeile verrutschen können.

Ein Diagramm​

Einfügen → Balkendiagramm oder Liniendiagramm setzt ein Diagramm auf die Seite unter der Mitte Ihrer Ansicht: einen Rahmen, in den die Berichts-Engine zeichnet, mit einem Titel. Darin gibt es nichts von Hand zu zeichnen – Skala, Teilstriche und Beschriftungen werden bei jedem Lauf des Berichts aus den Daten ermittelt. Auf einem Bildschirm bietet dasselbe Menü weitere Arten als Zeichnungen an; ein Bericht bietet die beiden an, die er drucken kann.

Wählen Sie den Rahmen aus, drücken Sie Code schreiben und füllen Sie Diagrammwerte und Diagrammbeschriftungen aus, beide mit pluck, damit sie im Gleichschritt aus einem Dataset kommen: pluck(bystatus, 'total') und pluck(bystatus, 'par_status'). Balken oder Linie sowie die Farbe finden Sie auf der Registerkarte Bericht. Die Vorschau und die gedruckte Seite zeichnen dasselbe Diagramm.

Ein Diagramm, das nicht mehr unter das Vorherige passt, rückt wie jeder andere Block auf das nächste Blatt.

Barcodes und QR-Codes​

Einfügen → Barcode oder Einfügen → QR-Code legt einen echten, scanbaren Code in den Rahmen in der Mitte Ihrer Ansicht: Auf einer Seitenkopfzeile abgelegt, wird er auf jedem Blatt gedruckt. Auf der Registerkarte Bericht legen Sie seinen Wert fest, seine Ruhezone (den leeren Rand, den ein Scanner braucht) und entweder Wert unter den Balken drucken (Code 128) oder Fehlerkorrektur (QR). Code 128 enthält druckbare ASCII-Zeichen; ein QR-Code enthält beliebigen Text, auch einen Link.

Für einen Code, der in jeder Zeile anders ist, wählen Sie ihn im Wiederholungsbereich aus, drücken Sie Code schreiben und füllen Sie Barcode-Wert aus: row.par_reference. Die Zeichenfläche zeigt den festen Wert, weil eine Zeichenfläche keine Zeilen hat.

Papier und Ausrichtung​

Die Größe des Seitenrahmens ist das Papier, in Punkt (72 pro Zoll): 595 × 842 ist A4. Um das Papier einer Seite zu ändern, geben Sie ihre B und H ein; die Papier-Größen im Menü Rahmen zeichnen einen neuen Rahmen.

Für das Querformat sagen Sie den Bändern zuerst, dass sie dem Papier folgen: Setzen Sie die horizontale Einschränkung jedes Bands auf Links und rechts und alles, was an seinem rechten Rand sitzt, auf Rechts. Machen Sie die Seite dann 842 × 595.

Außenabstand auf der Registerkarte Bericht der Seite ist der Platz, der oben und unten auf jedem Blatt frei bleibt. Quer über das Blatt wird alles dort gedruckt, wo Sie es gezeichnet haben. Drucken / PDF druckt jede Seite auf ein Blatt genau in der Größe der Seite, sodass der Browser keinen Rand für seine eigene Kopf- und Fußzeile hat.

Ein Bericht auf Persisch oder Arabisch​

Tippen Sie die Wörter, und der Designer stellt den Text auf rechts nach links. Ein Text mit persischen, arabischen oder hebräischen Wörtern wird beim Abschluss der Eingabe auf Rechts nach links gesetzt und rechtsbündig ausgerichtet, und die Seite druckt ihn so: Ein Punkt oder eine Zahl am Zeilenende bleibt an ihrem Ende. Ein gebundener Text hat keine Wörter, an denen sich das ablesen ließe; setzen Sie Rechts nach links daher selbst auf der Registerkarte Grafik, neben den Ausrichtungsschaltflächen. Legen Sie die Spalten von rechts an, so wie ein persischer Leser liest.

Ziffern und Kalender gehören dem Leser. Ein Text mit dem Format number oder date wird in der Sprache und dem Kalender dessen geschrieben, der den Bericht öffnet: persische Ziffern für einen Leser, der auf Persisch arbeitet, und ein Jalali-Datum für jemanden, dessen Darstellungseinstellungen → Kalender auf Persisch steht. Die Vorschau im Designer folgt Ihren eigenen Einstellungen, die App denen jedes Lesers, und derselbe Bericht druckt für den einen 7,890.50 und für den anderen ۷٬۸۹۰٫۵۰.

Eine Zahl in concat wird so geschrieben, wie sie gespeichert ist; geben Sie ihr also ein eigenes Format: concat('صفحهٔ ', format(pageNumber, 'integer'), ' از ', format(pageCount, 'integer')).

Vorschau eines Berichts, der für einen Datensatz gedruckt wird​

Hat das erste Dataset ein Datensatzfeld, wird der Bericht aus einem Datensatz heraus gedruckt, und die Vorschau zeigt ihn genau so: Sie nimmt die erste Zeile des ersten Datasets als Datensatz und grenzt jedes Dataset mit einem Datensatzfeld darauf ein. Eine Rechnung erscheint in der Vorschau als erste Rechnung mit ihren eigenen Positionen, nicht mit denen aller Rechnungen.

Ein Bericht, für den Sie eine Vorlage hochgeladen haben​

Berichte, die durch Einfügen einer Vorlage erstellt wurden, haben keine Zeichnung dahinter. Ein Druck auf Entwerfen öffnet bei ihnen eine leere Zeichenfläche, statt zu versuchen, das Layout aus der Vorlage wieder aufzubauen.

Das ist Absicht. Eine Vorlage hält Bänder, Wiederholungsbereiche und Bindungen fest – nicht die Rahmen, Hilfslinien und Stile, mit denen Sie dorthin gelangt sind –, sodass alles, was die Plattform daraus zeichnen würde, eine Vermutung wäre, und das Speichern dieser Vermutung würde Ihre echte Vorlage durch die Vermutung ersetzen. Wenn Sie einen hochgeladenen Bericht auf der Zeichenfläche haben möchten, gestalten Sie ihn einmal und speichern Sie; von da an funktioniert der Hin- und Rückweg.

Umgekehrt ist es sicher: Die Datasets eines entworfenen Berichts über den Seitenbereich Berichte zu bearbeiten, lässt seine Zeichnung unberührt.

Speichern, und wohin es geht​

Es gibt genau ein Speichern, und es steht in der Titelleiste oben auf dem Bildschirm – an derselben Stelle wie auf jedem anderen Bildschirm des Produkts. Es schreibt den Bericht als Lösungskomponente: in Ebenen, im Besitz Ihrer Lösung, validiert und bereit zum Exportieren.

Das eigene Menü Datei des Designers wird hier nicht angezeigt. Eigenständig speichert dieses Menü eine JSON-Datei auf Ihre Festplatte; innerhalb der Plattform wäre das ein zweiter Befehl, der so aussieht, als hätte er Ihre Arbeit gespeichert, und es nicht getan hat. Export (PNG, SVG) bleibt verfügbar, denn ein Bild eines Berichts ist in jedem Fall nützlich.

Ihn zwischen Umgebungen verschieben​

Nichts ändert sich: Der Bericht ist eine Lösungskomponente und reist wie bisher, mit seiner Vorlage darin. Ihre Zeichnung reist ebenfalls mit, sodass die Person, die ihn importiert, auf Entwerfen drücken und Ihr Layout fortsetzen kann, statt neu anzufangen.

Fehlerbehebung​

  • „This design has no report page yet.“ – Sie haben auf der Zeichenfläche gezeichnet, aber nicht innerhalb einer Berichtsseite. Verwenden Sie Einfügen → Berichtsseite, und legen Sie Ihre Inhalte hinein; der Seitenrahmen sagt dem Compiler, wo der Bericht beginnt.
  • Speichern ist ausgegraut. – Seit dem Öffnen hat sich nichts geändert. Zeichnen Sie zuerst etwas.
  • Der Bericht wird gedruckt, aber die Seite ist leer. – Der Wiederholungsbereich ist auf kein Dataset ausgerichtet. Öffnen Sie Wiederholen über: Es listet jedes Dataset auf, das dieser Bericht wirklich hat. Wählen Sie eines aus, oder fügen Sie das fehlende Dataset unter Bearbeiten hinzu und wählen Sie es dann aus.
  • „Every page frame is a section of this report, but they must all be the same size…“ – Einer Ihrer Berichtsseiten-Rahmen hat eine andere Größe als der erste. Passen Sie seine Größe an; bis dahin wird alles auf dem Papier des ersten Rahmens gedruckt. Siehe Mehrere Seitenentwürfe in einem Bericht oben.
  • Mein Layout kam verändert zurück. – Sie arbeiten an einem Bericht, dessen Vorlage hochgeladen und nicht entworfen wurde. Siehe Ein Bericht, für den Sie eine Vorlage hochgeladen haben oben.
  • Eine Zelle ist leer, der Rest des Berichts ist in Ordnung. – Ihre Bindung konnte nicht laufen. Öffnen Sie sie: Der Editor unterstreicht den Teil, mit dem er nichts anfangen konnte. Eine fehlgeschlagene Bindung hinterlässt absichtlich eine Lücke, statt die ganze Seite mitzureißen.
  • rows.length meldet 'length' is a method — write length() to call it. In BS Lang ist es eine Methode und braucht daher ihre Klammern: rows.length(). count(rows) liest sich in einem Bericht ohnehin besser. (Früher antwortete es stillschweigend mit der ganzen Liste statt mit der Anzahl. Das tut es nicht mehr.)
  • sum ist rot unterstrichen. – Prüfen Sie die Schreibweise anhand der Liste oben. Der Editor kennt die eigenen Aggregate des Berichts und sonst nichts; eine Funktion, die die Plattform nicht hat, ist eine Funktion, die nichts aufrufen wird.
  • Eine vor diesem Release geschriebene Bindung funktioniert nicht mehr. – Berichtsausdrücke sind jetzt BS Lang, dieselbe Sprache wie überall sonst in der Plattform. Fast alles wird unverändert übernommen – Feldpfade, Arithmetik, Vergleiche, ?:, die Aggregate –, aber ein Ausdruck, der sich auf etwas verließ, das der alte Auswerter zufällig zuließ, sollte erneut geöffnet werden, denn der Editor sagt es Ihnen jetzt.

Verwandte Szenarien​