Berechnete Felder in SKD. Ausdruckssprache des Datenkompositionssystems (1Cv8)

Hallo, lieber Leser! Wir haben eine weitere Lektion über die Grundlagen des Layoutsystems. In haben Sie sich mit den Funktionen der SKD-Ausdruckssprache vertraut gemacht, die Funktionen des Layoutsystems kennengelernt und auch die Grundeinstellungen der Layoutfelder verstanden. Jetzt werden wir uns neues Material ansehen. Gehen!

Zusätzliche Einstellungen für ACS-Felder.

Spalte "Werttyp" Ermöglicht Ihnen, den Datentyp für das Layoutfeld anzugeben. Warum beispielsweise im Feld „Nomenklatur“ den Typ angeben, wenn man bereits weiß, um welchen Typ es sich handelt? Dies ist erforderlich, wenn es sich bei dem Layoutfeld um einen zusammengesetzten Typ handelt. Sie können einen bestimmten Typ auswählen. Bei der Auswahl über dieses Feld werden dann Werte dieses Typs ausgewählt.

Spalte „Verfügbare Werte“ ermöglicht es Ihnen, die zur Auswahl verfügbaren Werte anzugeben und die Auswahl des Benutzers auf bestimmte Grenzen zu beschränken.

Spalte "Dekor" ermöglicht es Ihnen, das Design eines Layoutfelds festzulegen, ohne Layouts zu verwenden. Sie können die Schriftfarbe, Rahmenfarbe, Textausrichtung usw. festlegen.

Spalte „Bearbeitungsoptionen“ Ermöglicht Ihnen festzulegen, wie das Layoutfeld bearbeitet werden soll. Beispielsweise können Sie in einer Auswahl eine Schnellauswahl von Elementen aus einer Liste festlegen. Standardmäßig erbt ein Layoutfeld alle Bearbeitungsoptionen vom Metadatenobjekt.

Berechnete Felder

Auf der Registerkarte „Berechnete Felder“ der Datenzusammensetzung können Sie Ihre eigenen berechneten Felder erstellen.

Warum benötigen Sie berechnete Felder, wenn Sie diese auf Abfrageebene erstellen können? Nicht alle Felder können mit einer Abfrage beschrieben werden. Wenn Sie ein komplexes Feld aus verschiedenen Datensätzen erstellen müssen, beispielsweise einer Abfrage und einem Objekt, dann können Sie auf berechnete Felder nicht verzichten. Sie können kein Datenzusammensetzungsfeld hinzufügen, wenn die Datenquelle eine Abfrage ist und die automatische Ausfüllung aktiviert ist. Mit berechneten Feldern können Sie jedoch beliebig viele Felder hinzufügen.

In der Spalte „Ausdruck“ des berechneten Felds müssen Sie einen beliebigen Ausdruck schreiben, der die Datenzusammensetzungsfelder verwendet und auf deren Pfad zugreift (die Spalte „Pfad“ auf der Registerkarte „Datensätze“). Entweder können Sie mathematische Transformationsfunktionen nutzen oder auf die Funktionen gängiger Module zugreifen. Schreiben wir zum Beispiel in die Spalte „Datenpfad“ den Namen des berechneten Feldes „Abweichung“ und in das Feld „Ausdruck“ Folgendes.

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 diesem Beispiel ist das Ergebnis 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 eines 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 und in welchem ​​Aggregatausdrucksfunktionen berechnet werden soll. 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 abzurufen. 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 gemäß 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 ein anderer als der Standardwert dieses Typs, ein anderer als NULL, ein anderer als ein leerer Verweis oder ein anderer als Undefiniert ist. 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.

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 diesem Beispiel ist das Ergebnis 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 eines 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 und in welchem ​​Aggregatausdrucksfunktionen berechnet werden soll. 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 abzurufen. 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 gemäß 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 ein anderer als der Standardwert dieses Typs, ein anderer als NULL, ein anderer als ein leerer Verweis oder ein anderer als Undefiniert ist. 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.

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 abzurufen. 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, 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. 3. 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 generiert, um ein benutzerdefiniertes Feld anzuzeigen, dessen Ausdruck nur die Funktion CalculateArrayWithGroup enthält, generiert er den Ausgabeausdruck so, dass die Anzeigedaten und die Daten 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)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. 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 Spalte der Wertetabelle 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 dieser Parameter eine Aggregatfunktion verwendet, tritt beim Zusammenstellen der Daten ein Fehler auf.
  • Auswahl von Gruppierungen- Auswahl wird auf Gruppendatensätze angewendet. Zum Beispiel: „Betrag(AmountTurnover) > &Parameter1“.
Beispiel:
CalculateExpressionWithGroupValueTable("Counterparty AS Counterparty, Amount(AmountTurnover) ASSalesVolume", "Counterparty")

Das Ergebnis dieser Funktion ist eine Wertetabelle mit den Spalten Kontrahent und Verkaufsvolumen, die Kontrahenten mit ihren Verkaufsvolumina enthält.
Der Layout-Builder wandelt beim Generieren eines Layouts Funktionsparameter in Begriffe von Datenlayout-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 – eine formatierte Zeichenfolge des übergebenen Werts abrufen.

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 soll die Quartalszahl aus einem Wert vom Typ „Datum“ 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 Stunde des Tages 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:
ZWEITER (Verfallsdatum)

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 als den erforderlichen Typ enthält, wird NULL zurückgegeben.

Syntax:
Express(Expression, TypeIndication)

Optionen :

  • Ausdruck- der umzuwandelnde 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 den Bruchteil einer Zahl ab.

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. Zeichenfolge - 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.

Durch die ordnungsgemäße Verwendung eines Datenzusammensetzungsschemas (DCS) können Sie:

  • die für die Erstellung eines Berichts erforderliche Zeit erheblich verkürzen;
  • Eliminieren Sie die Notwendigkeit, einen verwalteten Formularhandler zu erstellen.
  • Erhalten Sie ein schönes Ergebnis mit der Möglichkeit einer zusätzlichen Anpassung durch den Benutzer.

Allerdings nutzen nicht alle Entwickler die Möglichkeiten des Schemas optimal aus, da nicht alle Einstellungen offensichtlich und intuitiv sind. Insbesondere wissen viele Menschen, dass es in 1C SKD berechnete Felder gibt, sie verstehen jedoch nicht vollständig den Umfang ihrer Verwendung und die Methoden, mit ihnen zu arbeiten.

Was ist ein berechnetes Feld?

In den meisten Fällen ist die Datenquelle in einem Layoutdiagramm eine Abfrage. Grundsätzlich können Sie innerhalb der Abfrage selbst bereits verschiedene Formeln, Konstruktionen und Ausdrücke verwenden. Es stellt sich natürlich die Frage: Warum brauchen wir doppelte Funktionalität?

Tatsache ist, dass das Zutrittskontrollsystem mehr ist als nur die Anzeige des Ergebnisses einer Abfrage, und dies ist aus dem Diagrammerstellungsformular (Abb. 1) deutlich ersichtlich.

Mit berechneten Feldern können Sie bestimmte Aktionen mit dem generierten Datensatz ausführen:

  • Geben Sie ein durch eine Anfrage empfangenes Datenarray in eine bestimmte Zelle aus und kombinieren Sie dabei mehrere Zeilen zu einer.
  • Greifen Sie auf die Exportfunktionen des allgemeinen Moduls zu;
  • Führen Sie die verschiedenen für die Layoutsprache verfügbaren Ausdrücke aus und verwenden Sie die speziellen EvaluateExpression-Funktionen.

Gehen wir diese Liste durch.

Array von Werten in einer Zelle

Lassen Sie uns eine Situation simulieren, in der es notwendig ist, alle Empfangsbelegnummern für eine Gegenpartei in einer separaten Zelle zu erhalten:


Daher haben wir in unserem Schema ein zusätzliches Berechnungsfeld erstellt;


Wie aus dem obigen Beispiel hervorgeht, gibt es keine Schwierigkeiten beim Hinzufügen und Verarbeiten berechneter Felder. Wir haben zwei Funktionen verwendet: Array() und ConnectRows().

Ein paar Worte zu Letzterem. Zusätzlich zum ersten Parameter, der die Kennung des Arrays, Werte oder Werte angibt, können darin zwei weitere festgelegt werden:

  1. Elementtrennzeichen – gibt an, welches Zeichen ein Array-Element oder eine Zeile einer Wertetabelle von einem anderen trennt (in unserem Fall haben wir diesen Parameter weggelassen und standardmäßig einen Zeilenumbruch zugewiesen);
  2. Spaltentrennzeichen – ein Zeichen, das zum Trennen von Spalten einer Wertetabelle verwendet wird (standardmäßig wird ein Semikolon verwendet).

Zugriff auf die Exportfunktionen eines gemeinsamen Moduls

Funktionen eines gemeinsamen Moduls können als Datenquelle zum Füllen eines berechneten Felds dienen.

Ein paar wichtige Punkte:

  • Die Funktion muss exportierbar sein;
  • Befindet sich eine Funktion in einem gemeinsamen Modul mit gesetztem Attribut „Global“, wird sie direkt über den Namen aufgerufen, andernfalls muss die Funktion nach dem Schema „Globaler Modulname“ aufgerufen werden. „Name der aufzurufenden Funktion.“

Als Anwendungsbeispiel nehmen wir die gleiche Anforderung von Empfangsdokumenten und zeigen sie in einer separaten Spalte an. Wir werden die Anfrage selbst nicht beschreiben; gehen wir direkt zu den berechneten Feldern über:


Wir sehen also, dass nahezu jeder Datenprozessor über das Zugangskontrollsystem initialisiert werden kann, was die Einsatzmöglichkeiten des Schemas erheblich erweitert.

Ausdrücke in der Layoutsprache

Bei der Arbeit eines Entwicklers kommt es häufig vor, dass das Ergebnis der Division im ACS-Feld angezeigt werden muss:

  1. Berechnen Sie die durchschnittlichen Kosten des Artikels.
  2. Alle Arten von Interesse;
  3. Berechnungen des Durchschnittsverdienstes usw.

Um Probleme zu vermeiden, empfiehlt es sich in diesen Fällen, einen Test zur Division durch 0 in das berechnete Feld einzugeben.

Dies kann mit der Konstruktion „Choice When….Then… Sonst… End“ erfolgen.

Zum Schluss noch ein paar Worte zur recht neuen Funktion CalculateExpression(). Mit seiner Hilfe können Sie insbesondere Kostenabweichungen zwischen der aktuellen und der vorherigen Zeile, den kumulierten Saldo usw. berechnen.

Nehmen wir an, Sie können die Dokumentsumme aus der vorherigen Zeile unserer Anfrage erhalten, indem Sie im Feld „Ausdruck“ den Wert „Ausdruck berechnen“ („Dokumentsumme“, „Vorherige Summe“) angeben.