Ausdruckssprache des Datenkompositionssystems (1Cv8). Datenlayoutschema (1C SKD) 1S SKD berechnetes Feld

Wir haben die Einstellungen der Berichte, die auf der Grundlage des Zutrittskontrollsystems implementiert wurden, eingehend untersucht. Schauen wir uns nun subtilere und detailliertere Einstellungen für Berichtsoptionen an. Das Fenster für „erweiterte“ Einstellungen der Berichtsoption wird über den Befehl „Mehr“ – „Sonstiges“ – „Berichtsoption ändern“ aufgerufen.

Das Fenster zum Ändern der Berichtsversion ist in zwei Teile unterteilt:

1. Berichtsstruktur.

2. Berichtseinstellungen.


Der Abschnitt „Struktur“ der Berichtsoptionen ähnelt der Registerkarte „Struktur“ der Standardberichtseinstellungen. Der Zweck und die Konfiguration von Gruppierungen werden in Teil 1 des Artikels ausführlich besprochen.

Die Strukturtabelle der Berichtsvarianten enthält neben der eigentlichen Spalte mit Gruppierungen mehrere zusätzliche Spalten:

Der Abschnitt mit den Berichtsoptionseinstellungen bietet dem Benutzer zahlreiche Möglichkeiten, den Bericht entsprechend seinen Anforderungen zu konfigurieren. Es stimmt fast vollständig mit den in Teil 1 besprochenen Standardberichtseinstellungen überein. Schauen wir uns alle Registerkarten des Abschnitts an und beachten Sie die Unterschiede.

Der Einstellungsbereich besteht aus den folgenden Registerkarten:

1. Parameter. Enthält ACS-Parameter, die dem Benutzer zur Verfügung stehen.

Der SKD-Parameter ist ein Wert, der zum Abrufen von Berichtsdaten verwendet wird. Dies kann ein Bedingungswert zur Auswahl oder Überprüfung von Daten sein, aber auch ein Hilfswert.


Die Parametertabelle wird im Format „Parameter“ – „Wert“ dargestellt. Bei Bedarf können Sie die Parameterwerte ändern. Durch Klicken auf die Schaltfläche „Elementeigenschaften für benutzerdefinierte Einstellungen“ werden die benutzerdefinierten Einstellungen des Elements geöffnet.


In diesem Fenster können Sie auswählen, ob das Element in die Benutzereinstellungen aufgenommen werden soll (d. h. für den Benutzer beim Einrichten eines Berichts sichtbar ist), den Präsentations- und Bearbeitungsmodus des Elements festlegen (Schnellzugriff im Berichtskopf, normal im). Berichtseinstellungen und nicht zugänglich).

Die Eigenschaften von benutzerdefinierten Einstellungselementen verfügen außerdem über gruppierbare Felder, Ränder, Auswahlmöglichkeiten und bedingte Darstellungselemente.

2. Benutzerdefinierte Felder. Enthält Felder, die vom Benutzer selbst basierend auf den vom Bericht ausgewählten Daten generiert werden.


Der Benutzer kann zwei Arten von Feldern hinzufügen:

  • Neues Auswahlfeld...
  • Neues Ausdrucksfeld...

Mit Auswahlfeldern können Sie einen Wert basierend auf einer bestimmten Bedingung berechnen. Das Auswahlfeld-Bearbeitungsfenster enthält einen Feldtitel und eine Tabelle, in der Auswahl, Wert und Darstellung des Feldes angegeben werden. Die Auswahl ist eine Bedingung, abhängig davon, welcher Wert durch den gewünschten Wert ersetzt wird.


Lassen Sie uns beispielsweise eine Schätzung der Anzahl der Verkäufe berechnen. Wir gehen davon aus, dass wir wenig verkauft haben, wenn weniger als 10 Einheiten eines Produkts verkauft wurden, und wenn mehr als 10 Einheiten verkauft wurden, haben wir viel verkauft. Dazu legen wir 2 Werte für das berechnete Feld fest: den ersten mit der Auswahl „Anzahl der Waren kleiner oder gleich „10““ und den zweiten mit der Auswahl „Anzahl der Waren größer als „10“. „“.

Mit Ausdrucksfeldern können Sie einen Wert mithilfe beliebiger Algorithmen berechnen. Sie können die Funktionen der Abfragesprache und der integrierten 1C-Programmiersprache nutzen. Das Bearbeitungsfenster für Ausdrucksfelder enthält zwei Felder für Ausdrücke von Detail- und Zusammenfassungsdatensätzen. Gesamtdatensätze sind im Bereich „Berichtsstruktur“ konfigurierte Gruppierungen, die Aggregatfunktionen („Summe“, „Minimum“, „Maximum“, „Menge“) verwenden müssen.

Berechnen wir zum Beispiel den durchschnittlichen Rabattprozentsatz. Der durchschnittliche Rabattprozentsatz wird anhand der Formel berechnet: [Verkaufsbetrag ohne Rabatt] – [Verkaufsbetrag mit Rabatt] / [Verkaufsbetrag ohne Rabatt]. Es ist wichtig zu bedenken, dass der Verkaufsbetrag ohne Rabatt Null sein kann, daher verwenden wir zur Überprüfung den SELECT-Operator. Wir erhalten die folgenden Ausdrücke:

· Für detaillierte Einträge:

Auswahl

Wenn [Verkaufsbetrag ohne Rabatt] = 0

Dann 0

Ansonsten [Umsatzbetrag ohne Rabatt] - [Umsatzbetrag mit Rabatt] / [Umsatzbetrag ohne Rabatt]

Ende

· Für zusammenfassende Aufzeichnungen:

Auswahl

Wenn Betrag([Verkaufsbetrag ohne Rabatt]) = 0

Dann 0

Ansonsten Summe([Verkaufsbetrag ohne Rabatt]) - Summe([Verkaufsbetrag mit Rabatt]) / Summe([Verkaufsbetrag ohne Rabatt])

Ende

Wie bereits erwähnt, verwenden wir im Ausdruck der Gesamtdatensätze die Aggregatfunktion „Summe“.

3. Gruppierbare Felder. Enthält Felder, nach denen die Ergebnisse der Berichtsvariante gruppiert werden. Gruppierte Felder werden für jede Gruppierung separat konfiguriert. Sie können jedoch allgemeine gruppierte Felder für eine Berichtsoption festlegen, wenn Sie im Strukturbaum den Stamm „Bericht“ auswählen. Sie können ein Feld aus dem Berichtsergebnis oder ein benutzerdefiniertes Feld hinzufügen oder ein automatisches Feld auswählen. Das System wählt die Felder dann automatisch aus. Auf dieser Registerkarte können Sie auch die Reihenfolge der gruppierten Felder ändern.


4. Felder. Enthält die Felder, die als Ergebnis der Reportvariante ausgegeben werden. Felder werden für jede Gruppierung separat konfiguriert. Sie können jedoch gemeinsame Felder für eine Berichtsoption festlegen, wenn Sie im Strukturbaum den Stamm „Bericht“ auswählen. Sie können ein Feld aus dem Berichtsergebnis oder ein benutzerdefiniertes Feld hinzufügen oder ein automatisches Feld auswählen. Das System wählt die Felder dann automatisch aus. Auf dieser Registerkarte können Sie auch die Reihenfolge der Felder ändern.

Felder können gruppiert werden, um jeden Teil des Berichts logisch hervorzuheben oder eine spezielle Spaltenanordnung festzulegen. Beim Hinzufügen einer Gruppe wird die Spalte „Standort“ aktiv und ermöglicht Ihnen die Auswahl einer der Standortoptionen:

  • Auto – das System platziert Felder automatisch;
  • Horizontal – Felder werden horizontal positioniert;
  • Vertikal – Felder sind vertikal angeordnet;
  • In einer separaten Spalte – Felder befinden sich in verschiedenen Spalten;
  • Zusammen – die Felder befinden sich in einer Spalte.


5. Auswahl. Enthält Auswahlen, die in der Berichtsvariante verwendet werden. Das Einrichten von Auswahlen wurde in Teil 1 dieses Artikels ausführlich besprochen. Filter werden für jede Gruppierung separat konfiguriert. Sie können jedoch allgemeine Filter für eine Berichtsoption festlegen, wenn Sie im Strukturbaum den Stamm „Bericht“ auswählen.


6. Sortieren. Enthält die in der Reportvariante verwendeten Sortierfelder. Das Einrichten von Sortierfeldern wurde in Teil 1 dieses Artikels ausführlich besprochen. Die Sortierung wird für jede Gruppierung separat konfiguriert. Sie können jedoch allgemeine Sortierfelder für eine Berichtsoption festlegen, wenn Sie im Strukturbaum die Wurzel „Bericht“ auswählen.


7. Bedingte Registrierung. Enthält bedingte Designelemente, die in der Berichtsvariante verwendet werden. Das Einrichten einer bedingten Darstellung wurde in Teil 1 dieses Artikels ausführlich besprochen. Das bedingte Erscheinungsbild wird für jede Gruppierung separat konfiguriert. Sie können jedoch allgemeine Elemente des bedingten Erscheinungsbilds für eine Berichtsoption festlegen, wenn Sie im Strukturbaum den Stamm „Bericht“ auswählen.


8. Zusätzliche Einstellungen. Enthält zusätzliche Einstellungen für das Berichtsdesign. Ermöglicht Ihnen, das allgemeine Erscheinungsbild des Berichts, die Position von Feldern, Gruppierungen, Details, Ressourcen und Summen auszuwählen, Diagrammeinstellungen festzulegen, die Anzeige von Titel, Parametern und Auswahl zu steuern, die Position von Ressourcen zu bestimmen und die Kopfzeile und Gruppierung festzulegen Spalten der Berichtsversion.


Abschließend möchte ich darauf hinweisen, dass Berichtseinstellungen nicht nur als Berichtsoption gespeichert, sondern auch in eine Datei hochgeladen werden können (Menü „Mehr“ – „Einstellungen speichern“). Zum Herunterladen müssen Sie „Einstellungen laden“ auswählen und die gespeicherte Datei auswählen. Somit können wir Berichtsvarianteneinstellungen zwischen verschiedenen Datenbanken übertragen, die die gleiche Konfiguration haben.


Auf dieser Grundlage können wir zusammenfassen, dass der Benutzer den Bericht nicht nur selbstständig an seine Bedürfnisse anpassen, sondern auch seine Einstellungen speichern und bei Bedarf in Zukunft verwenden kann.

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:

  • GeneralTotal – der Ausdruck wird für alle Gruppierungsdatensätze berechnet.
  • Hierarchie – Der Ausdruck wird für den übergeordneten hierarchischen Datensatz ausgewertet, falls einer vorhanden ist, und für die gesamte Gruppierung, wenn kein übergeordneter hierarchischer Datensatz vorhanden ist.
  • Gruppierung – der Ausdruck wird für den aktuellen Gruppierungsdatensatz ausgewertet.
  • Nicht-Ressourcen-Gruppierung – Bei der Berechnung einer Funktion für einen Gruppendatensatz nach Ressource wird der Ausdruck für den ersten Gruppendatensatz der ursprünglichen Gruppierung ausgewertet.

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:

  • 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 den letzten (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.

  • 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 Gruppierungsdatensatz 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 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.

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

Beim Abrufen einer Gruppierungssumme wird der erste Datensatz abgerufen.

  • Grenzwert. Die Notwendigkeit, einen Datensatz mit dem angegebenen Wert zu erhalten. Nach dem Wort LimitingValues ​​​​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.

<Сортировка>

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:

  • Separat bedeutet, dass eine Folge geordneter Datensätze verwendet wird, um die vorherigen und nächsten Datensätze zu bestimmen. Standardwert.
  • Zusammen bedeutet, 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

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<Пустое значение>.

Melden Sie sich als Student auf der Website an

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

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

Der Zweck dieser Lektion wird sein:

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

Erstellen Sie einen neuen Bericht

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

Art des Dokuments - Externer Bericht:

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

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

Hinzufügen einer Anfrage über den Konstruktor

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

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

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

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

Es stellte sich so heraus:

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

Erstellen von Einstellungen für die Berichtspräsentation

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

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

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

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

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

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

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

Ändern der Spaltenreihenfolge

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

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

Großartig, das ist viel besser.

Fassen wir den Kaloriengehalt zusammen

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

Zu diesem Zweck gibt es einen Mechanismus zur Ressourcenberechnung.

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

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

Wir speichern und erstellen einen Bericht:

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

Fassen wir es (durchschnittlich) in Kalorien zusammen

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

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

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

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

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

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

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

Es stellte sich so heraus:

Wir speichern und erstellen einen Bericht:

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

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

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

Wir speichern und erstellen einen Bericht:

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

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

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

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

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

Element " Auto" erweitert in die folgenden Felder:

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

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

Erstellen eines Berichts in 1C über SKD

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

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

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

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


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

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

ACS-Funktionen

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


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


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


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


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

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


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

Ausdruck berechnen ist eine ziemlich schwer zu verstehende ACS-Funktion und Anwendungsbeispiele in den Referenzinformationen sind recht rar. In diesem Artikel werden Beispiele besprochen, die sicherlich für jeden Entwickler nützlich sein werden:

  1. kumulierte Summe in der Gruppierung;
  2. Kumulierte Summe in einer Kreuztabelle;
  3. Abrufen des vorherigen Werts;
  4. PM-Ausgabe in einer Zeile.

1. Erhalten eines Indikators auf periodengerechter Basis

Lassen Sie uns die Warenmenge als kumulierte Summe auf Gruppierungsebene ermitteln. Erstellen Sie dazu ein berechnetes Feld (siehe Abbildung 1).
Stellen Sie auf der Registerkarte „Ressourcen“ die Funktion für das berechnete Feld ein:
CalculateExpression("Sum(QuantityTurnover)", "First", "Current")
Dadurch wird die Anzahl der Produkte vom ersten bis zum aktuellen Datensatz summiert (siehe Abbildung 2).

Wenn die kumulierte Gesamtmenge eines Artikels auf der Ebene detaillierter Datensätze ermittelt werden muss, legen wir die Funktion CalculateExpression für das berechnete Feld auf der Registerkarte „Berechnete Felder“ fest (siehe Abbildung 3).
Abhängig von der Ebene der Erlangung der kumulierten Gesamtsumme erstellen wir eine Gruppierung (siehe Abbildung 4): auf Ressourcenebene – Gruppierung nach Waren, auf der Fernbedienungsebene – Gruppierung detaillierter Datensätze.
Abbildung 4. Berichtsgruppierungen mit kumulierten Summen

2. Abrufen des Indikatorwerts aus der vorherigen Zeile

Lassen Sie uns den Wechselkurs für das Datum und das vorherige Datum ermitteln. Erstellen Sie dazu ein berechnetes Feld und schreiben Sie den folgenden Ausdruck in das Ausdrucksfeld (siehe Abbildung 5):
CalculateExpression("Rate", "Previous", "Previous")
der den vorherigen Wert des Wechselkurses für die aktuelle Zeile annimmt, begrenzt der letzte Parameter der Funktion den Datenempfang.
Da wir auf der Ebene der Detaildatensätze arbeiten, gehen wir sofort zur Registerkarte „Einstellungen“ und erstellen eine Gruppierung – Detaildatensätze.

3. Erhalten eines Indikators als kumulative Summe in einer Kreuztabelle

Lassen Sie uns die Warenmenge periodengerecht nach Zeitraum ermitteln. Erstellen Sie dazu ein berechnetes Feld (siehe Abbildung 1). Auf der Registerkarte „Ressourcen“ geben wir den folgenden Ausdruck für das berechnete Feld an (siehe Abbildung 6):
CalculateExpression("Sum(QuantityTurnover)", "Period", "First", "Current")
die auf der Gruppierungsebene die Warenmenge im Intervall von der ersten bis zur aktuellen Zeile im Kontext der Periode für jeden Artikel berechnet.
Erstellen Sie auf der Registerkarte „Einstellungen“ eine Tabelle mit Gruppierung nach Element in einer Zeile und Gruppierung nach Zeitraum in einer Spalte (siehe Abbildung 7).

4. Tabellendaten in einer Zeile ausgeben

Methoden zum Anzeigen tabellarischer Daten in einer Zeile, einschließlich der Methode mit der Funktion CalculateExpression, werden im Artikel erläutert
gastroguru 2017