1s 8.3 SCD-Bericht berechnete Felder. Ausdruckssprache des Datenkompositionssystems (1Cv8)

Im Hinblick auf die bevorstehende Veröffentlichung von 8.2.14 werde ich versuchen, einige neue Funktionen des Datenkompositionssystems zu beschreiben.

Öffnen Sie das Datenlayoutdiagramm, vorzugsweise in einem externen Bericht, um die Bearbeitung zu erleichtern.

Wir fügen einen Datensatz des Abfragetyps hinzu und schreiben entweder manuell oder mit dem Abfrage-Designer eine einfache Abfrage:

1. Richten Sie eine Anfrage im Zutrittskontrollsystem ein.

2. Richten Sie berechnete Felder im Zutrittskontrollsystem ein

3. Konfigurieren Sie das Datenlayout auf der Registerkarte „Einstellungen“.

4. Starten Sie 1C Enterprise 8.2.14. Öffnen Sie den Bericht. Wir formen, wir empfangen.

Beschreibung der neuen Funktionen selbst:

1. Das aktuelle Datum()

Gibt das Systemdatum zurück. Beim Erstellen eines Layout-Layouts wird in allen im Layout vorhandenen Ausdrücken die Funktion CurrentDate() durch den Wert des aktuellen Datums ersetzt.

2. COMPUTEEXPRESSION()

Syntax:

CalculateExpression(,)

Beschreibung:

Die Funktion dient dazu, einen Ausdruck im Kontext einer Gruppierung auszuwerten.

Die Funktion berücksichtigt die Auswahl von Gruppierungen, berücksichtigt jedoch keine hierarchischen Auswahlen.

Die Funktion kann nicht auf eine Gruppierung in der Gruppenauswahl dieser Gruppierung angewendet werden. Beispielsweise können Sie bei der Auswahl der Nomenklaturgruppierung den Ausdruck nicht verwenden CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000. Ein solcher Ausdruck kann jedoch bei der hierarchischen Auswahl verwendet werden.

Wenn der Enddatensatz vor dem Startdatensatz liegt, wird davon ausgegangen, dass keine Datensätze zur Berechnung detaillierter Daten und zur Berechnung von Aggregatfunktionen vorhanden sind.

Bei der Berechnung von Intervallausdrücken für eine Gesamtsumme (der Gruppierungsparameter ist auf „GrandTotal“ festgelegt) wird davon ausgegangen, dass keine Datensätze zur Berechnung detaillierter Daten und zur Berechnung von Aggregatfunktionen vorhanden sind.

Layout-Linker beim Generieren eines Funktionsausdrucks Ausdruck berechnen, wenn der Sortierausdruck Felder enthält, die nicht in der Gruppierung verwendet werden können, ersetzt die Funktion Ausdruck berechnen An NULL.

Optionen

Typ: Linie. Der auszuwertende Ausdruck.

Typ: Linie. Enthält den Namen der Gruppierung, in deren Kontext der Ausdruck ausgewertet werden soll. Wenn als Gruppierungsname eine leere Zeichenfolge verwendet wird, wird die Berechnung im Kontext der aktuellen Gruppierung durchgeführt. Wenn der GeneralTotal-String als Gruppenname verwendet wird, wird die Berechnung im Kontext der Gesamtsumme durchgeführt. Andernfalls wird die Berechnung im Kontext der gleichnamigen übergeordneten Gruppierung durchgeführt.

Zum Beispiel:

Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "Total")

IN in diesem Beispiel Das Ergebnis ist das Verhältnis der Summe pro Feld Sales.AmountTurnover Gruppieren von Datensätzen zur Summe desselben Felds im gesamten Layout;

Typ: Linie. Der Parameter kann folgende Werte annehmen:

· Gesamtsumme– Der Ausdruck wird für alle Gruppierungsdatensätze berechnet.

· Hierarchie– Der Ausdruck wird für den übergeordneten hierarchischen Datensatz ausgewertet, falls vorhanden, und für die gesamte Gruppierung, wenn kein übergeordneter hierarchischer Datensatz vorhanden ist.

· Gruppierung– Der Ausdruck wird für den aktuellen Gruppengruppierungsdatensatz ausgewertet.

· GroupingNonResource— Bei der Berechnung einer Funktion für einen Gruppendatensatz nach Ressourcen wird der Ausdruck für den ersten Gruppendatensatz der ursprünglichen Gruppierung berechnet.

Bei der Berechnung einer Funktion CalculateExpression() mit Bedeutung GroupingNonResource Für Gruppendatensätze, die nicht nach Ressourcen gruppiert sind, wird die Funktion auf die gleiche Weise berechnet, wie sie berechnet würde, wenn der Parameterwert gleich dem Wert wäre Gruppierung.

Der Datenzusammensetzungslayout-Generator platziert beim Generieren eines Datenzusammensetzungslayouts bei der Ausgabe des Ressourcenfelds, nach dem die Gruppierung im Layout durchgeführt wird, einen Ausdruck im Layout, der mithilfe der Funktion berechnet wird CalculateExpression() , Angabe des Parameters GroupingNonResource. Für andere Ressourcen werden die üblichen Ressourcenausdrücke in der Ressourcengruppierung platziert.

Typ: Linie. Gibt an, ab welchem ​​Datensatz das Fragment beginnen soll, in welchen Aggregatausdrucksfunktionen berechnet werden soll und aus welchem ​​Datensatz Feldwerte außerhalb der Aggregatfunktionen abgerufen werden sollen. Der Wert kann einer der folgenden sein:

· Erste

· Letzter (letzter)

· Vorherige

· Weiter (Weiter)

· Aktuell

· Begrenzungswert(Grenzwert) Begrenzungswert

Typ: Linie. Gibt an, bis zu welchem ​​Datensatz das Fragment fortgesetzt werden soll, in dem die Aggregatfunktionen des Ausdrucks berechnet werden sollen. Der Wert kann einer der folgenden sein:

· Erste. Es ist erforderlich, den ersten Gruppierungsdatensatz abzurufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom Beginn der Gruppierung verwendet wird. Der resultierende Wert muss eine ganze Zahl größer als Null sein. Beispiel: First(3) – Empfang des dritten Datensatzes vom Anfang der Gruppierung.

Wenn der erste Datensatz außerhalb der Gruppierung liegt, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Datensätze vorhanden sind und Sie First(4) erhalten möchten, wird davon ausgegangen, dass keine Datensätze vorhanden sind.

· Letzter (letzter). Sie müssen den letzten Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom Ende der Gruppierung verwendet wird. Der resultierende Wert muss eine ganze Zahl größer als Null sein. Beispiel: Last(3) – Empfang des dritten Datensatzes vom Ende der Gruppe.

Wenn der letzte Datensatz außerhalb der Gruppierung liegt, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Datensätze vorhanden sind und Sie Last(4) abrufen möchten, wird davon ausgegangen, dass keine Datensätze vorhanden sind.

· Vorherige. Sie müssen den vorherigen Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset zurück zum aktuellen Gruppierungsdatensatz verwendet wird. Beispiel: Previous(2) – Vorheriges aus dem vorherigen Datensatz abrufen.

Wenn der vorherige Datensatz über die Gruppierung hinausgeht (z. B. müssen Sie für den zweiten Gruppierungsdatensatz Previous(3) abrufen), wird der erste Gruppierungsdatensatz abgerufen.

Beim Abrufen des vorherigen Datensatzes für eine Gruppierungssumme wird davon ausgegangen, dass der erste Datensatz abgerufen wird.

· Weiter (Weiter). Sie müssen den nächsten Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom aktuellen Gruppierungseintrag nach vorne verwendet wird. Beispiel: Next(2) – Nächstes vom nächsten Datensatz abrufen.

Wenn der nächste Datensatz über die Gruppierung hinausgeht, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Einträge vorhanden sind und der dritte Eintrag Next() empfängt, wird davon ausgegangen, dass keine Einträge vorhanden sind.

Wenn der nächste Datensatz für die Gruppierungssumme empfangen wird, wird davon ausgegangen, dass kein Datensatz vorhanden ist.

· Aktuell. Sie müssen den aktuellen Datensatz abrufen.

Beim Abrufen einer Gruppierungssumme wird der erste Datensatz abgerufen.

· Begrenzungswert(Grenzwert). Die Notwendigkeit, einen Datensatz mit dem angegebenen Wert zu erhalten. Nach dem Wort Begrenzungswert In Klammern müssen Sie den Ausdruck angeben, mit dessen Wert Sie das Fragment beginnen möchten, das erste Bestellfeld.

Als Datensatz wird der erste Datensatz zurückgegeben, dessen Bestellfeldwert größer oder gleich dem angegebenen Wert ist. Wenn beispielsweise das Feld „Periode“ als Bestellfeld verwendet wird und es die Werte 01.01.2010, 01.02.2010, 01.03.2010 hat und Sie erhalten möchten LimitingValue(DateTime(2010, 1, 15)), dann wird ein Datensatz mit dem Datum 01.02.2010 empfangen.

Typ: Linie. Listet durch Kommas getrennte Ausdrücke auf, die die Sortierregeln beschreiben. Wenn nicht angegeben, erfolgt die Sortierung auf die gleiche Weise wie für die Gruppierung, für die der Ausdruck ausgewertet wird. Nach jedem Ausdruck können Sie ein Schlüsselwort angeben Alter(für die Bestellung in aufsteigender Reihenfolge), Absteigend(für die Bestellung in absteigender Reihenfolge) und Automatische Bestellung(um Referenzfelder nach den Feldern zu ordnen, nach denen Sie das referenzierte Objekt ordnen möchten). Wort Automatische Bestellung kann wie mit dem Wort verwendet werden Alter, also mit dem Wort Absteigend.

Typ: Linie. Identisch mit Parameter Sortierung. Wird zum Organisieren hierarchischer Datensätze verwendet. Wenn nicht angegeben, generiert der Layout-Builder die Reihenfolge entsprechend der im Parameter angegebenen Reihenfolge Sortierung.

Typ: Linie. Gibt die Regel zur Bestimmung des vorherigen oder nächsten Datensatzes an, falls mehrere Datensätze mit demselben Bestellwert vorhanden sind:

· Separat gibt an, dass eine Folge geordneter Datensätze verwendet wird, um die vorherigen und nächsten Datensätze zu bestimmen. Standardwert.

· Zusammen gibt an, dass der vorherige und der nächste Datensatz basierend auf den Werten der Sortierausdrücke bestimmt werden.

Wenn die resultierende Sequenz beispielsweise nach Datum sortiert ist:

Datum Vollständiger Name Bedeutung
1 1. Januar 2001

Ivanov M.

10
2 02. Januar 2001 Petrov S. 20
3 3. Januar 2001 Sidorov R. 30
4 4. Januar 2001 Petrov S. 40

Separat, Das:

§ Der vorherige Eintrag zu Eintrag 3 wird Eintrag 2 sein.

Aktuell, aktuell(entsprechend Parameter Start Und Ende), dann besteht dieses Fragment für Datensatz 2 aus einem Datensatz 2. Der Ausdruck ist gleich 20.

Wenn der Parameterwert ist Zusammen, Das:

§ Der vorherige Eintrag zu Eintrag 3 wird Eintrag 1 sein.

§ wenn das Berechnungsfragment definiert ist als Aktuell, aktuell(entsprechend Parameter Start Und Ende), dann besteht dieses Fragment für Datensatz 2 aus den Datensätzen 2 und 3. Ausdruck CalculateExpression("Sum(Value)", Current, Current) wird gleich 50 sein.

Bei Angabe eines Parameterwerts gleich Zusammen, in Parametern Start Und Ende Sie können keinen Offset für Positionen angeben Zuerst, Letzter, Vorheriger, Nächster.

CalculateExpression("Sum(SumTurnover)", "First", "Current")

Wenn Sie den Gruppierungswert in der vorherigen Zeile erhalten möchten, können Sie den folgenden Ausdruck verwenden:

CalculateExpression("Rate", "Previous")

Aufführen neu Funktionen:

CalculateExpressionWithGroupArray(,) -

Die Funktion gibt ein Array zurück, dessen jedes Element das Ergebnis der Auswertung eines Ausdrucks zur Gruppierung nach dem angegebenen Feld enthält.

CalculateExpressionWithGroupValueTable(,) -

Die Funktion gibt eine Wertetabelle zurück, in der jede Zeile das Ergebnis der Auswertung von Ausdrücken zur Gruppierung nach dem angegebenen Feld enthält

ValueFilled() – Gibt True zurück, wenn der Wert vom Wert abweicht dieser Art Standard, anders als NULL, anders als leere Referenz, anders als undefiniert. Boolesche Werte werden auf NULL-Werte überprüft. Zeichenfolgen werden auf das Fehlen von Nicht-Leerzeichen überprüft

Format(, ) – Erhalten Sie eine formatierte Zeichenfolge des übergebenen Werts. Der Formatstring wird entsprechend dem Formatstring des 1C:Enterprise-Systems eingestellt.

Teilzeichenfolge(, , ) – Diese Funktion dient zum Extrahieren eines Teilstrings aus einem String.

Linienlänge() – Die Funktion soll die Länge einer Zeichenfolge bestimmen. Parameter ist ein Zeichenfolgenausdruck

Linie() – Wenn ein Array als Parameter übergeben wird, gibt die Funktion eine Zeichenfolge zurück, die Zeichenfolgendarstellungen aller Array-Elemente enthält, getrennt durch „;“-Zeichen. Wenn eine Wertetabelle als Parameter übergeben wird, gibt die Funktion eine Zeichenfolge zurück, die Zeichenfolgendarstellungen aller Zeilen der Wertetabelle enthält, wobei die Zelldarstellungen jeder Zeile durch „;“-Zeichen und die Zeilen durch einen Zeilenumbruch getrennt sind Charakter. Wenn die Zeichenfolgendarstellung eines Elements leer ist, wird anstelle seiner Darstellung eine Zeichenfolge angezeigt.

In dieser kurzen Anmerkung möchte ich zeigen, wie Sie mithilfe eines Datenkompositionssystems Werte auf verschiedenen Gruppierungsebenen in einem Bericht zusammenfassen können.
Wie im Bild gezeigt, wird nur auf der Gruppierungsebene „Artikelgruppen“ die Ressource „Bestellung“ berechnet. Sie zeigt an, wie viel für die aktuelle Artikelgruppe basierend auf bestimmten Bedingungen bestellt werden muss:


Dieser Wert kann nur auf dieser Gruppierungsebene berechnet werden, da darüber oder darunter keine Werte zu berechnen sind. Auf der Ebene der Detailaufzeichnungen liegen beispielsweise keine Angaben zur maximalen Menge in einer Gruppe vor, da diese Daten nur für die Gruppe als Ganzes und nicht für ihre einzelnen Bestandteile gelten.

Dementsprechend müssen nun die Summen für die oben genannten Gruppierungen („Lager“, „Lagertypen“) und die Gesamtsumme berechnet werden.
Nutzen Sie dazu die Funktion CalculateExpressionWithGroupArray:
EXPRESSIONWITHGROUPARRAY AUSWERTEN (EVALEXPRESSIONWITHGROUPARRAY)
Syntax:
EvaluateExpressionWithGroupArray(,)
Beschreibung:
Die Funktion gibt ein Array zurück, dessen jedes Element das Ergebnis der Auswertung eines Ausdrucks zur Gruppierung nach dem angegebenen Feld enthält.
Der Layout-Compositor wandelt beim Generieren eines Layouts Funktionsparameter in Begriffe von Datenzusammensetzungs-Layoutfeldern um. Beispielsweise wird das Feld „Konto“ in „DataSet.Account“ konvertiert.
Layout-Compositor beim Generieren von Ausdrücken für die Ausgabe benutzerdefinierte Feld, dessen Ausdruck nur die Funktion CalculateArrayWithGroupArray() enthält, generiert einen Ausgabeausdruck so, dass die Ausgabeinformationen geordnet sind. Beispielsweise für ein benutzerdefiniertes Feld mit dem Ausdruck:

CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty")
Der Layout-Builder generiert den folgenden Ausdruck für die Ausgabe:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Optionen:

Typ: Zeichenfolge. Der auszuwertende Ausdruck. Zeichenfolge, zum Beispiel Amount(AmountTurnover).

Typ: Zeichenfolge. Gruppierungsfeldausdrücke – Ausdrücke von Gruppierungsfeldern, durch Kommas getrennt. Zum Beispiel „Auftragnehmer“, „Partei“.

Typ: Zeichenfolge. Ein Ausdruck, der die auf Detaildatensätze angewendete Auswahl beschreibt. Der Ausdruck unterstützt nicht die Verwendung von Aggregatfunktionen. Beispiel:DeletionFlag = False.

Typ: Zeichenfolge. Ein Ausdruck, der die auf Gruppendatensätze angewendete Auswahl beschreibt. Beispiel: Betrag(AmountTurnover) > &Parameter1.
Beispiel:

Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));

Eine detaillierte Beschreibung der Funktionssyntax finden Sie unter http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Für die Berechnung duplizieren wir nun das Feld „Reihenfolge“ mit unterschiedlichen Werten „Berechnen nach ...“ und verwenden dabei die folgenden Ausdrücke. Beachten Sie, dass in jeder höheren Ebene die Werte der Ebenen unterhalb der Gruppierungen verwendet werden .

Als Ergebnis erhalten wir die folgende Konstruktion:

Eines der bequemsten und einzigartigsten Entwicklungstools in 1C ist das Data Composition System (DCS). Nur wenige davon Informationssysteme Entwickler können Berichte erstellen, ohne Code schreiben zu müssen. Dieser Mechanismus wurde entwickelt, um die Entwicklung von Berichtsformularen zu vereinfachen und zu beschleunigen und den Benutzern mehr Möglichkeiten bei der Arbeit mit den Ausgabedaten zu bieten. Letzteres wird von fortgeschrittenen Benutzern sehr geschätzt, die dadurch den Bericht selbstständig an ihre eigenen Bedürfnisse anpassen können, ohne auf die Aktionen der Entwickler warten zu müssen.

Erstellen eines Berichts in 1C über SKD

Der Prozess der Erstellung eines Berichts mithilfe von ACS kann in die folgenden Phasen unterteilt werden:

  1. Anfrage erstellen. Sie können eine Anfrage manuell schreiben oder über eine praktische Schnittstelle ohne Code auskommen;
  2. Einrichten des Berichts. Wählen Sie Felder, Summen, Gruppierungen, Parameter und Berichtsdesign aus.
  3. Danach müssen wir nur noch den resultierenden Bericht auf jede verfügbare Weise mit der Konfiguration verbinden.

Obwohl Benutzer die Möglichkeit haben, Berichte über das Zutrittskontrollsystem anzupassen, müssen sie über den Konfigurator erstellt werden.

Schauen wir uns ein Beispiel für die Erstellung eines externen Berichts über ein Zutrittskontrollsystem an:


Jetzt gehen wir zu 1C und öffnen unseren Bericht, um sicherzustellen, dass die ergriffenen Maßnahmen korrekt sind. Alle Daten werden angezeigt, Gruppierungen können ein- und ausgeblendet werden. Wie Sie sehen, können Sie mit dem Zugangskontrollsystem vollständige Berichte erhalten, ohne Code schreiben zu müssen, mit Ausnahme nicht standardmäßiger Anforderungen. Wenn man bedenkt, dass die meisten Berichte eine ähnliche Struktur haben, wird die Kenntnis des Zugangskontrollsystems die Zeit für die Entwicklung dieser Objekte erheblich verkürzen.

Dieser Mechanismus ist aufgrund seiner Unterstützung umfangreicher Berichtsfunktionen sehr beliebt geworden. Darüber hinaus können sie nicht nur Entwickler, sondern auch normale Benutzer verwenden.

ACS-Funktionen

Es gibt Situationen, in denen wir einen Bericht erstellt haben und dann ein Benutzer kommt und um eine kleine Änderung bittet. Zeigen Sie beispielsweise anstelle von Produktnamen Artikelnummern an. Mit SKD können Benutzer solche Änderungen selbstständig über die Schaltfläche „Mehr“ – „Option ändern ...“ vornehmen.


Das sich öffnende Fenster ähnelt dem Einstellungsfenster im Bericht im Konfigurator und verfügt auch über ähnliche Funktionen. Um die Aufgabe zu lösen, muss der Benutzer auf die Registerkarte „Felder“ gehen und das Feld „Nomenklatur“ ändern. Durch einen Doppelklick öffnet sich dieses Bearbeitungsfeld und die Schaltfläche „Auswählen...“ wird verfügbar.


Das sich öffnende Fenster gibt uns die Möglichkeit, einen beliebigen Wert auszuwählen, der im Feld „Nomenklatur“ angezeigt wird. Einige Felder haben links ein Pluszeichen – der Entwickler hat in diese Felder Links eingefügt, sodass wir deren Details sehen können. Wir öffnen „Nomenklatur“ und sehen den Artikel, den wir brauchen. Wählen Sie es aus und wählen Sie es aus.


Das Fenster zum Ändern der Berichtsoptionen enthält viele nützliche Funktionen des Datenkompositionssystems. Beispielsweise kann der Benutzer die Reihenfolge der Gruppierungen selbstständig ändern, eine Auswahl hinzufügen oder ein bedingtes Design anwenden. Wir schließen die Bearbeitung ab und erstellen einen Bericht – wie Sie sehen, wird nun das gesamte Produktsortiment in Form von Artikeln angezeigt.


Der SKD 1C:Enterprise 8.3-Mechanismus verfügt außerdem über erweiterte Funktionen für Entwickler. Bei der Entwicklung des Berichts haben wir nur zwei Registerkarten verwendet – „Datensätze“ und „Einstellungen“, aber im ACS gibt es noch viel mehr davon. Um alle Funktionen des Datenkompositionssystems nutzen zu können, müssen Sie verstehen, wozu die einzelnen Registerkarten dienen:

  1. Datensätze – hier werden alle Abfragen aufgelistet, die bei der Erstellung des Berichts eine Rolle spielen;
  2. Datensatzverbindungen – werden verwendet, um Verbindungen zwischen verschiedenen Abfragen aus der ersten Registerkarte herzustellen;
  3. Berechnete Felder – eine Liste hinzugefügter Felder, die nicht aus der Abfrage stammen. Wird am häufigsten in Fällen verwendet, in denen Sie basierend auf den Werten mehrerer Felder einen Wert aus der Anfrage erhalten müssen.
  4. Ressourcen. In 1C ist dies der Name der Felder, für die Sie die Ergebnisse kennen müssen. Ressourcen unterstützen verschiedene Rechenoperationen– Menge, Menge, Maximum und andere;
  5. Optionen. Sie werden verwendet, wenn der Benutzer zum Erstellen eines Berichts bestimmte Daten eingeben muss – zum Beispiel Datum, Abteilungen oder Nomenklatur;
  6. Layouts. Entwickelt für Fälle, in denen Benutzer einen einzigartig gestalteten Bericht sehen möchten. Sie können einen separaten Ort für Unterschriften oder einen neuen oberen Teil des Berichts erstellen – all dies können Sie hier tun;
  7. Verschachtelte Diagramme. Sie werden benötigt, wenn Ihr Bericht Daten aus anderen Berichten enthalten muss;
  8. Einstellungen. Der Abschnitt deklariert die angezeigten Felder, Gruppierungen und Konfigurationen Aussehen Bericht.


Die Anzahl der von den Entwicklern in den ACS-Mechanismus integrierten Möglichkeiten ist groß, viele davon werden jedoch äußerst selten genutzt. Selbst erfahrene 1C-Programmierer können nach jahrelanger Arbeit einige Funktionen nicht nutzen. Um erfolgreich mit der Arbeit im Zutrittskontrollsystem zu beginnen, reicht es aus, die Grundkonzepte und häufig verwendeten Einstellungen zu kennen. In seltenen Fällen kann die Dokumentation Abhilfe schaffen.

Melden Sie sich als Student auf der Website an

Melden Sie sich als Schüler an, um auf Schulmaterialien zuzugreifen

Datenkompositionssystem 1C 8.3 für Anfänger: Zählen der Ergebnisse (Ressourcen)

Der Zweck dieser Lektion wird sein:

  • Schreiben Sie einen Bericht, der eine Liste der Produkte (Lebensmittelverzeichnis), deren Kaloriengehalt und Geschmack anzeigt.
  • Gruppieren Sie Produkte nach Farbe.
  • Erfahren Sie mehr über das Zusammenfassen von (Ressourcen) und berechneten Feldern.

Erstellen Sie einen neuen Bericht

Wie in den vorherigen Lektionen öffnen wir die Datenbank. Delikatessen„Im Konfigurator und über das Menü einen neuen Bericht erstellen“ Datei"->"Neu...":

Art des Dokuments - Externer Bericht:

Schreiben Sie in das Formular zur Berichtseinrichtung den Namen „ Lektion 3" und drücken Sie die Taste " Öffnen Sie das Datenzusammensetzungsdiagramm":

Behalten Sie den Standardschemanamen bei und klicken Sie auf „ Bereit":

Hinzufügen einer Anfrage über den Konstruktor

Auf der Registerkarte „ Datensatz" klicken Grün Pluszeichen und wählen Sie „ Datensatz hinzufügen – Abfrage":

Anstatt den Anfragetext manuell zu schreiben, führen wir ihn erneut aus Abfragekonstruktor:

Auf der „Registerkarte“ Tische„Ziehe den Tisch“ Essen" von der ersten Spalte zur zweiten:

Wählen Sie aus der Tabelle „ Essen„Felder, die wir anfordern werden. Ziehen Sie dazu die Felder per Drag & Drop“ Name", "Schmecken", "Farbe" Und " Kaloriengehalt" von der zweiten Spalte zur dritten:

Es stellte sich so heraus:

Drücken Sie den Knopf " OK" - der Anfragetext wurde automatisch generiert:

Erstellen von Einstellungen für die Berichtspräsentation

Gehen Sie zur Registerkarte „ Einstellungen" und klicken Sie auf Zauberstab, anrufen Einstellungsdesigner:

Wählen Sie den Berichtstyp „ Aufführen...“ und drücken Sie die Taste „ Weiter":

Ziehen Sie die Felder, die in der Liste angezeigt werden sollen, von der linken Spalte nach rechts und klicken Sie auf „ Weiter":

Von der linken Spalte in das rechte Feld ziehen „ Farbe" - es wird passieren Gruppierung Zeilen im Bericht. Klicken " OK":

Und hier ist das Ergebnis der Arbeit des Designers. Hierarchie unseres Berichts:

  • den Bericht als Ganzes
  • Gruppierung „Farbe“
  • detaillierte Einträge - Zeilen mit Lebensmittelnamen

Speichern Sie den Bericht (Schaltfläche Diskette) Und ohne zu schließen Wir öffnen den Konfigurator sofort im Benutzermodus. Es stellte sich so heraus:

Ändern der Spaltenreihenfolge

Aber lasst uns Lass uns die Reihenfolge ändern Spalten (Pfeile nach oben und unten), sodass es wie in der Abbildung unten aussieht:

Speichern wir den Bericht und öffnen ihn erneut im Benutzermodus:

Großartig, das ist viel besser.

Fassen wir den Kaloriengehalt zusammen

Es wäre schön, den Kaloriengehalt von Lebensmitteln nach Gruppen zusammenzufassen. Um die Summe des Kaloriengehalts aller Produkte anzuzeigen, beispielsweise weiß oder gelb. Oder erfahren Sie den Gesamtkaloriengehalt aller Produkte in der Datenbank.

Zu diesem Zweck gibt es einen Mechanismus zur Ressourcenberechnung.

Gehen Sie zur Registerkarte „ Ressourcen„und das Feld ziehen“ Kaloriengehalt"(wir werden es zusammenfassen) von der linken Spalte nach rechts.

Wählen Sie in diesem Fall im Feld den Ausdruck aus der Dropdown-Liste „ Menge (Kalorien)", da die Summe die Summe aller in der Summe enthaltenen Elemente ist:

Wir speichern und erstellen einen Bericht:

Wir haben jetzt Ergebnisse für jede der Gruppen und für den Bericht als Ganzes.

Fassen wir es (durchschnittlich) in Kalorien zusammen

Jetzt lassen wir es in einer anderen Spalte erscheinen Durchschnitt Kaloriengehalt von Produkten nach Gruppen und im Bericht als Ganzes.

Sie können die vorhandene Spalte „Kalorien“ nicht berühren, da dort bereits die Gesamtsumme angezeigt wird Lass uns ein weiteres Feld erstellen, das eine exakte Kopie des Feldes „Kalorie“ ist.

Um ein solches „virtuelles“ Feld zu erstellen, verwenden wir den Mechanismus berechnete Felder.

Gehen Sie zur Registerkarte „ Berechnete Felder" und drücke Grün Pluszeichen:

In einer Kolumne „ Datenweg„Wir schreiben den Namen des neuen Feldes ( einwandfrei, ohne Zwischenraum). Lass es heißen „ Durchschnittlicher Kaloriengehalt", und in der Spalte " Ausdruck„Wir schreiben den Namen eines bestehenden Feldes, auf dessen Grundlage das neue Feld berechnet wird. Wir schreiben dort“ Kaloriengehalt". Spalte " Überschrift" wird automatisch ausgefüllt.

Wir haben ein neues Feld hinzugefügt (" Durchschnittlicher Kaloriengehalt"), aber es erscheint nicht im Bericht selbst – Sie müssen entweder erneut anrufen Einstellungsdesigner(„Zauberstab“) oder fügen Sie dieses Feld hinzu manuell.

Lass es uns tun zweite Weg. Gehen Sie dazu auf den Reiter „ Einstellungen", wählen " Bericht„(schließlich wollen wir das Feld als Ganzes zum Bericht hinzufügen), wählen Sie die Registerkarte unten“ Ausgewählte Felder„und das Feld ziehen“ Durchschnittlicher Kaloriengehalt„Von der linken Spalte nach rechts:

Es stellte sich so heraus:

Wir speichern und erstellen einen Bericht:

Das Feld ist erschienen und wir sehen, dass seine Werte die Werte des Feldes „Kalorie“ sind. Großartig!

Dazu nutzen wir erneut den uns bereits bekannten Mechanismus Ressourcen(zusammenfassend). Gehen Sie zur Registerkarte „ Ressourcen„und das Feld ziehen“ Durchschnittlicher Kaloriengehalt„Von der linken Spalte nach rechts:

Darüber hinaus in der Spalte „ Ausdruck"wählen" Durchschnitt(AverageCalorie)":

Wir speichern und erstellen einen Bericht:

Wir sehen, dass für die Gruppen, also für jede Farbe, und für den gesamten Bericht der Durchschnittswert absolut korrekt berechnet wurde. Aber sie sind vorhanden zusätzliche Einträge für einzelne Produkte (keine Gruppen), die ich aus dem Bericht entfernen möchte.

Wissen Sie, warum sie erschienen sind (Werte nicht nach Gruppe)? Denn als wir das Feld hinzugefügt haben „ Durchschnittlicher Kaloriengehalt„In den Berichtseinstellungen haben wir im zweiten Schritt ausgewählt den gesamten Bericht und dieses neue Feld landete im Element „ Ausführlich Aufzeichnungen".

Beheben wir den Fehler. Gehen Sie dazu zurück zur Registerkarte „ Einstellungen", wählen " Detaillierte Einträge„Zuerst von oben (Schritt 2) und dann“ Detaillierte Einträge„Von unten (Schritt 3) zum Lesezeichen gehen“ Ausgewählt Felder" und wir werden in seiner rechten Spalte das Element sehen " Auto".

Element " Auto" - Dies ist kein einzelnes Feld. Dies sind mehrere Felder, die aufgrund von Einstellungen auf höherer Ebene automatisch hierher fallen.

Um zu sehen, was diese Felder sind, klicken Sie auf das Element „ Auto" Rechts Taste und wählen Sie „ Expandieren":

Element " Auto" erweitert in die folgenden Felder:

Und hier ist unser Feld“ Durchschnittlicher Kaloriengehalt„was hierher kam von der Stelle“ Bericht" als wir ihn dorthin schleppten. Einfach lass uns entfernen Aktivieren Sie das Kontrollkästchen neben diesem Feld, um dessen Ausgabe zu entfernen.

1. Berechnen (Auswerten)- soll einen Ausdruck im Kontext einer Gruppierung bewerten. Die Funktion dient der Kompatibilität mit früheren Versionen der Plattform. Es wird empfohlen, stattdessen die Funktion CalculateExpression zu verwenden.

Syntax:
Berechnen(Ausdruck, Gruppierung, Berechnungstyp)

Optionen :

  • Ausdruck(Linie). Enthält einen berechneten Ausdruck;
  • Gruppierung(Linie). Enthält den Namen der Gruppierung, in deren Kontext der Ausdruck ausgewertet werden soll. Wenn als Gruppierungsname eine leere Zeichenfolge verwendet wird, wird die Berechnung im Kontext der aktuellen Gruppierung durchgeführt. Wenn der GrandTotal-String als Gruppenname verwendet wird, wird die Berechnung im Kontext der Gesamtsumme durchgeführt. Andernfalls wird die Berechnung im Kontext der gleichnamigen übergeordneten Gruppierung durchgeführt.
    Zum Beispiel:
    Sum(Sales.SumTurnover) / Calculate("Sum(Sales.SumTurnover)", "Total").
    In diesem Beispiel ist das Ergebnis das Verhältnis des Betrags für das Feld „Sales.AmountTurnover“ des Gruppierungsdatensatzes zum Betrag desselben Felds im gesamten Layout.
  • Berechnungstyp(Linie). Wenn dieser Parameter auf „TotalTotal“ gesetzt ist, wird der Ausdruck für alle Gruppierungsdatensätze berechnet. Wenn der Wert des Parameters „Gruppierung“ lautet, werden die Werte für den aktuellen Gruppierungsgruppendatensatz berechnet.
2. Ausdruck auswerten (EvalExpression) - soll einen Ausdruck im Kontext einer Gruppierung bewerten. Die Funktion berücksichtigt die Auswahl von Gruppierungen, berücksichtigt jedoch keine hierarchischen Auswahlen. Die Funktion kann nicht auf eine Gruppierung in der Gruppenauswahl dieser Gruppierung angewendet werden.

Syntax:
CalculateExpression(Expression, Grouping, CalculationType, Start, End, Sort, HierarchicalSort, ProcessingIdenticalOrderValues)

Optionen :

  • Ausdruck(Linie). Enthält einen berechneten Ausdruck;
  • Gruppierung(Linie). Enthält den Namen der Gruppierung, in deren Kontext der Ausdruck ausgewertet werden soll. Wenn als Gruppierungsname eine leere Zeichenfolge verwendet wird, wird die Berechnung im Kontext der aktuellen Gruppierung durchgeführt. Wenn der GrandTotal-String als Gruppenname verwendet wird, wird die Berechnung im Kontext der Gesamtsumme durchgeführt. Andernfalls wird die Berechnung im Kontext der übergeordneten Gruppierung mit diesem Namen durchgeführt;
  • Berechnungstyp(Linie). Wenn dieser Parameter auf „TotalTotal“ gesetzt ist, wird der Ausdruck für alle Gruppierungsdatensätze berechnet. Wenn der Wert des Parameters „Gruppierung“ lautet, werden die Werte für den aktuellen Gruppierungsgruppendatensatz berechnet. Wenn der Parameter auf „Nicht-Ressourcen-Gruppierung“ eingestellt ist, wird bei der Berechnung der Funktion für einen Gruppendatensatz nach Ressource der Ausdruck für den ersten Gruppendatensatz der ursprünglichen Gruppierung ausgewertet. Bei der Auswertung der CalculateExpression-Funktion mit dem Wert „GroupingNonResource“ für Gruppendatensätze, bei denen es sich nicht um Gruppierungen nach Ressourcen handelt, wird die Funktion auf die gleiche Weise ausgewertet, wie sie mit dem Wert des Parameters „Grouping“ ausgewertet würde. Der Datenzusammensetzungslayout-Builder gibt beim Generieren eines Datenzusammensetzungslayouts bei der Ausgabe eines Felds – einer Ressource, nach der die Gruppierung durchgeführt wird – an das Layout einen Ausdruck aus, der mithilfe der Funktion CalculateExpression mit dem angegebenen Parameter „GroupingNon-Resource“ berechnet wurde. Für andere nach Ressource gruppierte Ressourcen werden normale Ressourcenausdrücke zurückgegeben. Wenn der Parameter auf „Hierarchie“ gesetzt ist, muss der Ausdruck für den übergeordneten hierarchischen Datensatz ausgewertet werden, sofern vorhanden, und für die gesamte Gruppierung, sofern kein übergeordneter hierarchischer Datensatz vorhanden ist. Wenn der Layout-Builder einen Ausdruck für das Feld „% in Hierarchiegruppe“ generiert, generiert er einen Ausdruck, der die Beziehung des Ressourcenausdrucks zur Funktion „CalculateExpression“ für den Ressourcenausdruck enthält, der für die aktuelle Gruppierung mit dem Berechnungstyp „Hierarchie“ berechnet wird.
  • Start. Gibt an, ab welchem ​​Datensatz das Fragment beginnen soll, in welchen Aggregatausdrucksfunktionen berechnet werden soll und aus welchem ​​Datensatz Feldwerte außerhalb der Aggregatfunktionen abgerufen werden sollen. Eine Zeichenfolge, die Folgendes enthält:
    • "Erste" Es ist erforderlich, den ersten Gruppierungsdatensatz abzurufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom Beginn der Gruppierung verwendet wird. Der resultierende Wert muss eine ganze Zahl größer als Null sein. Beispiel: First(3) – Empfang des dritten Datensatzes vom Beginn der Gruppierung. Wenn der erste Datensatz außerhalb der Gruppierung liegt, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Datensätze vorhanden sind und Sie First(4) erhalten möchten, wird davon ausgegangen, dass keine Datensätze vorhanden sind.
    • "Zuletzt" Sie müssen den letzten Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom Ende der Gruppierung verwendet wird. Der resultierende Wert muss eine ganze Zahl größer als Null sein. Beispiel: Last(3) – Empfang des dritten Datensatzes vom Ende der Gruppe. Wenn der letzte Datensatz außerhalb der Gruppierung liegt, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Datensätze vorhanden sind und Sie Last(4) abrufen möchten, wird davon ausgegangen, dass keine Datensätze vorhanden sind.
    • "Vorherige" Sie müssen den vorherigen Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset zurück zum aktuellen Gruppierungsdatensatz verwendet wird. Beispiel: Previous(2) – Vorheriges aus dem vorherigen Datensatz abrufen. Wenn der vorherige Datensatz außerhalb der Gruppierung liegt (z. B. muss für den zweiten Gruppierungsdatensatz „Previous(3)“ abgerufen werden), wird der erste Gruppierungsdatensatz abgerufen. Beim Empfang des vorherigen Datensatzes für die Gruppierungssumme wird der erste Datensatz abgerufen.
    • "Nächste" Sie müssen den nächsten Gruppierungsdatensatz abrufen. Nach dem Wort in Klammern können Sie einen Ausdruck angeben, dessen Ergebnis als Offset vom aktuellen Gruppierungseintrag nach vorne verwendet wird. Zum Beispiel Next(2) – das Nächste aus dem nächsten Datensatz abrufen. Wenn der nächste Datensatz über die Gruppierung hinausgeht, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Einträge vorhanden sind und der dritte Eintrag „Weiter“ erhält, wird davon ausgegangen, dass keine Einträge vorhanden sind. Wenn der nächste Datensatz für die Gruppierungssumme empfangen wird, wird davon ausgegangen, dass kein Datensatz vorhanden ist.
    • "Aktuell". Sie müssen den aktuellen Datensatz abrufen. Beim Abrufen einer Gruppierungssumme wird der erste Datensatz abgerufen.
    • "Grenzwert". Die Notwendigkeit, einen Datensatz mit dem angegebenen Wert zu erhalten. Nach dem Wort LimitingValue in Klammern müssen Sie den Ausdruck angeben, mit dessen Wert Sie das Fragment beginnen möchten, das erste Bestellfeld. Als Datensatz wird der erste Datensatz zurückgegeben, dessen Bestellfeldwert größer oder gleich dem angegebenen Wert ist. Wenn beispielsweise das Feld „Periode“ als Bestellfeld verwendet wird und es die Werte 01.01.2010, 01.02.2010, 01.03.2010 hat und Sie den LimitingValue(DateTime(2010) erhalten möchten , 1, 15)), dann wird ein Datensatz mit dem Datum 01.02.2010 erhalten.
  • Ende. Gibt an, bis zu welchem ​​Datensatz das Fragment fortgesetzt werden soll, in dem der Aggregatausdruck berechnet werden soll. Eine Zeichenfolge, die Folgendes enthält:
    • "Erste"
    • "Zuletzt"
    • "Vorherige"
    • "Nächste"
    • "Aktuell".
    • "Grenzwert".
  • Sortierung. Eine Zeichenfolge, die durch Kommas getrennt die Ausdrücke auflistet, in deren Richtung die Reihenfolge geordnet werden soll. Wenn nicht angegeben, erfolgt die Sortierung auf die gleiche Weise wie für die Gruppierung, für die der Ausdruck ausgewertet wird. Nach jedem Ausdruck können Sie das Schlüsselwort Ascending für die Sortierung in aufsteigender Reihenfolge, Descending für die Sortierung in absteigender Reihenfolge und Auto-Ordering für die Sortierung der Referenzfelder nach den Feldern angeben, nach denen Sie das referenzierte Objekt ordnen möchten. Das Wort „Automatische Reihenfolge“ kann sowohl mit dem Wort „Aufsteigend“ als auch mit dem Wort „Absteigend“ verwendet werden.
  • Hierarchische Sortierung. Ähnlich wie beim Sortieren. Wird zum Organisieren hierarchischer Datensätze verwendet. Wenn nicht angegeben, generiert der Layout-Compositor die Reihenfolge gemäß der im Parameter „Sort“ angegebenen Reihenfolge.
  • Verarbeitung gleicher Auftragswerte. Eine Zeichenfolge, die Folgendes enthält:
    • „Zusammen“ bedeutet, dass eine Folge geordneter Datensätze verwendet wird, um den vorherigen und den nächsten Datensatz zu bestimmen;
    • „Getrennt“ bedeutet, dass der vorherige und der nächste Datensatz anhand der Werte der Sortierausdrücke bestimmt werden;
    Wenn die resultierende Sequenz beispielsweise nach Datum sortiert ist:
    1. 01. Januar 2001 Ivanov M. 10
    2. 02. Januar 2001 Petrov S. 20
    3. 2. Januar 2001 Sidorov R. 30
    4. 03. Januar 2001 Petrov S. 40
    Bei Verwendung der Verarbeitung identischer Werte der Reihenfolge „Getrennt“ ist der vorherige für Datensatz 3 Datensatz 2 und bei Verwendung von „Zusammen“ Datensatz 1. Und das Fragment für den aktuellen Datensatz für Datensatz 2 für „Getrennt“ wird Datensatz 2 und für „Gemeinsam“ die Datensätze 2 und 3 sein. Somit beträgt die Gesamtsumme für den aktuellen Datensatz für „Getrennt“ 20 und für „Gemeinsam“ - 50. Wenn „Gemeinsam“ im Start und angegeben ist Endparameter können Sie keinen Offset für die Positionen „First“, „Last“, „Previous“, „Next“ angeben. Der Standardwert ist „Getrennt“.
Beispiel:
Ermitteln des Verhältnisses des Betrags für das Feld „Sales.AmountTurnover“ eines Gruppierungsdatensatzes zum Betrag desselben Felds im gesamten Layout:
Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Total").

In diesem Beispiel wird der Wert der aktuellen Hierarchie berechnet:
Auswahl
Wenn Level() > 0
Dann EvaluateExpression("Reference", "Hierarchy")
Ansonsten Null
Ende

Anmerkungen:
Die Funktion berücksichtigt die Auswahl von Gruppierungen, berücksichtigt jedoch keine hierarchischen Auswahlen. Die Funktion kann nicht auf eine Gruppierung in der Gruppenauswahl dieser Gruppierung angewendet werden. Beispielsweise können Sie bei der Auswahl der Nomenklatur-Gruppierung nicht den Ausdruck CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 verwenden. Ein solcher Ausdruck kann jedoch bei der hierarchischen Auswahl verwendet werden. Wenn der Enddatensatz vor dem Startdatensatz liegt, wird davon ausgegangen, dass keine Datensätze zur Berechnung detaillierter Daten und zur Berechnung von Aggregatfunktionen vorhanden sind. Bei der Berechnung von Intervallausdrücken für eine Gesamtsumme (der Gruppierungsparameter ist auf „GrossTotal“ festgelegt) wird davon ausgegangen, dass keine Datensätze zur Berechnung detaillierter Daten und zur Berechnung von Aggregatfunktionen vorhanden sind. Beim Generieren eines Ausdrucks für die CalculateExpression-Funktion ersetzt der Layout-Compositor die CalculateExpression-Funktion durch NULL, wenn der Sortierausdruck Felder enthält, die nicht in der Gruppierung verwendet werden können.

3. Ausdruck mit Gruppenarray auswerten (EvalExpression With Group Array) - Die Funktion gibt ein Array zurück, dessen jedes Element das Ergebnis der Berechnung eines Ausdrucks zur Gruppierung nach dem angegebenen Feld enthält.

Syntax:
CalculateExpressionWithGroupArray (Expression, GroupFieldExpressions, SelectRecords, SelectGroups)

Optionen :

  • Ausdruck(String) – der auszuwertende Ausdruck. Beispiel: „Amount(AmountTurnover)“;
  • FieldExpressionsGroups
  • Auswahl von Datensätzen
  • Auswahl von Gruppierungen- Auswahl wird auf Gruppendatensätze angewendet. Zum Beispiel: „Betrag(AmountTurnover) > &Parameter1“.
Beispiel:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));


Wenn der Layout-Builder Ausdrücke für die Anzeige eines benutzerdefinierten Felds generiert, dessen Ausdruck nur die Funktion CalculateArrayWithGroup enthält, generiert er den Anzeigeausdruck so, dass die von den Ansichten angezeigten Daten und die Daten geordnet werden.
Beispielsweise für ein benutzerdefiniertes Feld mit dem Ausdruck:
CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty")
Der Layout-Builder generiert den folgenden Ausdruck für die Ausgabe:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Ausdruck mit GroupValueTable berechnen (EvalExpressionWithGroupValueTable) - Die Funktion gibt eine Wertetabelle zurück, deren jedes Element das Ergebnis der Berechnung eines Ausdrucks zur Gruppierung nach dem angegebenen Feld enthält.

Syntax:
CalculateExpressionWithGroupValueTable (Ausdruck, GroupField-Ausdrücke, Datensatzauswahl, Gruppenauswahl)

Optionen :

  • Ausdruck(String) – der auszuwertende Ausdruck. Eine Zeile kann mehrere durch Kommas getrennte Ausdrücke enthalten. Nach jedem Ausdruck kann ein optionales Schlüsselwort AS und der Name der Wertetabellenspalte stehen. Beispiel: „Gegenpartei, Betrag (AmountTurnover) als Verkaufsvolumen.“
  • FieldExpressionsGroups- Ausdrücke von Gruppierungsfeldern, durch Kommas getrennt. Beispiel: „Gegenpartei, Partei“;
  • Auswahl von Datensätzen– ein Ausdruck, der auf Detaildatensätze angewendet wird. Beispiel: „Löschkennzeichen = Falsch.“ Wenn drin diesen Parameter Wenn eine Aggregatfunktion verwendet wird, tritt beim Zusammenstellen der Daten ein Fehler auf.
  • Auswahl von Gruppierungen- Auswahl wird auf Gruppendatensätze angewendet. Zum Beispiel: „Betrag(AmountTurnover) > &Parameter1“.
Beispiel:
Berechnen Sie den Ausdruck mit der Gruppierungstabelle der Werte („Konto als Gegenpartei, Betrag (Umsatzbetrag) als Verkaufsvolumen“, „Konto“)

Das Ergebnis dieser Funktion ist eine Wertetabelle mit den Spalten Kontrahent und Verkaufsvolumen, die Kontrahenten mit ihren Verkaufsvolumina enthält.
Der Layout-Compositor wandelt beim Generieren eines Layouts Funktionsparameter in Begriffe von Datenzusammensetzungs-Layoutfeldern um. Beispielsweise wird das Feld „Konto“ in „DataSet.Account“ konvertiert.
Beispielsweise ein benutzerdefiniertes Feld mit dem Ausdruck:
CalculateExpressionWithGroupValueTable("Account, Amount(AmountTurnover)", "Account")
Der Layout-Builder generiert den folgenden Ausdruck für die Ausgabe:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), „2, 4“))

5. Ebene - Die Funktion dient dazu, den aktuellen Aufnahmepegel zu ermitteln.

Syntax:
Ebene()

Beispiel:
Ebene()

6. Sequenznummer - Holen Sie sich die nächste Seriennummer.

Syntax:
NumberByOrder()

Beispiel:
NumberByOrder()

7. SequenceNumberInGrouping – gibt die nächste Sequenznummer in der aktuellen Gruppierung zurück.

Beispiel:
NumberByOrderInGroup()

8. Formatieren - Holen Sie sich eine formatierte Zeichenfolge des übergebenen Werts.

Syntax:
Format(Wert, FormatString)

Optionen :

  • Bedeutung– der Ausdruck, der formatiert werden muss;
  • FormatString- Die Formatzeichenfolge wird gemäß der 1C:Enterprise-Formatzeichenfolge festgelegt.
Beispiel:
Format(Invoices.Doc Amount, „NPV=2“)

9. BeginOfPeriod

Syntax:
StartPeriod(Datum, Periodentyp)

Optionen :

  • Datum(Datum von). Angegebenes Datum;
  • Periodentyp
Beispiel:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Monat“)
Ergebnis: 01.10.2002 0:00:00

10. EndOfPeriod - Die Funktion dient dazu, ein bestimmtes Datum aus einem bestimmten Datum auszuwählen.

Syntax:
EndPeriod(Datum, Periodentyp)

Optionen :

  • Datum(Datum von). Angegebenes Datum;
  • Periodentyp(Linie). Enthält einen der folgenden Werte: Minute; Stunde; Der Tag; Die Woche; Monat; Quartal; Jahr; Jahrzehnt; Halbes Jahr.
Beispiel:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Woche“)
Ergebnis: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - Die Funktion soll dem Datum einen bestimmten Wert hinzufügen.

Syntax:
AddToDate(Ausdruck, Inkrementtyp, Magnitude)

Optionen :

  • Ausdruck(Datum von). Ursprüngliches Datum;
  • TypVergrößerung(Linie). Enthält einen der folgenden Werte: Minute; Stunde; Der Tag; Die Woche; Monat; Quartal; Jahr; Jahrzehnt; Halbes Jahr.
  • Größe(Nummer). Um wie viel das Datum erhöht werden muss, wird der Bruchteil ignoriert.
Beispiel:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Monat", 1)
Ergebnis: 12.11.2002 10:15:34

12. Datumsunterschied - Die Funktion dient dazu, die Differenz zwischen zwei Datumsangaben zu ermitteln.

Syntax:
DifferenceDate(Expression1, Expression2, DifferenceType)

Optionen :

  • Ausdruck1(Datum von). Subtrahiertes Datum;
  • Ausdruck2(Datum von). Ursprüngliches Datum;
  • Typunterschied(Linie). Enthält einen der Werte: Second; Minute; Stunde; Der Tag; Monat; Quartal; Jahr.
Beispiel:
DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), „DAY“)
Ergebnis: 2

13. Teilzeichenfolge – Diese Funktion dient zum Extrahieren eines Teilstrings aus einem String.

Syntax:
Teilzeichenfolge (Zeichenfolge, Position, Länge)

Optionen :

  • Linie(Linie). Die Zeichenfolge, aus der die Teilzeichenfolge extrahiert wird;
  • Position(Nummer). Die Position des Zeichens, an der die aus der Zeichenfolge zu extrahierende Teilzeichenfolge beginnt;
  • Länge(Nummer). Länge des zugewiesenen Teilstrings.
Beispiel:
SUBSTRING(Accounts.Address, 1, 4)

14. StringLength - Die Funktion soll die Länge einer Zeichenfolge bestimmen.

Syntax:
StringLength(String)

Parameter:

  • Linie(Linie). Eine Zeichenfolge, deren Länge angegeben ist.
Beispiel:
Zeile(Gegenparteien.Adresse)

15 Jahre– Diese Funktion dient dazu, das Jahr aus einem Wert vom Typ „Datum“ zu extrahieren.

Syntax:
Jahr (Datum)

Parameter:

  • Datum(Datum von). Das Datum, nach dem das Jahr bestimmt wird.
Beispiel:
JAHR (Ausgabendatum)

16. Viertel – Diese Funktion dient dazu, die Quartalszahl aus einem Wert vom Typ „Datum“ zu extrahieren. Die Quartalszahl liegt normalerweise zwischen 1 und 4.

Syntax:
Quartal (Datum)

Parameter:

  • Datum(Datum von). Das Datum, bis zu dem das Quartal bestimmt wird
Beispiel:
QUARTER(Ausgaben.Datum)

17. Monat – Diese Funktion dient dazu, die Monatszahl aus einem Wert vom Typ „Datum“ zu extrahieren. Die Monatszahl liegt normalerweise zwischen 1 und 12.

Syntax:
Monatsdatum)

Parameter:

  • Datum(Datum von). Das Datum, nach dem der Monat bestimmt wird.
Beispiel:
MONAT (Ausgabendatum)

18. Tag des Jahres (DayOfYear) – Diese Funktion dient dazu, den Tag des Jahres aus einem Wert vom Typ „Datum“ zu ermitteln. Der Tag des Jahres liegt normalerweise zwischen 1 und 365 (366).

Syntax:
Tag des Jahres (Datum)

Parameter:

  • Datum(Datum von). Das Datum, anhand dessen der Tag im Jahr bestimmt wird.
Beispiel:
DAYYEAR(ExpenseAccount.Date)

19. Tag– Diese Funktion dient dazu, den Tag des Monats aus einem Wert vom Typ „Datum“ zu ermitteln. Der Tag des Monats liegt normalerweise zwischen 1 und 31.

Syntax:
Tag (Datum)

Parameter:

  • Datum(Datum von). Das Datum, anhand dessen der Tag des Monats bestimmt wird.
Beispiel:
TAG (Ausgabendatum)

20. Woche – Diese Funktion dient dazu, die Wochennummer des Jahres aus einem Wert vom Typ „Datum“ zu ermitteln. Die Wochen des Jahres werden beginnend mit 1 nummeriert.

Syntax:
Woche (Datum)

Parameter:

  • Datum(Datum von). Das Datum, nach dem die Wochennummern bestimmt werden.
Beispiel:
WOCHE (Ausgabendatum)

21. Wochentag – Diese Funktion dient dazu, den Wochentag aus einem Wert vom Typ „Datum“ zu ermitteln. Der normale Wochentag reicht von 1 (Montag) bis 7 (Sonntag).

Syntax:
Wochentag (Datum)

Parameter:

  • Datum(Datum von). Das Datum, nach dem der Wochentag bestimmt wird.
Beispiel:
TAG DER WOCHE (Rechnungsdatum der Spesen)

22. Stunde– Diese Funktion dient dazu, die Tageszeit aus einem Wert vom Typ „Datum“ zu ermitteln. Die Tageszeit reicht von 0 bis 23.

Syntax:
Stunde (Datum)

Parameter:

  • Datum(Datum von). Das Datum, anhand dessen die Stunde des Tages bestimmt wird.
Beispiel:
STUNDE (Ausgabendatum)

23. Minute – Diese Funktion dient dazu, die Minute der Stunde aus einem Wert vom Typ „Datum“ zu ermitteln. Die Minute der Stunde reicht von 0 bis 59.

Syntax:
Minute (Datum)

Parameter:

  • Datum(Datum von). Das Datum, anhand dessen die Minute der Stunde bestimmt wird.
Beispiel:
MINUTE(Ausgabendatum)

24. Zweitens – Diese Funktion dient dazu, die Sekunde einer Minute aus einem Wert vom Typ „Datum“ zu ermitteln. Die Sekunde einer Minute reicht von 0 bis 59.

Syntax:
Sekunde (Datum)

Parameter:

  • Datum(Datum von). Das Datum, anhand dessen die Sekunden der Minute bestimmt werden.
Beispiel:
SECOND(Ausgabendatum)

25. Besetzung – Diese Funktion dient zum Extrahieren eines Typs aus einem Ausdruck, der möglicherweise einen zusammengesetzten Typ enthält. Wenn der Ausdruck einen anderen Typ als den erforderlichen Typ enthält, wird NULL zurückgegeben.

Syntax:
Express(Expression, TypeIndication)

Optionen :

  • Ausdruck- zu konvertierender Ausdruck;
  • Typangabe(Linie). Enthält eine Typzeichenfolge. Zum Beispiel „Number“, „String“ usw. Zusätzlich zu primitiven Typen kann diese Zeile den Namen der Tabelle enthalten. In diesem Fall wird versucht, einen Verweis auf die angegebene Tabelle auszudrücken.
Beispiel:
Express(Data.Props1, "Number(10,3)")

26. IsNull (IsNull) – Diese Funktion gibt den Wert des zweiten Parameters zurück, wenn der Wert des ersten Parameters NULL ist. Andernfalls wird der Wert des ersten Parameters zurückgegeben.

Syntax:
IsNull(Ausdruck1, Ausdruck2)

Optionen :

  • Ausdruck1- zu prüfender Wert;
  • Ausdruck2– Rückgabewert, wenn Ausdruck1 NULL ist.
Beispiel:
YesNULL(Amount(Sales.AmountTurnover), 0)

27.ACos- Berechnet den Arkuskosinus im Bogenmaß.

Syntax:
ACos(Ausdruck)

Parameter:

  • Ausdruck(Nummer). Der Kosinuswert (im Bereich -1 ... 1), durch den der Winkel bestimmt wird.
28.ASin- Berechnet den Arkussinus im Bogenmaß.

Syntax:
ASin(Ausdruck)

Parameter:

  • Ausdruck(Nummer). Der Sinuswert (im Bereich -1 ... 1), durch den der Winkel bestimmt wird.
29.ATan- berechnet den Arkustangens im Bogenmaß.

Syntax:
ATan(Ausdruck)

Parameter:

  • Ausdruck(Nummer). Der Tangentenwert, durch den der Winkel bestimmt wird.
30.Cos- berechnet den Kosinus.

Syntax:
Cos(Ausdruck)

Parameter:

  • Ausdruck
31. Exp- Potenzierung der Zahl e.

Syntax:
Exp(Ausdruck)

Parameter:

  • Ausdruck(Nummer). Die Bedeutung des Abschlusses.
32.Protokoll- berechnet den natürlichen Logarithmus.

Syntax:
Protokoll (Ausdruck)

Parameter:

  • Ausdruck
33.Log10- berechnet den Logarithmus von X zur Basis 10.

Syntax:
Log10 (Ausdruck)

Parameter:

  • Ausdruck(Nummer). Die ursprüngliche Zahl ist größer als 0.
34. Pow- Potenzierung.

Syntax:
Pow(Basis, Indikator)

Optionen :

  • Base(Nummer). Die Grundlage der Potenzierungsoperation.
  • Index(Nummer). Exponent.
35. Sünde- berechnet den Sinus.

Syntax:
Sünde (Ausdruck)

Parameter:

  • Ausdruck(Nummer). Angabe im Bogenmaß.
36. Quadrat- berechnet die Quadratwurzel.

Syntax:
Sqrt(Ausdruck)

Parameter:

  • Ausdruck(Nummer). Nicht negative Zahl.
37. Bräune- berechnet den Tangens.

Syntax:
Tan (Ausdruck)

Parameter:

  • Ausdruck(Nummer). Der Sinuswert, durch den der Winkel bestimmt wird.
38. Runde- Rundet die ursprüngliche Zahl auf die erforderliche Bittiefe. Der Rundungsmodus ist Standard (1,5 als 2).

Syntax:
Env(Ausdruck, Bittiefe)

Optionen :

  • Ausdruck(Nummer). Originalnummer;
  • Bittiefe(Nummer). Die Anzahl der Dezimalstellen, auf die gerundet werden soll.
39. Int- schneidet ab Bruchteil Zahlen.

Syntax:
Objekt (Ausdruck)

Parameter:

  • Ausdruck(Nummer). Eine Bruchzahl.
40. Funktionen gemeinsamer Module

Ein Datenkompositions-Engine-Ausdruck kann Aufrufe von Funktionen globaler gemeinsamer Konfigurationsmodule enthalten. Für den Aufruf solcher Funktionen ist keine zusätzliche Syntax erforderlich.

Beispiel:
AbbreviatedName(Documents.Link, Documents.Date, Documents.Number)

In diesem Beispiel wird die Funktion „AbbreviatedName“ aus dem allgemeinen Konfigurationsmodul aufgerufen.
Beachten Sie, dass die Verwendung allgemeiner Modulfunktionen nur zulässig ist, wenn der entsprechende Parameter des Datenkompositionsprozessors angegeben ist.
Darüber hinaus können Funktionen allgemeiner Module nicht in benutzerdefinierten Feldausdrücken verwendet werden.

41. Ressentiments – Diese Funktion gibt eine Zeichenfolgendarstellung des übergebenen Werts eines nicht-primitiven Typs zurück. Gibt bei Werten eines primitiven Typs den Wert selbst zurück.

<Пустое значение>".

Beispiel:
Präsentation (Gegenpartei)

42. Schnur - Diese Funktion wandelt den übergebenen Wert in einen String um.

Wenn ein Array oder eine Wertetabelle als Parameter verwendet wird, gibt die Funktion einen String zurück, der eine String-Darstellung aller Elemente des Arrays enthält, getrennt durch die Zeichen „;“. Wenn ein Element eine leere Zeichenfolgendarstellung hat, dann ist die Zeichenfolge „<Пустое значение>".

Beispiel:
Zeile (Verkaufsdatum)

43. ValueIsFilled

Für NULL-Werte gibt Undefiniert immer False zurück.
Bei booleschen Werten wird immer „True“ zurückgegeben.
Bei anderen Typen wird „True“ zurückgegeben, wenn der Wert vom Standardwert für den angegebenen Typ abweicht.

Beispiel:
ValueFilled(DeliveryDate)

44. LevelInGroup – Diese Funktion ermittelt den aktuellen Aufnahmepegel relativ zur Gruppierung.

Kann verwendet werden, um die Verschachtelungsebene eines Datensatzes in einer hierarchischen Gruppierung zu ermitteln.

Beispiel:
LevelInGroup()

45. Werttyp

Syntax:
ValueType(Ausdruck)

Parameter:

  • Ausdruck(Linie). String-Werttyp.
Gibt einen Wert vom Typ Type zurück, der den Werttyp des Funktionsparameters enthält.
mob_info