Wahl der Leser
Populäre Artikel
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 Gruppe 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 und 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 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 Gruppe 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 und 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 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.
Einer der wichtigsten Bereiche von Unternehmenssoftware ist das Reporting. Das Schicksal eines Unternehmens kann (und nicht im übertragenen Sinne!) davon abhängen, wie einfach es ist, einen bestehenden Bericht an die sich ändernden Bedürfnisse des Unternehmens (und der Gesetzgebung) anzupassen oder einen neuen zu erstellen, sei es ein Bericht für das Finanzamt oder ein Diagramm der Abhängigkeit der Güternachfrage von der Jahreszeit und anderen Faktoren. Ein leistungsstarkes und flexibles Berichtssystem, das es einfach macht, die notwendigen Daten aus dem System zu extrahieren, sie in einer verständlichen Form darzustellen und es dem Endbenutzer zu ermöglichen, einen Standardbericht neu zu konfigurieren, um die Daten in einem neuen Licht zu sehen – das ist das Ideal, das jeder hat welches Geschäftssystem angestrebt werden sollte.
In der 1C:Enterprise-Plattform ist ein Mechanismus namens „Data Composition System“ (abgekürzt DCS) für die Erstellung von Berichten verantwortlich. In diesem Artikel werden wir versuchen, die Idee und Architektur des ACS-Mechanismus und seine Fähigkeiten kurz zu beschreiben.
ACS ist ein Mechanismus, der auf einer deklarativen Beschreibung von Berichten basiert. Das Zutrittskontrollsystem dient der Erstellung von Berichten und der Darstellung komplex strukturierter Informationen. Neben der Entwicklung von Berichten wird der ACS-Mechanismus übrigens auch in 1C:Enterprise in einer dynamischen Liste verwendet, einem Tool zur Anzeige von Listeninformationen mit umfangreichen Funktionen (Anzeige flacher und hierarchischer Listen, bedingtes Design von Zeilen, Gruppierungen usw.). ).
Eine der Ideen, die dem Zugangskontrollsystem zugrunde lagen, war die Flexibilität und Anpassung von Berichten, die sowohl dem Entwickler als auch dem Endbenutzer zugänglich waren. Im Idealfall möchte ich dem Endbenutzer Zugriff auf die gleichen Berichtsentwurfstools gewähren wie dem Entwickler. Es wäre logisch, einen einzigen Satz von Werkzeugen zu schaffen, die allen zur Verfügung stehen. Da die Tools die Beteiligung des Endbenutzers erfordern, bedeutet dies, dass der Programmieraufwand in ihnen auf ein Minimum reduziert werden sollte (am besten vollständig eliminiert) und die visuellen Einstellungen maximal genutzt werden sollten.
Es ist leicht, Analogien der für SQL-Abfragen standardmäßigen Abschnitte zu erkennen – SELECT, FROM, GROUP BY, ORDER BY.
Gleichzeitig enthält die Abfragesprache eine erhebliche Anzahl von Erweiterungen, die darauf abzielen, die Besonderheiten finanzieller und wirtschaftlicher Probleme abzubilden und den Aufwand für die Entwicklung von Anwendungslösungen maximal zu reduzieren:
Es gibt auch spezielle Abfragesprachenerweiterungen für Zutrittskontrollsysteme. Die Erweiterung erfolgt mithilfe spezieller syntaktischer Anweisungen in geschweiften Klammern, die direkt im Anforderungstext platziert werden. Mithilfe von Erweiterungen bestimmt der Entwickler, welche Vorgänge der Endbenutzer beim Anpassen des Berichts ausführen kann.
Zum Beispiel:
Beispiel:
Sie können beispielsweise eine Abfrage als Datensatz zum Datenzusammensetzungsschema hinzufügen und den Abfragekonstruktor aufrufen, mit dem Sie grafisch eine Abfrage beliebiger Komplexität erstellen können:
Das Ergebnis des Starts des Abfragedesigners ist der Abfragetext (in der 1C:Enterprise-Abfragesprache). Dieser Text kann bei Bedarf manuell angepasst werden:
In einem Datenlayout-Schema können mehrere Datensätze vorhanden sein, Datensätze können im Layout beliebig verknüpft werden, berechnete Felder können hinzugefügt werden, Berichtsparameter können angegeben werden usw. Erwähnenswert ist eine interessante Funktion des Abfragemechanismus in 1C:Enterprise. Abfragen werden letztendlich in einen SQL-Dialekt übersetzt, der für das DBMS spezifisch ist, mit dem die Anwendung direkt arbeitet. Im Allgemeinen versuchen wir, die Fähigkeiten der DBMS-Server maximal zu nutzen (die Einschränkung besteht darin, dass wir nur die Fähigkeiten nutzen, die gleichzeitig in allen von der 1C:Enterprise-Plattform unterstützten DBMS verfügbar sind – MS SQL, Oracle, IBM DB2). , PostgreSQL). Daher können wir auf Abfrageebene in berechneten Feldern nur die Funktionen verwenden, die in SQL übersetzt sind.
Aber auf der Ebene des Datenkompositionsschemas können wir bereits benutzerdefinierte Felder hinzufügen und darin Funktionen in der integrierten 1C-Entwicklungssprache (einschließlich der von uns geschriebenen) verwenden, was die Möglichkeiten von Berichten erheblich erweitert. Technisch sieht es so aus: Alles, was in SQL übersetzt werden kann, wird in SQL übersetzt, die Abfrage wird auf DBMS-Ebene ausgeführt, die Abfrageergebnisse werden im Speicher des 1C-Anwendungsservers abgelegt und der SKD berechnet für jeden Datensatz die Werte von berechneten Feldern, deren Formeln in der 1C-Sprache geschrieben sind.
Benutzerdefinierte Felder hinzufügen
Sie können dem Bericht beliebig viele Tabellen und Diagramme hinzufügen:
Berichtsdesigner
Laufzeitbericht
Mithilfe von SKD kann der Benutzer dem Bericht komplexe Auswahlen hinzufügen (die der Anfrage an den richtigen Stellen hinzugefügt werden), bedingtes Design (ermöglicht die unterschiedliche Formatierung der angezeigten Felder – mit Schriftart, Farbe usw., abhängig von ihren Werten). ) und vieles mehr. .
Der Prozess der Erstellung und Generierung eines Berichts lässt sich kurz wie folgt beschreiben:
Der Prozess der Erstellung eines Berichts mithilfe des ACS-Mechanismus
Wir versuchen, die Menge der vom Server an die Clientanwendung übertragenen Berichtsdaten zu minimieren. Bei der Anzeige von Daten in einem Tabellenkalkulationsdokument übertragen wir beim Öffnen eines Tabellenkalkulationsdokuments nur die Zeilen vom Server, die der Benutzer am Anfang des Dokuments sieht. Während sich der Benutzer durch das Dokument bewegt, werden die fehlenden Daten vom Server auf den Client heruntergeladen.
Anzeigemodus in der Entwurfszeit festlegen
Zeigen Sie die Einstellung zur Laufzeit im Schnellzugriffsmodus an (unter der Schaltfläche „Generieren“).
Datenlayoutdiagramm (1C SKD)- ein praktischer Designer zum Erstellen komplexer Berichte in 1C:Enterprise-Softwareprodukten, die zur Entwicklung und Verfolgung der Produktionsautomatisierung beitragen und es ermöglichen, diese in kürzester Zeit so flexibel und schön wie möglich zu gestalten. Ein zusätzlicher Vorteil des Data Composition Scheme (1C SKD) ist die automatische Generierung eines kontrollierten Berichtsformulars, und mit der Weiterentwicklung dieses Bereichs ist dies ein wichtiger Faktor bei der Auswahl einer Berichtsentwicklungsmethode. Aufgrund der Komplexität der Struktur des Data Composition Scheme (1C SKD) und der Vielzahl an Einstellungen führt dies jedoch häufig zu einer längeren Entwicklung des Berichts als durch den „Ausgabeformular-Designer“. Daher muss ein 1C-Programmierer alle Feinheiten des Data Composition Scheme (1C DCS) verstehen, um die Entwicklungszeit für die Erstellung von Berichten weiter zu verkürzen.
Schauen wir uns die ersten drei Registerkarten des Data Composition Scheme (1C SKD) an – Datensatz, Datensatzverbindungen und berechnete Felder.
Datensatz in 1C SKD
Der Datensatz beinhaltet die Möglichkeit, drei Objekte zu erstellen – eine Abfrage, ein Objekt und eine Union. Schauen wir uns jedes davon genauer an:
Dies ist eine reguläre Abfrage, die über die Schaltfläche „Query Builder“ generiert wird. Wenn das Autofill-Flag gesetzt ist, werden alle ausgewählten Details automatisch in die Felder des Datensatzes übernommen. Es ist auch möglich, das Ausfüllen von Feldern in der Anfrage auf der Registerkarte „Datenzusammensetzung“ anzupassen, wo es drei Registerkarten gibt:
Tabellen: Hier werden die Tabellen ausgewählt, die an der Erstellung des Berichts beteiligt sind. Normalerweise werden die Standarddaten ausgewählt, da wir auf der Registerkarte „Tabellen und Felder“ bereits die Dokumente, Verzeichnisse und Register ausgewählt haben, die wir benötigen ...
Felder, hier wählen wir die Objekte aus, die in den Bericht aufgenommen werden sollen. Das Kinder-Flag zeigt an, ob für das Objekt zugängliche untergeordnete Elemente vorhanden sind oder nicht. Es ist logisch, dass dies für Zeichenfolgen, numerische und ähnliche Daten nicht festgelegt werden kann die Flagge auf True.
Bedingungen, hier wählen wir diejenigen Objekte aus, die unter Bedingungen im Zutrittskontrollsystem verwendet werden können.
Ein Teil der Arbeit wird im Datenzusammensetzungsschema erledigt, ein Teil davon wird programmgesteuert erledigt; schauen wir uns ein einfaches Beispiel an:
Zuerst erstellen wir ein Layoutdiagramm für das Datenlayout des Dokuments und nennen es SKD (zum Beispiel: 1C SKD), darin erstellen wir ein Datensatzobjekt, dann füllen wir die Felder aus, zum Beispiel haben wir ein Dokument mit einem tabellarischen Warenteil mit Einzelheiten - Nomenklatur, Menge und Preis.
Fügen wir drei Felder hinzu und füllen Sie jede Spalte mit dem Namen der Details aus. Die restlichen Spalten werden automatisch ausgefüllt:
Lassen Sie uns eine Schaltfläche im Dokumentformular erstellen und den Funktionsmechanismus in kontrollierten Formularen beschreiben:
&OnClient
Prozedur Print()
OurReport = PrintOnServer(); //Funktion auf dem Server aufrufen
OurReport.Show(); //den generierten Bericht anzeigen
Ende des Verfahrens
&Auf dem Server
Funktion PrintOnServer()
DocumentObject = FormAttributeValue(“Object”);
//Wir platzieren den tabellarischen Teil Produkte in einer Struktur mit dem Namen ProductsSKD auf die gleiche Weise, wie wir im SKD selbst den Namen des Objekts angegeben haben, das die Daten enthält
DataSet = neue Struktur;
DataSet.Insert(“ProductsSKD”, DocumentObject.Products);
//Wir erhalten unser Layout und legen die Standardeinstellungen fest, sodass alle Berichtsausgabeeinstellungen aus unserem Layout übernommen werden
OurLayout = DocumentObject.GetLayout(“SKD”);
Einstellungen = OurLayout.DefaultSettings;
//Erstellen Sie mit unseren Einstellungen ein Datenlayout-Layout
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);
//Führen Sie eine Datenkomposition mit unserem Datensatz durch
DataCompositionProcessor = newDataCompositionProcessor;
DataCompositionProcessor.Initialize(LayoutLayout, DataSet);
//Wir erstellen ein Tabellenkalkulationsdokument und zeigen unseren Bericht darin an
ReportDocument = Neues TabularDocument;
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(ReportDocument);
OutputProcessor.Output(DataCompositionProcessor);
Return DocumentReport;
EndFunction
Wenn Sie möchten, können Sie Bereiche mit einem beliebigen anderen Layout erhalten und diese auch in diesem Bericht anzeigen. Wir haben beispielsweise ein Standardlayout für die Erstellung eines Zahlungsauftrags und die Kopfzeile ist darin sehr gut erstellt, um dies nicht zu tun unnötige Arbeit, wir erstellen einfach zuerst das Layout, zeigen die Kopfzeile an, dann erstellen wir unseren Bericht und zeigen ihn im Zutrittskontrollsystem an.
UM Vereinigung
Wir können unsere Abfragen und Objekte darin platzieren, aber im Gegensatz zu einer Verbindung fügt es einfach Tabellen zueinander hinzu, das heißt, wenn wir zwei identische Tabellen verbinden, erhalten wir am Ende eine, und wenn wir sie kombinieren, verdoppelt sie sich, schauen wir mal an einem einfachen Beispiel:
Wir haben Tische:
Nach der Mitteilung erhalten wir:
Und wenn kombiniert:
Betrachten wir nun das Ausfüllen von Spalten in Datensätzen (wir werden einige überspringen, da sie sich auf andere Registerkarten beziehen; wir werden in zukünftigen Artikeln darauf zurückkommen):
- Feld, geben Sie den allgemeinen Namen des Attributs an;
- Weg Geben Sie den Namen der Details an, mit denen wir ihn im Zugangskontrollsystem kontaktieren, zum Beispiel in Berechnete Felder;
- Titel, geben Sie den Namen des Attributs an, das im Bericht angezeigt wird;
- Feldbegrenzung, geben Sie die Verfügbarkeit dieser Anforderung an;
- Einschränkung der Details Wir geben die Verfügbarkeit von untergeordneten Elementen an. Es ist wichtig, dass das Feld selbst verfügbar ist, wenn die Verfügbarkeit von Details angegeben wird. Möglicherweise wird diese Mechanik in zukünftigen Versionen geändert.
- Ausdruck, mit dem die Felddarstellung berechnet wird, es ist praktisch zu verwenden, wenn wir die Ausgabe von Details ein wenig ändern müssen, zum Beispiel, wenn wir nach dem Namen benötigen Nomenklatur angezeigt wurde Aktie, wo es sich befindet, dann füllen Sie Folgendes aus: Artikel + „ist im Lager“ + Lager. Ich wiederhole, dass der Zugriff auf die Daten über den in der Spalte angegebenen Namen erfolgt Weg;
- Ausdrucksordnung, ein praktischer Mechanismus zum Einrichten der Berichtsreihenfolge, bei dem die Bedingung manuell festgelegt werden kann, ähnlich wie im vorherigen Punkt, aber wie die Praxis zeigt, funktioniert dieser Mechanismus oft nicht so, wie wir es gerne hätten, und ich empfehle Ihnen, die Standardsortierung zu verwenden;
- Werttyp, gibt den Werttyp des Attributs an; dieser muss ausgefüllt werden, wenn Sie das folgende Feld verwenden;
- verfügbaren Werte, funktioniert nur, wenn es voll ist Werttyp, öffnen Sie das Formular und in der Spalte Bedeutung Wir geben das Element an, das geändert werden muss, je nach Typ können es vordefinierte Objekte oder numerisch sein, zum Beispiel haben Details einfache Werte, in Präsentation Wir geben an, was wir ändern müssen, ein Beispiel für einen booleschen Typ:
- Dekor– Standard-Feldformateinstellungen, ähnlich den Einstellungen in verwalteten Formularen, ermöglichen es Ihnen, die Ausgabe bestimmter Details genauer und schöner anzupassen.
Datensatzverbindungen in 1C SKD
Hier wird es nur installiert links beitreten, nach einem ähnlichen Prinzip wie Verbindungen in Anfragen, in Quelle der Kommunikation Geben Sie die Haupttabelle für die Verbindung an, in Empfänger zusätzlich. IN Ausdrucksquelle Und Ausdrucksempfänger Wir geben die Einzelheiten an, über die die Kommunikation erfolgen soll. Wir werden uns die restlichen Spalten genauer ansehen, wenn wir uns die Registerkarte ansehen. Optionen. Wenn keine zusätzliche Verbindung mit Parametern vorhanden ist, wird empfohlen, die Verbindung in der Anfrage vorzunehmen, um den Bericht zu beschleunigen.
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 Nomenklaturgruppe 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 „GrandTotal“ 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.
Optionen
<Выражение>
Typ: Zeichenfolge. Der auszuwertende Ausdruck.
<Группировка>
Typ: Zeichenfolge. 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 Gruppe 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.SumTurnover des Gruppierungsdatensatzes zum Betrag desselben Felds im gesamten Layout;
<ОбластьВычисления>
Typ: Zeichenfolge. Der Parameter kann folgende Werte annehmen:
Bei der Berechnung einer Funktion CalculateExpression() Mit dem Wert „Nicht-Ressourcengruppierung“ für Gruppendatensätze, die keine Ressourcengruppierungen sind, wird die Funktion auf die gleiche Weise berechnet, wie sie berechnet würde, wenn der Parameterwert gleich dem Gruppierungswert wäre.
Der Datenzusammensetzungslayout-Generator platziert beim Generieren eines Datenzusammensetzungslayouts und 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(), was den Parameter „Nicht-Ressourcen-Gruppierung“ angibt. Für andere Ressourcen werden die üblichen Ressourcenausdrücke in der Ressourcengruppierung platziert.
<Начало>
Typ: Zeichenfolge. 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:
<Конец>
Typ: Zeichenfolge. 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:
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.
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 den letzten (4) abrufen möchten, wird davon ausgegangen, dass keine Datensätze vorhanden sind.
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.
Wenn der nächste Datensatz über die Gruppierung hinausgeht, wird davon ausgegangen, dass keine Datensätze vorhanden sind. Wenn beispielsweise drei Datensätze vorhanden sind und Next() für den dritten Datensatz empfangen wird, wird davon ausgegangen, dass keine Datensätze vorhanden sind.
Wenn der nächste Datensatz für die Gruppierungssumme empfangen wird, wird davon ausgegangen, dass kein Datensatz vorhanden ist.
Beim Abrufen einer Gruppierungssumme wird der erste Datensatz abgerufen.
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.
<Сортировка>
Typ: Zeichenfolge. 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 die Schlüsselwörter Ascending (für die Sortierung in aufsteigender Reihenfolge), Descending (für die Sortierung in absteigender Reihenfolge) und AutoOrder (für die Sortierung der Referenzfelder nach den Feldern, nach denen Sie das referenzierte Objekt ordnen möchten) angeben. Das Wort „Automatische Reihenfolge“ kann sowohl mit dem Wort „Aufsteigend“ als auch mit dem Wort „Absteigend“ verwendet werden.
<ИерархическаяСортировка>
Typ: Zeichenfolge. Identisch mit der Sortieroption. Wird zum Organisieren hierarchischer Datensätze verwendet. Wenn nicht angegeben, generiert der Layout-Compositor die Reihenfolge gemäß der im Parameter „Sort“ angegebenen Reihenfolge.
<ОбработкаОдинаковыхЗначенийПорядка>
Typ: Zeichenfolge. Gibt die Regel zur Bestimmung des vorherigen oder nächsten Datensatzes an, falls mehrere Datensätze mit demselben Bestellwert vorhanden sind:
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 |
Wenn der Parameterwert „Separat“ lautet, gilt Folgendes:
§ Der vorherige Eintrag zu Eintrag 3 wird Eintrag 2 sein.
§ Wenn das Berechnungsfragment als Current, Current definiert ist (bzw. die Parameter Start und End), dann besteht dieses Fragment für Datensatz 2 aus einem Datensatz 2. Der Ausdruck CalculateExpression(“Sum (Value)”, Current, Current) wird gleich 20 sein.
Wenn der Parameterwert Together ist, dann:
§ Der vorherige Eintrag zu Eintrag 3 wird Eintrag 1 sein.
§ Wenn das Berechnungsfragment als „Aktuell“, „Aktuell“ (bzw. die Parameter „Start“ und „Ende“) definiert ist, besteht dieses Fragment für Datensatz 2 aus den Datensätzen 2 und 3. Der Ausdruck CalculateExpression(“Sum (Value)”, Current, Current) wird gleich 50 sein.
Wenn Sie einen Parameterwert gleich „Together“ angeben, können Sie in den Parametern „Start“ und „Ende“ keinen Offset für die Positionen „Erste“, „Letzte“, „Vorherige“ und „Nächste“ angeben.
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 eine leere Referenz oder ein anderer als Undefiniert ist. Boolesche Werte werden auf NULL ü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 – 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 die Zeichen „; „. Wenn eine Wertetabelle als Parameter übergeben wird, gibt die Funktion eine Zeichenfolge zurück, die die Zeichenfolgendarstellungen aller Zeilen der Wertetabelle enthält, wobei die Zelldarstellungen jeder Zeile durch die Zeichen „;“ getrennt sind. “, und die Zeilen sind ein Zeilenvorschubsymbol. Wenn ein Element eine leere Zeichenfolgendarstellung hat, wird die Zeichenfolge anstelle ihrer Darstellung angezeigt<Пустое значение>.
In Verbindung stehende Artikel: | |
So öffnen Sie ein XML-Dokument - Funktionen zum Arbeiten mit XML-Dateien. So öffnen Sie die XML-Erweiterung
Im Windows-Betriebssystem speichern die meisten Programme ihre... Was sind ROOT-Rechte und wie erhält man sie auf Android? Nachteile von Root-Rechten
Sie haben Root-Rechte für Ihr Android-Smartphone oder -Tablet erhalten. Alles scheint... PayPal – was ist das für ein System und wie nutzt man es?
PayPal ist ein internationales Zahlungssystem, mit dem Sie... |