Das Verfahren zum Arbeiten mit dem integrierten Sprachanforderungsobjekt. Wozu dient das Konfigurationsobjekt „Sprache“?

Die Entwicklung einer Anwendungslösung im 1C: Enterprise-System besteht aus zwei Hauptaktionen: visuelle Gestaltung von Konfigurationsobjekten und Beschreibung des spezifischen Verhaltens des Systems mithilfe der integrierten Sprache und Abfragesprache.

Die integrierte Sprache des 1C: Enterprise-Systems weist viele Ähnlichkeiten mit anderen Programmiersprachen auf, ist jedoch kein direktes Analogon zu einer dieser Sprachen. Seine wichtigsten Merkmale:

· Soft Typing (der Typ einer Variablen wird durch den Typ des darin enthaltenen Werts bestimmt und kann sich während des Betriebs ändern);

· Fehlen einer Softwarebeschreibung der Anwendungstypen (sie werden beim Hinzufügen von Konfigurationsobjekten erstellt);

· ereignisorientierte integrierte Sprache;

· Alle Operatoren haben sowohl russische als auch englische Schreibweisen, die gleichzeitig verwendet werden können.

Konfigurationsmodule

Module der Anwendungslösung dienen dazu, den Programmtext in der integrierten Sprache zu platzieren. Diese Module befinden sich an verschiedenen Stellen in der Konfiguration und haben unterschiedliche Zwecke. Die meisten Module sind an bestimmte Konfigurationsobjekte oder an die Anwendungslösung selbst „gebunden“.

Folgende Arten von Softwaremodulen werden unterschieden:

· Gemeinsame Module. Die Konfiguration kann eine beliebige Anzahl von Modulen umfassen, auch keine. Gemeinsame Module selbst werden während des Konfigurationsprozesses nicht aufgerufen. Sie dienen lediglich dazu, die Texte von Prozeduren und Funktionen zu enthalten, die aus anderen Modulen der Anwendungslösung aufgerufen werden können. Daher fehlen ihnen ein Variablenbeschreibungsabschnitt und ein Hauptprogrammabschnitt. Das. Gemeinsame Module enthalten nur Prozeduren und Funktionen.

· Anwendungsmodul. In der Konfiguration gibt es immer ein einzelnes Anwendungsmodul. Es wird beim Systemstart im 1C: Enterprise-Modus ausgeführt und soll Aktionen im Zusammenhang mit der Arbeitssitzung des Endbenutzers ausarbeiten. Die wichtigsten Ereignisse, die in einem Anwendungsmodul verarbeitet werden können, sind die Start- und Endereignisse der Anwendung. Die Reihenfolge des Anrufs ist in dargestellt Reis. 1. Ereignis Vor dem Starten des Systems Tritt auf, wenn das System startet, bevor das Hauptfenster geöffnet wird. Durch die Behandlung dieses Ereignisses hat der Entwickler beispielsweise die Möglichkeit, die Ausführung zu verweigern, wenn Bedingungen nicht erfüllt sind. Ereignis Beim Starten des Systems tritt nach dem Öffnen des Hauptfensters auf. Im Handler dieses Ereignisses können Sie beispielsweise Informationen zu Geburtstagspersonen usw. anzeigen.

· Externes Verbindungsmodul. In der Konfiguration gibt es immer ein einzelnes externes Anschlussmodul. Es wird ausgeführt, wenn auf die Anwendung als COM-Server zugegriffen wird (im externen Verbindungsmodus). Im externen Verbindungsmodus wird nicht die vollwertige 1C: Enterprise-Anwendung gestartet, sondern eine „Light-Version“, bei der nicht alle Funktionen verfügbar sind, die in irgendeiner Weise mit der Gestaltung der Benutzeroberfläche zusammenhängen.

· Anwendungsobjektmodule. Jedes Anwendungskonfigurationsobjekt (z. B. ein Softwaredokument oder ein Verzeichnis), dessen Daten im 1C: Enterprise-Modus geändert werden können, verfügt über ein eigenes Modul. Zusätzlich zur Beschreibung von Variablen und des Hauptprogramms kann ein Objektmodul eine Beschreibung von Prozeduren enthalten – Ereignishandlern, die einem bestimmten Konfigurationsobjekt zugeordnet sind. Es gibt zwei Ereignisse, die für alle Objekte ausgelöst werden: Vor der Aufnahme Und Bei der Aufnahme.

· Formularmodule. Jedes Formular verfügt über ein eigenes Modul, das das Verhalten des Formulars und die von ihm ausgeführten Aktionen definiert, beispielsweise das Öffnen anderer Formulare. Ereignisse werden für alle Formulare ausgelöst Vor dem Öffnen, während des Öffnens, vor dem Schließen Und Beim Abschluss.

Kontext

Im 1C: Enterprise-System bezeichnet der Kontext die Umgebung des Moduls, d. h. Variablen, Objekte, Eigenschaften, Methoden und Ereignisse, die ihm zur Verfügung stehen. Wir können folgende Arten von Kontexten und dementsprechend Regeln für die Sichtbarkeit exportierter Variablen, Prozeduren und Funktionen unterscheiden:

· Globaler Kontext, verfügbar in allen anderen Kontexten, besteht aus folgenden Teilen:

§ Eigenschaften, Methoden und Ereignisse des globalen Kontexts (z. B. die Eigenschaft Arbeitsdatum);

§ Systemaufzählungen und Systemwertsätze (z. B. Gibt CodeDialog zurück Und Symbole).

· Gemeinsamer Modulkontext gebildet durch den globalen Kontext und den lokalen Kontext des allgemeinen Moduls selbst (d. h. die im allgemeinen Modul definierten Prozeduren und Funktionen). Im Kontext eines gemeinsamen Moduls stehen exportierte Prozeduren und Funktionen anderer gemeinsamer Module zur Verfügung. Exportierte Variablen, Prozeduren und Funktionen des Anwendungsmoduls sind nicht verfügbar.

· Im Rahmen eines Anwendungsmoduls oder externen Verbindungsmoduls Exportierte Prozeduren und Funktionen gängiger Module sind verfügbar.

· Im Kontext eines Anwendungsobjektmoduls Es besteht Zugriff auf die Details und tabellarischen Teile des Objekts sowie auf seine Methoden und Ereignisse. Hier stehen exportierte Variablen, Prozeduren und Funktionen des Anwendungsmoduls (externes Verbindungsmodul) und allgemeiner Module zur Verfügung.

· Im Kontext eines Formularmoduls Es stehen Formulardetails sowie Formulareigenschaften, Methoden und Ereignisse zur Verfügung. Wenn einem Formular ein Hauptattribut zugewiesen ist, werden die Eigenschaften und Methoden des als Hauptattribut verwendeten Anwendungsobjekts im Formularmodul verfügbar.

Die Beziehung zwischen Kontexten ist in schematisch dargestellt Reis. 2. An Reis. 3 stellt das mögliche Zusammenspiel des Journalformularmoduls und des Dokumentmoduls dar.


Verfahren und Funktionen

Prozeduren und Funktionen sind Programmblöcke, die von einer anderen Stelle, beispielsweise einer anderen Prozedur, namentlich aufgerufen werden können. Funktionen unterscheiden sich von Prozeduren nur dadurch, dass sie einen Rückgabewert haben. In Version 8 ist die Reihenfolge der Prozeduren und Funktionen nicht wichtig. Dies bedeutet, dass die Prozedur unterhalb des Aufruforts platziert werden kann.

Prozeduren und Funktionen können Parameter haben, die definieren, welche Aktionen mit welchen Objekten ausgeführt werden sollen. Parameter einer Prozedur oder Funktion werden standardmäßig per Referenz übergeben. Dies bedeutet, dass die Änderung eines formalen Parameters innerhalb einer Prozedur oder Funktion den tatsächlichen Parameter an der Stelle ändert, an der er aufgerufen wird. Um sicherzustellen, dass ein Parameter als Wert übergeben wird, müssen Sie vor dem Parameternamen ein Schlüsselwort einfügen Bedeutung.

Beispiel 1:

Prozedur Calculate()

Betrag=Preis*Menge;

Ende des Verfahrens

Berechnung(); // Rufen Sie die Prozedur auf

Beispiel 2:

Perem-Glob;

// Beschreibung des Verfahrens

Verfahrensberechnung (Par1, Par2, ParZ) Export

Glob = Glob + Par1 + Par2 + ParZ;

Ende des Verfahrens

Berechnung(5, 6, 7); // Rufen Sie die Prozedur auf

Beispiel 3:

Perem-Glob;

// Beschreibung der Funktion

Funktionsberechnung (Par1, Par2, ParZ) Export

Lok = Glob + Par1 + Par2 + ParZ;

Rückgabesperre;

EndFunction

Res = Calc(5, 6, 7); // Funktionsaufruf

Datentypen

Zahl, Zeichenfolge, Datum, Boolescher Wert, Undefiniert, Null (für nicht spezifizierte Werte in Datenbanktabellen)

Typ. Zur Darstellung und zum Vergleich von Datentypen werden Werte des speziellen Typs „Type“ benötigt, zum Beispiel:

Variablen deklarieren

Variablen erscheinen im Programm in folgenden Fällen:

· nachdem sie mit dem Variablenoperator deklariert wurden.

Perem<Имя_переменной>[Export];

Variable A, B;

· nach der ersten Platzierung des Variablennamens auf der linken Seite des Zuweisungsoperators.

Beispiel:

· bei der Ermittlung der Namen von Bezeichnern bearbeiteter Dialogelemente;

· beim Festlegen formaler Parameter von Prozeduren.

Gießen

Die Typumwandlung kann explizit oder implizit erfolgen.

Für die explizite Umwandlung stehen folgende Funktionen zur Verfügung: Zahl, Zeichenfolge, Datum, Boolean. Die implizite Typumwandlung wird vom System bei der Auswertung von Ausdrücken automatisch durchgeführt.

Beispiel: Der Wert der numerischen Variablen MonthNumber wird implizit in einen String umgewandelt und an einen anderen String angehängt:

A = „Monat“ + Monatsnummer;

Verzeichnisse

Die Arbeit mit Verzeichnissen erfolgt mit folgenden Objekten:

· VerzeichnisseManager. Bietet Zugriff auf alle Konfigurationsreferenzbücher. Die Eigenschaften dieses Objekts stimmen mit den Namen von Verzeichnissen überein und enthalten Objekte vom Typ DirectoryManager.

· DirectoryManager. Bietet Zugriff auf Vorgänge in einem Verzeichnis als Satz von Elementen. Mit den Methoden dieses Objekts können Sie suchen, eine Auswahl treffen, neue Elemente erstellen und auf Verzeichnisformulare und -layouts zugreifen.

· DirectoryLink. Identifiziert ein Element (eine Gruppe) des Verzeichnisses eindeutig und ermöglicht den Zugriff darauf im schreibgeschützten Modus. Über die Eigenschaften und Methoden dieses Objekts können Sie die Details eines Elements (einer Gruppe) lesen und auf seine tabellarischen Teile zugreifen. Der Wert dieses Typs wird in Attributen gespeichert, die auf Elemente dieses Verzeichnisses verweisen, beispielsweise im Attribut Mitarbeiter dokumentieren Rekrutierung Es wird ein Link zu einem bestimmten Verzeichniselement gespeichert Mitarbeiter.

· DirectoryObject. Bietet Schreibzugriff auf ein Element. Dieses Objekt enthält Methoden, die sich auf ein Element in der Datenbank auswirken, beispielsweise Methoden Aufschreiben Und Löschen.

· Verzeichnisauswahl. Bietet die Möglichkeit, Verzeichniselemente zu durchlaufen. Die Stichprobenziehung kann direkt oder hierarchisch erfolgen.

· Verzeichnisliste. Ein Objekt zum Verwalten der Liste der Elemente in einem Tabellenfeld. Ermöglicht die Verwaltung von Spalten, Auswahl und Sortierung in der Liste.

Im 1C:Enterprise-System?

1. Konfigurations- und Datenbanktexte werden im Format gespeichertUNICODE

3. Es gibt keine richtige Antwort

6.75 Zu welchem ​​Zweck werden Konfigurations- und Datenbanktexte im Format gespeichertUNICODE?

1. Das UNICODE-Format gewährleistet die Unveränderlichkeit (Unabhängigkeit der Betriebssystem-Softwareplattform) der Informationsdarstellung

2. FormatUNICODE ermöglicht Ihnen die Unterstützung verschiedener Sprachen im 1C:Enterprise-System

3. Es gibt keine richtige Antwort

6.76 Ifestgelegt. ..

1. Technologieplattform 1C:Enterprise

2. Angewandte Lösungen

3. Die Antworten 1 und 2 sind richtig

4. Es gibt keine richtige Antwort

6.77 Was ist ein Lokalisierungscode?

1. Eine Zeichenfolge bestehend aus einem Sprachcode und einem Ländercode, der eine Region der Welt identifiziert

2. Software-Produktcode (auf dem Registrierungsformular angegeben, Dokumentation im Lieferumfang enthalten)

3. Formatierungs-String-Option für die Konvertierung

4. Ihre Antwort ist richtig

6.78 Stimmt es, dass in 1C:Enterprise 8 beliebige Textinformationen gleichzeitig Zeichen aus verschiedenen Sprachen enthalten können?

1. Ja, da alle Konfigurations- und Datenbanktexte im Format gespeichert sindUNICODE

2. Abhängig von den beim Erstellen der Infobase angegebenen Einstellungen

3. Nur wenn dies in der Konfiguration vorgesehen ist

6.79 Wozu dient das Konfigurationsobjekt „Sprache“?

1. So erstellen Sie eine Programmoberfläche in verschiedenen Sprachen

2. Um Textdokumente in verschiedenen Sprachen zu erstellen

3. Ein solches Objekt existiert in 1C: Enterprise 8 nicht

6.80 Wie kann ich die Sprache zum Anzeigen (Bearbeiten) der Konfiguration ändern?

1. Verwenden Sie die Schaltfläche zur Sprachauswahl in der Statusleiste rechts neben der Schaltfläche „NUM“.

2. Über den Menüpunkt „Konfiguration – Konfigurationsbearbeitungssprache“

3. In 1 C: Enterprise besteht diese Möglichkeit nicht

4. Verpa antwortet 1 und 2

6.81 Wie lauten die eingebauten Sprachoperatoren?

1. Nur russische Schrift

3.

6.82 Ist es möglich, integrierte Sprachoperatoren in der russischen und englischen Schrift in einem Quelltext zu verwenden?

1. Nur mit speziellen Konfiguratoreinstellungen

2. Ja, hierfür müssen keine Konfiguratoreinstellungen geändert werden

3. Nein, da die integrierte Sprachoption in den Konfigurationseigenschaften festgelegt ist

6.83 Was ist der Zweck der integrierten Sprache?

1. Um die Standardprogrammschnittstelle zu bestimmen

2. Beschreiben (in der Konfigurationsentwicklungsphase) Algorithmen für die Funktionsweise einer angewandten Aufgabe

3. Es gibt keine richtige Antwort

6.84 Wie lauten die Schreibweisen der eingebauten Sprachfunktionen?

1. Nur russische Schrift

2. Nur englische Rechtschreibung

3. Russisches und englisches Schreiben

4. Abhängig von den Konfiguratoreinstellungen

6.85 Was bedeutet Parameter L?(L) in der Formatzeichenfolge der Formatierungsfunktion NumberInWriting()?

1. Unterschreiben Sie „Den Bruchteil in Zahlen/Wörtern ausgeben“

2. Anzahl der Dezimalstellen

3. Lokalisierungscode

7. Tabellarisches Modell der Anwendungslösung

7.1 Beim Einrichten von Datenzugriffsbeschränkungen können Sie mehrere (auf der Anzahl der Felder basierende) Einschränkungen festlegen:

1. Für das Recht „Lesen“.

2. Für den richtigen „Change“

3. Für das Recht „Hinzufügen“.

4. Für das Recht „Löschen“.

5. Für alle oben genannten Rechte

6. Für alle möglichen Rechte

7.2 Beim Einrichten von Datenzugriffsbeschränkungen können die folgenden Werte verwendet werden, anhand derer Datenzugriffsbeschränkungen vorgenommen werden:

1. Nur Sitzungsparameterwerte

2. Nur Daten aus Tabellen (Abfragen)

3. Sitzungsparameterwerte und Daten aus Tabellen (Abfragen)

4. Nur Werte mit den Typen: Number, String, Boolean, Date

7.3 Welche der oben genannten Methoden kann verwendet werden, damit der Code und der Name des Verzeichnisses im Abschnitt „Felder“ des Abfragedesigners angezeigt werden?

1. Füllen Sie zunächst den Abschnitt „Tabellen“ aus, wählen Sie dann die gewünschten Objekte aus diesem Abschnitt aus und verschieben Sie diese per Doppelklick mit der linken Maustaste in den Abschnitt „Felder“.

2. Ohne den Abschnitt „Tabellen“ auszufüllen, wählen Sie sofort die erforderlichen Objekte aus den Tabellen aus – Datenquellen des Abschnitts „Datenbank“ und übertragen Sie sie per Drag & Drop-Technologie in den Abschnitt „Felder“. Der Abschnitt „Tabellen“ wird automatisch ausgefüllt

3. Füllen Sie zunächst den Abschnitt „Tabellen“ aus und übertragen Sie sie dann, indem Sie die erforderlichen Objekte aus diesem Abschnitt auswählen, über die Schaltflächen im Formular „>“ „“ in den Abschnitt „Felder“.

4. Die Antworten I und 3 sind richtig

5. Die Antworten I, 2 und 3 sind richtig

7.4 Um die Geschwindigkeit der Anforderungsausführung zu erhöhen, müssen Sie:

1. Legen Sie Parameter für die meisten realen Tabellen fest

2. Legen Sie Parameter für die meisten virtuellen Tabellen fest

3. Anstatt Parameter für eine reale oder virtuelle Tabelle anzugeben, verwenden Sie die Auswahl, die durch das Abfragesprachenkonstrukt „WHERE“ angegeben wird

4. Die Antworten I und 2 sind richtig

7.5 Ist es möglich, bei der Auswahl einer Quelltabelle im Abschnitt „Tabellen“ des Abfragedesigners einen neuen Namen (Alias) dafür zu vergeben?

1. Ja, du kannst

2. Ja, das ist möglich, aber nur, wenn die Datenquelle eine verschachtelte Abfrage ist

3. Ja, das ist möglich, aber nur, wenn die Datenquelle eine virtuelle Tabelle ist

4. Die Antworten 1 und 2 sind richtig

5. Die Antworten 1 und 3 sind richtig

7.6 Eine verschachtelte Abfrage kann verwendet werden:

1. Als Datenquellentabelle

2. Als Operand der Vergleichsoperationen „B“ oder „NOT B“ beim Setzen virtueller Tabellenparameter

3. Als Operand der Vergleichsoperationen „B“ oder „NOT B“ bei Angabe des Abfragesprachenkonstrukts „WHERE“

4. Verpa antwortet mit 1, 2 und 3

7.7 Ist es mit dem Abfrage-Designer möglich, Summen nach Hierarchie zu erhalten?

1. Dies ist möglich, wenn Sie für das Gruppierungsfeld den Gesamttyp „Elemente und Hierarchie“ angeben

2. Dies ist möglich, wenn Sie für das Gruppierungsfeld den Gesamttyp „Nur Hierarchie“ angeben

3. Verpa antwortet 1 und 2

7.8 Auf der Registerkarte „Bedingungen“ des Abfragedesigners kann eine separate Zeile der Liste der Bedingungen generiert werden:

1. Doppelklicken Sie mit der linken Maustaste auf das gewünschte Feld in der Liste der verfügbaren Felder

2. Indem Sie das gewünschte Feld per Drag & Drop-Technologie in die Liste verschieben

3. Klicken Sie auf die Schaltfläche „Hinzufügen“. Wenn die Bedingung beliebig ist, kann der Bedingungstext „manuell“ eingegeben werden.

4. Rufen Sie das Kontextmenü auf und wählen Sie dort „Hinzufügen“. Es ist möglich, einen beliebigen Ausdruck zu verwenden

5. Alle oben genannten Antworten sind richtig

7.9 Auf der Registerkarte „Links“ des Abfragedesigners können Sie Folgendes definieren:

1. Verbinden von Datenquellentabellen und Beziehungen zwischen ihnen

2. Kombinieren von Datenquellentabellen und Verbindungen zwischen ihnen

3. Beziehungen zwischen den Feldern der Tabelle, die als Ergebnis der Abfrage erhalten wurden

4. Beziehungen zwischen den Feldern der Datenquellentabelle und der als Ergebnis der Abfrage erhaltenen Tabelle

7.10 Beim Zusammenführen von Datenquellentabellen im Abfrage-Designer können Sie:

1. Weisen Sie eine Verbindung zu, ohne die Verbindungsbedingung anzugeben

2. Weisen Sie eine Verbindung zu, die die Verbindungsbedingung angibt. Diese Bedingung kann nur eine sein

3. Weisen Sie eine Verbindung zu, die die Verbindungsbedingung angibt. Diese Bedingung kann nur einfach sein

4. Weisen Sie die erforderliche Anzahl von Verbindungen zu und geben Sie dabei die erforderliche Anzahl von Kommunikationsbedingungen an. Diese Bedingungen können entweder einfach oder willkürlich sein

7.11 Das Erstellen einer Verbindung zwischen Datenquellentabellen im Abfrage-Designer ermöglicht Folgendes:

1. Verknüpfen von nur zwei Datenquellentabellen

2. Verbinden der erforderlichen Anzahl von Datenquellentabellen

3. Es werden nur zwei Datenquellentabellen verbunden und das Kontrollkästchen „Alle“ muss für mindestens eine der Tabellen aktiviert sein

Basic, was das Erlernen für unerfahrene Entwickler erleichtert. Es ist jedoch kein direktes Analogon zu einer der aufgeführten Sprachen.

Hier sind nur einige der wichtigsten Funktionen der integrierten Sprache:

  • Vorkompilierung; Vor der Ausführung werden Module, die Text in der integrierten Sprache enthalten, in internen Code konvertiert.
  • Zwischenspeichern kompilierter Module im Speicher;
  • Soft Typing – der Typ einer Variablen wird durch den Typ des darin enthaltenen Werts bestimmt und kann sich während des Betriebs ändern;
  • Mangel an Softwarebeschreibung von Konfigurationsobjekten; Der Entwickler kann entweder in die Plattform integrierte Objekte oder vom System als Ergebnis der visuellen Gestaltung der Anwendungslösung erstellte Objekte verwenden.

Ereignisorientierte integrierte Sprache. Der Zweck der integrierten Sprache im 1C:Enterprise-System wird durch die Ideologie der Erstellung von Anwendungslösungen bestimmt. Anwendungslösungen in 1C:Enterprise 8.0 sind nicht vollständig codiert. Der größte Teil der Anwendungslösung wird vom Entwickler durch visuelles Design erstellt – Erstellen neuer Konfigurationsobjekte, Festlegen ihrer Eigenschaften, Darstellungsformen, Beziehungen usw. Die integrierte Sprache wird nur verwendet, um das Verhalten von Anwendungslösungsobjekten zu bestimmen, die sich von denen unterscheiden Standard ein, und ihre eigenen Datenverarbeitungsalgorithmen zu erstellen.

Aus diesem Grund werden Module, die Texte in der integrierten Sprache enthalten, vom System in bestimmten, bereits bekannten Situationen verwendet, die während des Betriebs der Anwendungslösung auftreten können. Solche Situationen werden Ereignisse genannt. Ereignisse können mit der Funktionsweise von Anwendungslösungsobjekten oder mit der Anwendungslösung selbst als solche verknüpft sein.

Beispielsweise sind eine Reihe von Ereignissen mit der Funktionsweise des Verzeichnisanwendungslösungsobjekts verbunden, darunter das Ereignis „BeforeWrite“. Dieses Ereignis tritt ein, kurz bevor die Verzeichniselementdaten in die Datenbank geschrieben werden sollen. Ein Entwickler kann mithilfe einer integrierten Sprache einen Algorithmus beschreiben, der beispielsweise die Richtigkeit der vom Benutzer eingegebenen Daten überprüft. Durch die Platzierung dieses Algorithmus im entsprechenden Modul stellt der Entwickler sicher, dass das System jedes Mal, wenn der Benutzer ein Verzeichniselement aufzeichnet, den vom Entwickler erstellten Algorithmus ausführt und prüft, ob der Benutzer vergessen hat, die erforderlichen Verzeichnisdetails einzugeben.

Somit können wir sagen, dass die integrierte Sprache eine Skriptsprache zur Programmierung von Geschäftslogik ist und die Verwendung von Modulen in der integrierten Sprache ereignisabhängig ist, d. h. Module werden ausgeführt, wenn während des Betriebs der Anwendungslösung bestimmte Ereignisse auftreten.

Vordefinierte Datentypen

Die 1C:Enterprise 8.0-Plattform ermöglicht dem Entwickler die Nutzung verschiedener Datentypen.

Es gibt eine große Anzahl von Datentypen, die auf der Ebene der Plattform selbst definiert werden. Zum Beispiel dies primitive Datentypen, wie Zeichenfolge, Zahl, Datum usw.


Beschreibung primitive Datentypen:

  • NULL- fehlender Wert. Wird beispielsweise in Abfragen verwendet.
  • Nicht definiert- leerer, undefinierter Wert. Es wird beispielsweise bei der Auswertung der Parameterübergabe verwendet, wenn dieser Parameter beim Aufruf einer Prozedur oder Funktion weggelassen wird. Details, die einen zusammengesetzten Datentyp haben, sind standardmäßig vom Typ „Undefiniert“.
  • Boolescher Wert- enthält zwei Werte: True oder False. Wird beispielsweise in logischen Ausdrücken verwendet – ein logischer Ausdruck ist vom Typ „Boolean“.
  • Datum- enthält Datum und Uhrzeit. Der Standardwert ist 01.01.01 00:00:00 Startdatum unserer Ära. Die Zeit wird vom Beginn des Tages an gemessen. Ein Ausdruck mit dem Literaltyp „Datum“ wird wie folgt geschrieben: „00010101000000“. Zuerst wird das Jahr notiert, dann der Monat, dann das Datum und dann die Uhrzeit. Folgende Eingabe ist möglich: „20041031“. Die Standardzeit ist der Beginn des Tages.
  • Linie- kann variabel, fest oder unbegrenzt lang sein. Im Allgemeinen wird empfohlen, Zeichenfolgen variabler Länge zu verwenden.
  • Nummer- Die Zahlenbittiefe wurde auf 38 Bit erhöht.
  • Typ- dient der Bestimmung der Wertetypen. Wird beispielsweise zum Vergleich von Datentypen verwendet. Es hat keine Literale und wird von den Funktionen Type( zurückgegeben<Имя типа>) oder TypeValue(<Значение>).

Außerdem gibt es noch mehr komplexe Datentypen. Beispielsweise unterstützt die Plattform eine Reihe von Typen, die universelle Wertesammlungen sind: Array, Struktur, Werteliste, Wertebaum usw.


Datentypen „Universelle Sammlungen“ – eine Liste (Satz) von Datenobjekten beliebiger Art, auf deren Werte per Brute-Force oder über einen angegebenen Index (Schlüssel) zugegriffen werden kann. Die Nummerierung der Sammlungselemente beginnt bei 0. Alle angegebenen Datentypen werden nur programmgesteuert erstellt.

Array. Stellt eine nummerierte Sammlung von Werten eines beliebigen Typs dar. Auf ein Array-Element kann über seinen Index zugegriffen werden. Die Elemente eines Arrays können insbesondere auch andere Arrays sein. Dadurch können Sie mehrdimensionale Arrays erstellen.

Struktur. Stellt eine benannte Sammlung dar, die aus Schlüssel-Wert-Paaren besteht. Der Schlüssel kann nur eine Zeichenfolge sein, der Wert kann einen beliebigen Typ haben. Auf ein Strukturelement kann über den Wert seines Schlüssels zugegriffen werden, d. h. namentlich. Wird normalerweise zum Speichern einer kleinen Anzahl von Werten mit jeweils einem eindeutigen Namen verwendet.

Korrespondenz. Genau wie Structure handelt es sich um eine Sammlung von Schlüssel-Wert-Paaren. Im Gegensatz zu einer Struktur kann ein Schlüssel jedoch fast jeden Typ haben.

Liste von Werten. Wird normalerweise zur Lösung von Schnittstellenproblemen verwendet. Ermöglicht Ihnen, dynamische Wertesätze zu erstellen und diese zu manipulieren (Elemente hinzufügen, bearbeiten, löschen, sortieren). Es kann Werte jeglicher Art enthalten; außerdem können die Arten der gespeicherten Werte in einer Liste unterschiedlich sein.

Wertetabelle. Mit einer Wertetabelle können Sie dynamische Wertesätze erstellen und bearbeiten. Es kann mit Werten beliebiger Art gefüllt werden, und in einer Tabelle können die Arten der gespeicherten Werte unterschiedlich sein.

Baum der Werte. Ein Wertebaum ist eine dynamisch generierte Menge von Werten beliebiger Art, ähnlich einer Wertetabelle. Im Gegensatz zu einer Wertetabelle können die Zeilen eines Wertebaums hierarchische Strukturen bilden: Jede Zeile im Baum kann eine Reihe untergeordneter Zeilen haben, jede der untergeordneten Zeilen kann wiederum eine Reihe untergeordneter Zeilen haben und so weiter. In diesem Fall kann die Suche nach Werten, die Sortierung und die Ergebnisbeschaffung entweder nach der aktuellen Hierarchieebene oder unter Einbeziehung aller untergeordneten Ebenen erfolgen.

COMSafeArray. Stellt einen Objekt-Wrapper über ein mehrdimensionales SAFEARRAY-Array dar

Prozedur SelectFromFileClick(Element) // Auswählen einer Datei mit viewFileSelectionDialog = NewFileSelectionDialog(FileSelectionDialogMode.Open); FileSelectionDialog.Directory = ""; FileSelectDialog.Preview = True; FileSelectionDialog.FilterIndex = 0; If FileSelectDialog.Select() Then File = New File(FileSelectDialog.FullFileName); Image = NewValueStorage(NewImage(FileSelectionDialog.FullFileName)); Bild anzeigen(); endIf; Ende des Verfahrens

THIS_KEYWORD
<Это конструкция языка>,
<Это конструкция языка>
THIS_FUNCTION(<Это конструкция языка>)

In Regeln, die eine Abfragesprache beschreiben, werden Sprachkonstrukte in spitzen Klammern angegeben. Schlüsselwörter und Funktionsnamen werden in Großbuchstaben beschrieben.

Sprachkonstrukte können optionale Elemente enthalten – Schlüsselwörter usw. In den Regeln, die die Abfragesprache beschreiben, werden optionale Elemente in eckige Klammern „[“ und „]“ eingeschlossen:

[Dies ist ein optionales Wort] [<Это необязательная конструкция>]

In einigen Fällen kann das Sprachdesign eines von mehreren alternativen Elementen verwenden. Solche Elemente in den Regeln werden durch einen vertikalen Balken „|“ aufgelistet:

EITHER_THIS_WORD | ODER DIESES_WORD
<Либо эта конструкция> | <Либо эта конструкция>

Beschreibungen aller Konstrukte werden von Beispielen begleitet, die erklären, wie sie in der Abfragesprache verwendet werden.

Kommentare in der Abfragesprache

Der Anfragetext kann Kommentare enthalten. Als Kommentar gilt ein Teil einer Zeile, der mit der Zeichenfolge // beginnt und bis zum Ende der Zeile andauert:

// Dies ist ein Kommentar.

Kommentare werden bei der Ausführung der Anfrage ignoriert.

Zweisprachige Darstellung von Schlüsselwörtern

Eines der wesentlichen Merkmale der Abfragesprache 1C: Enterprise besteht darin, dass alle Schlüsselwörter wie in der integrierten Sprache zwei Schreibweisen haben: in Russisch und Englisch. Später in diesem Kapitel wird auf die russische Schreibweise von Schlüsselwörtern hingewiesen. Unten finden Sie eine Tabelle mit der Entsprechung zwischen Russisch und Englisch sowie den Rechtschreiboptionen für Schlüsselwörter in der Abfragesprache … (weggelassen)

Hauptabschnitte des Anfragetextes

Der Anfragetext kann durch die folgende Regel beschrieben werden:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[AUTOBESTELLUNG]
[<Описание итогов>]

Wie aus dieser Regel hervorgeht, besteht der Anfragetext aus mehreren Teilen bzw. Abschnitten:

Im Abschnitt<Упорядочивание результатов>Sie können Sortierbedingungen für die Zeilen im Abfrageergebnis definieren. Das Ordnen des Ergebnisses einer Abfrage wird auf Seite 324 erläutert.

Mit AUTO ORDER können Sie die automatische Reihenfolge von Zeilen im Abfrageergebnis aktivieren. Dieser Modus wird auf Seite 331 beschrieben.

Im Abschnitt<Описание итогов>Sie können festlegen, welche Summen in der Abfrage berechnet werden sollen. Dieser Abschnitt wird auf Seite 332 beschrieben.

Beschreibung der Anfrage

Wie bereits erwähnt, muss der Anfragetext unbedingt einen Anfragebeschreibungsabschnitt enthalten, der Folgendes definiert:

Felder, die im Ergebnis der Anfrage enthalten sein werden;

Datenquellen abfragen – Quelltabellen;

Bedingungen, die sich auf die Auswahl der Daten in einer Anfrage auswirken;

Die Reihenfolge, in der Abfrageergebnisse gruppiert werden.

Der Abschnitt zur Anforderungsbeschreibung besteht aus mehreren miteinander verbundenen Sätzen:

WÄHLEN Sie [UNTERSCHIEDLICH] [ZUERST<Количество>]
<Список полей выборки>
[AUS<Список источников>]
[WO<Условие отбора>]
[GRUPPIERE NACH<Поля группировки>]
[HABEN<Условие отбора>]
[FÜR DEN WANDEL [<Список таблиц верхнего уровня>]]

Die Anforderungsbeschreibung beginnt mit einem erforderlichen Schlüsselwort WÄHLEN.

Angebot WO<Условие отбора> ermöglicht Ihnen, das Abfrageergebnis zu filtern. Das Ergebnis umfasst nur die Datensätze, für die die angegebene Bedingung wahr ist. Die Regeln zur Beschreibung von Auswahlbedingungen werden auf Seite 315 erläutert.

Angebot FÜR DEN WANDEL soll auf die Notwendigkeit hinweisen, in einer Transaktion gelesene Daten zu blockieren.

Angebot GRUPPE Mit dieser Option können Sie die Reihenfolge beschreiben, in der Abfrageergebnisse gruppiert werden. Die Gruppierung wird ausführlich auf Seite 316 erläutert.

Angebot HABEN ermöglicht es Ihnen, Bedingungen für die Gruppierung von Ergebnissen festzulegen. Beschrieben auf Seite 318.

Alle Abfragebeispiele in diesem Kapitel liefern den Abfragetext und das Abfrageergebnis. Es wird davon ausgegangen, dass der Anforderungstext als Parameter an die Execute-Methode des Request-Objekts übergeben wird.

Lassen Sie uns ein Beispiel für eine ziemlich einfache Abfrage geben, die aus einer SELECT-Anweisung und einer Liste von Auswahlfeldern besteht.

//Sie müssen eine Liste der Rechnungen im Bericht anzeigen.

Abfrageergebnis:

Verwendung des Wortes ANDERS

In vielen Situationen ist es wünschenswert, dass dieselben Zeilen in einem Bericht nicht wiederholt werden.

// Es ist notwendig herauszufinden, welche Kontrahenten im Allgemeinen
// Waren wurden für den Zeitraum versandt.
Wählen Sie Dokument.Rechnung.Gegenpartei aus

Abfrageergebnis:

Es ist ersichtlich, dass das Abfrageergebnis viele wiederholte Zeilen enthält, was die Klarheit verringert. Um Wiederholungen zu vermeiden, sollte in der Abfragebeschreibung das Schlüsselwort DIFFERENT angegeben werden.

Wählen Sie Verschiedenes Dokument.Rechnung.Gegenpartei aus

Abfrageergebnis:

Verwendung des Wortes FIRST

In manchen Fällen ist es notwendig, eine begrenzte Anzahl von Zeilen in einem Bericht anzuzeigen. Dazu sollten Sie in der Abfragebeschreibung das Schlüsselwort FIRST und danach die erforderliche Zeilenanzahl angeben.

// Es gilt, die fünf teuersten Güter auszuwählen.
// Die Auswahl sollte in absteigender Reihenfolge des Produktpreises erfolgen.
Wählen Sie „Erste 5“.
Verzeichnis.Nomenklatur.Name,
Directory.Nomenclature.PurchasingPrice
Sortieren nach Directory.Nomenclature.PurchasePrice absteigend

Abfrageergebnis:

Beschreibung der Auswahlfelder

Nach dem Pflichtschlüsselwort SELECT (und den qualifizierenden Wörtern DIFFERENT und FIRST) wird im Anfragetext eine Liste von Auswahlfeldern angegeben. Diese Felder werden beim Abruf von Daten in einer Anfrage verarbeitet. Das Abfrageergebnis enthält auch die in dieser Liste definierten Felder. Die Auswahlfelder werden nach folgenden Regeln beschrieben:

<Описание поля>[ [WIE]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

Die Liste der Auswahlfelder besteht aus einem oder mehreren durch Kommas getrennten Elementen. Jede<Поле выборки>besteht aus einer Beschreibung des Auswahlfeldes und einem optionalen Feldalias.

Anstatt die Felder in der Auswahlliste aufzulisten, können Sie auch einen Stern „*“ angeben. Dies bedeutet, dass das Abfrageergebnis alle Felder enthalten muss, die in den Quelltabellen enthalten sind – die in der Quellenliste beschriebenen Abfragedatenquellen.

Kommentar! Bei Angabe eines Sternchens „*“ in der Liste der Auswahlfelder werden die virtuellen Felder der Quelltabellen nicht in das Ergebnis einbezogen.

<Описание поля>legt fest, wie die Feldwerte generiert werden sollen. Im einfachsten Fall ist das Auswahlfeld ein Link zu einem Feld in der Quelltabelle. Der Link kann durch Angabe der Tabelle, die dieses Feld enthält, oder ohne Angabe der Tabelle selbst angegeben werden. Die Dereferenzierung von Feldern wird unter besprochen.

Im Allgemeinen kann das Auswahlfeld nicht nur ein Link zu einem Feld in der Quelltabelle sein, sondern auch mehrere<Выражение>. Ausdrücke werden auf Seite 344 ausführlich besprochen.

Abfrageergebnisse können mithilfe von Aggregatfunktionen gruppiert werden, die als Ausdrücke in Auswahlfeldern angegeben werden. Das Gruppieren von Abfrageergebnissen wird auf Seite 316 erläutert. Aggregatfunktionen werden auf Seite 345 beschrieben.

Jedem Auswahlfeld kann ein Alias ​​zugewiesen werden. Zukünftig kann es für einen bequemeren Zugriff auf dieses Feld verwendet werden. Die Verwendung von Feldaliasen wird unten erläutert.

<Группа полей>kann nur angegeben werden, wenn das Auswahlfeld auf eine verschachtelte Tabelle zeigt. In diesem Fall können Sie festlegen, welche Felder in der verschachtelten Tabellenauswahl verarbeitet werden sollen. Wird keine Feldgruppe angegeben, werden bei der Auswahl alle Felder der geschachtelten Tabelle verarbeitet. Der Zugriff auf verschachtelte Tabellen wird in beschrieben.

Feldaliase in der Auswahlliste

Wenn Sie einem Auswahlfeld einen Alias ​​zuweisen, können Sie später in den ORDER BY- und TOTAL-Klauseln sowie bei der Arbeit mit dem Ergebnis einer Abfrage über seinen Alias ​​auf dieses Feld verweisen. Eine solche Behandlung kann bequemer und visueller sein und in manchen Fällen die einzig mögliche.

Das Schlüsselwort HOW kann dem Feldalias vorangestellt werden. Dieses Wort darf überhaupt nicht angegeben werden, aber wenn es angegeben wird, erhöht sich die Sichtbarkeit und Lesbarkeit des Anforderungstextes.

Feldaliase werden gemäß den Regeln für die Zuweisung von Variablenbezeichnern festgelegt. Die Aliase in der Anfrage dürfen nicht identisch sein.

Das Zuweisen von Aliasen zu Feldern hat an sich keinen Einfluss auf die Datenauswahl in der Abfrage.

// Muss aus dem Produktverzeichnis ausgewählt werden
// Warennamen und Gruppennamen.
Wählen
Verzeichnis. Nomenklatur. Name als Produkt,
Verzeichnis. Nomenklatur.Parent.Name als Gruppe
aus
Verzeichnis.Nomenklatur

Abfrageergebnis:

Beachten Sie, dass die Felder im Feldabfrageergebnis die Namen „Item“ und „Group“ tragen. Wenn keine Feldaliase angegeben würden, würden die Felder im Abfrageergebnis „Name“ und „Name1“ heißen (die Feldnamen im Abfrageergebnis können nicht übereinstimmen, daher wird „1“ automatisch zum Namen des zweiten Felds hinzugefügt). was viel weniger klar ist.

Verschachtelte Tabellen in der Liste der Auswahlfelder

Ein Feld in der Auswahlliste kann auf eine verschachtelte Tabelle in der Abfragedatenquelle verweisen. In diesem Fall ist das Abfrageergebnisfeld vom Typ „Abfrageergebnis“, d. h. es enthält ein verschachteltes Abfrageergebnis, das auf der Grundlage einer verschachtelten Quelltabelle generiert wurde.

Standardmäßig werden alle Felder der verschachtelten Tabelle – der Datenquelle – in das verschachtelte Ergebnis einbezogen. Es ist möglich, explizit eine Gruppe von Feldern zu definieren, die in einem verschachtelten Abfrageergebnis enthalten sein sollen. Eine Gruppe verschachtelter Ergebnisfelder wird nach folgender Regel beschrieben:

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>besteht aus einem oder mehreren durch Kommas getrennten Elementen. Wenn die Liste aus einem Element besteht, muss es nicht in Klammern eingeschlossen werden.

Anstatt verschachtelte Felder aufzulisten, können Sie ein Sternchen „*“ angeben. Dies bedeutet, dass das Ergebnis der verschachtelten Abfrage alle Felder enthalten muss, die in der verschachtelten Tabelle enthalten sind.

<Выражение>[[WIE]<Псевдоним поля>]

<Вложенное поле>kann einen Ausdruck darstellen. Im einfachsten Fall<Выражение>ist ein Verweis auf ein Feld in einer verschachtelten Tabelle. Ausdrücke werden auf Seite 344 ausführlich besprochen.

Jedem verschachtelten Feld kann ein Alias ​​zugewiesen werden. Weiter<Псевдоним поля>können für einen bequemeren Zugriff auf dieses Feld verwendet werden, ähnlich wie Aliase für Felder in der Auswahlliste – siehe Abschnitt „Aliase für Felder in der Auswahlliste“ auf

Aliase können verschachtelten Feldern zugewiesen werden, unabhängig davon, ob der verschachtelten Tabelle selbst ein Alias ​​zugewiesen ist.

//Es ist notwendig, die Spezifikation der Rechnungen im Bericht anzuzeigen,
// das Dokument selbst, Nomenklatur und Menge.
Wählen

Dokument.Rechnung.Zusammensetzung.(Nomenklatur als Produkt, Menge)

Abfrageergebnis:

Verknüpfung Verbindung
Produkt Menge
Jeans für Damen 4
Jeans für Damen 5
Shirt „Cowgirl“ 5
Rechnung 00005 vom 24.02.2002 0:00:00 Jeans für Damen 1
Jeans für Damen 1
Moydodyr „Aquarium“ 5
Waschbecken „Lily“ 8
Mixer „Ultra“ 10

Bitte beachten Sie, dass das Feld „Zusammensetzung“ des Abfrageergebnisses eine verschachtelte Tabelle ist, die die Felder „Nomenklatur“ und „Menge“ enthält.

//Alle Felder des tabellarischen Teils der Rechnung im Bericht anzeigen.
Wählen
Dokument.Rechnung.Link,
Dokument.Rechnung.Zusammensetzung.*

Der Zweck der IZ-Klausel besteht darin, eine Liste von Quelltabellen – Datenquellen, die in einer bestimmten SELECT-Anweisung verwendet werden – anzugeben.

Es ist zu beachten, dass die IZ-Klausel in der Abfragesprache optional ist. Sie kann weggelassen werden, wenn die Datenquellen in der Beschreibung der in der SELECT-Klausel enthaltenen Liste der Auswahlfelder vollständig qualifiziert sind. Bitte beachten Sie, dass einige Beispiele in den vorherigen Abschnitten die IZ-Klausel nicht enthielten.

Nach dem Schlüsselwort IZ wird ein Quellenverzeichnis angezeigt. Im Allgemeinen wird das Quellenverzeichnis durch das folgende Regelwerk beschrieben:

<Источник>[, <Источник>[, ...]]

Abfragedatenquellen werden in der Quellliste durch Kommas getrennt aufgeführt. Jeden<Источник>das Quellenverzeichnis muss eine Beschreibung der Quelle enthalten; Darüber hinaus kann es angegeben werden<Перечень соединений>- Regeln zum Verbinden einer Quelle mit anderen Quellen. Anschlussspezifikationen werden beschrieben.

<Описание источника> [ <Перечень соединений> ]

Wenn die Datenquelle eine Infobase-Tabelle ist,<Описание источника>enthält<Имя таблицы>.

<Таблица>[ [WIE]<Псевдоним источника>]

Wenn die Quelltabelle virtuell ist, können Sie angeben<Параметры>seine Entstehung. Die Parameter virtueller Tabellen werden im Abschnitt „Datenquellen abfragen“ ausführlich beschrieben.

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

Eine Unterabfrage kann auch als Abfragedatenquelle fungieren. in diesem Fall enthält die Quellenbeschreibung<Описание запроса>. Die Verwendung verschachtelter Abfragen wird unter beschrieben.

Der Beschreibung der Datenquelle kann auch ihr Alias ​​zugeordnet werden. Weiter<Псевдоним источника>kann für einen bequemeren Zugriff auf diese Quelle verwendet werden. Die Verwendung von Datenquellen-Aliasnamen wird unter erläutert.

Verbindungsspezifikationen

Wenn Sie mehrere Quellen in der Quellliste definieren, wird für jeden Datensatz aus der ersten Quelltabelle eine Auswahl aus der zweiten Quelltabelle getroffen und so weiter. Somit ergibt die Abfrage alle möglichen Kombinationen aller Datensätze aus allen angegebenen Quellen.

Abfrageergebnis:

Gegenpartei Bank
Lieferanten JSCB InvestBank
Lieferanten JSCB PromStroyBank
Strickfabrik „Zarya“ JSCB InvestBank
Strickfabrik „Zarya“ JSCB PromStroyBank
Denim-Bekleidungsfabrik JSCB InvestBank
Denim-Bekleidungsfabrik JSCB PromStroyBank
Käufer JSCB InvestBank
Käufer JSCB PromStroyBank
Bekleidungsmesse JSCB InvestBank
Bekleidungsmesse JSCB PromStroyBank
Handelshaus „Budenovsky“ JSCB InvestBank
Handelshaus „Budenovsky“ JSCB PromStroyBank
Pavillon 45 am Großmarkt JSCB InvestBank
Pavillon 45 am Großmarkt JSCB PromStroyBank
Bayern - Porzellan JSCB InvestBank
Bayern - Porzellan JSCB PromStroyBank
Denim-Bekleidungsfabrik JSCB InvestBank
Denim-Bekleidungsfabrik JSCB PromStroyBank
JSCB PromStroyBank JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

Das Abfrageergebnis enthält Kombinationen aller Kontrahenten mit allen Banken. Ein solches Ergebnis allein ergibt in der Regel keinen Sinn. Normalerweise müssen Kombinationen von Datensätzen aus verschiedenen Quelltabellen durch einige Bedingungen eingeschränkt werden. In einer Abfragesprache ist es möglich, eine solche Kombination von Quellen zu beschreiben, indem die Quellen selbst angegeben und die Bedingungen definiert werden, unter denen Kombinationen von Datensätzen aus diesen Quellen in das Abfrageergebnis einbezogen werden müssen.

Es gibt verschiedene Arten von Verbindungen, sie werden durch die folgenden Regeln beschrieben:

<Соединение> [<Перечень соединений>]

Allgemein<Перечень соединений>kann nicht nur eine Verbindung (zweier Quellen), sondern auch mehrere Verbindungen mehrerer Quellen gleichzeitig enthalten und beschreiben.

[INTERN] BEITRETEN<Описание источника>VON<Условие отбора> |

LINKE ÄUSSERE VERBINDUNG<Описание источника>VON<Условие отбора> |

RECHTS [ÄUSSERER] VERBINDEN<Описание источника>VON<Условие отбора> |

FULL (OUTER) JOIN<Описание источника>VON<Условие отбора>

<Условие отбора>enthält Bedingungen, nach denen die Auswahl Daten aus den Originaltabellen – den Quellen der Abfrage – kombinieren muss. Regeln zum Beschreiben von Bedingungen in einer Abfragesprache werden auf Seite 357 erläutert.

Die Schlüsselwörter LEFT, RIGHT und FULL verdeutlichen die Art der Verbindung. Die Wörter INTERNAL oder EXTERNAL dürfen überhaupt nicht angegeben werden; sie erhöhen die Klarheit und Lesbarkeit des Anfragetextes.

Die verknüpften Quellen sind nicht äquivalent zueinander und in manchen Fällen hängt das Ergebnis davon ab, welche Tabelle zuerst vor dem Schlüsselwort JOIN (links davon) und welche Tabelle als zweite (rechts) aufgeführt wird.

[INTERNAL] JOIN bedeutet, dass aus beiden Quelltabellen – Datenquellen – nur diejenigen Kombinationen von Datensätzen in das Abfrageergebnis einbezogen werden dürfen, die die angegebene Bedingung erfüllen. Die restlichen Datensätze werden nicht in das Ergebnis einbezogen.

// Muss herausfinden, welche Banken gleichzeitig sind
// Gegenparteien (die gleichen Namen sind vorhanden
//sowohl im Kontrahentenverzeichnis als auch im Bankenverzeichnis).
Wählen

Banken.Link Wie man Bankgeschäfte tätigt
Aus

Innere Verbindung
Verzeichnis.Banken Wie Banken
Von

Abfrageergebnis:

Gegenpartei Bank
JSCB PromStroyBank JSCB PromStroyBank

Ein LEFT [OUTER] JOIN bedeutet, dass das Abfrageergebnis Kombinationen von Datensätzen aus beiden Quelltabellen enthalten muss, die die angegebene Bedingung erfüllen. Im Gegensatz zu einem internen Join muss das Abfrageergebnis jedoch auch Datensätze aus der ersten Quelle (links neben dem Wort JOIN angegeben) enthalten, für die keine Datensätze aus der zweiten Quelle gefunden wurden, die der Bedingung entsprechen.

Auf diese Weise umfasst das Abfrageergebnis alle Datensätze aus der ersten Quelle; Sie werden mit Datensätzen aus der zweiten Quelle zusammengeführt, wenn die angegebene Bedingung erfüllt ist. Abfrageergebniszeilen, für die keine Datensätze aus der zweiten Quelle gefunden wurden, die der Bedingung entsprechen, enthalten NULL in den Feldern, die basierend auf Datensätzen aus dieser Quelle generiert werden.

//Es ist notwendig, alle Kontrahenten im Bericht anzuzeigen, und zwar für diese
// Wer ist auch eine Bank? Geben Sie einen Link zur Bank an.
Wählen
Gegenparteien.Link als Gegenpartei,
Banken.Link Wie man Bankgeschäfte tätigt
Aus
Verzeichnis. Gegenparteien Wie Gegenparteien
Linke äußere Verbindung
Verzeichnis.Banken Wie Banken
Von
Counterparties.Name = Banks.Name

Abfrageergebnis:

Ein RIGHT [OUTER] JOIN bedeutet, dass das Abfrageergebnis Kombinationen von Datensätzen aus beiden Quelltabellen enthalten muss, die eine bestimmte Bedingung erfüllen. Darüber hinaus muss das Abfrageergebnis auch Datensätze aus der zweiten Quelle (angegeben rechts neben dem Wort CONNECTION) enthalten, für die keine Datensätze aus der ersten Quelle gefunden wurden, die der Bedingung entsprechen.

Somit umfasst das Abfrageergebnis alle Datensätze aus der zweiten Quelle; Sie werden mit Datensätzen aus der ersten Quelle zusammengeführt, wenn die angegebene Bedingung erfüllt ist. Abfrageergebniszeilen, für die keine Datensätze aus der ersten Quelle gefunden wurden, die der Bedingung entsprechen, enthalten NULL in den Feldern, die basierend auf Datensätzen aus dieser Quelle generiert werden.

//Es ist notwendig, alle Banken im Bericht anzuzeigen, und zwar für diese
// wer ist auch die Gegenpartei – geben Sie einen Link zur Gegenpartei an.
WÄHLEN
Gegenparteien.Link als Gegenpartei,
Banks.Link Like Bank
AUS
Verzeichnis. Gegenparteien Wie Gegenparteien
Rechte äußere Verbindung
Verzeichnis.Banken Wie Banken
Von
Counterparties.Name = Banks.Name

Abfrageergebnis:

Gegenpartei Bank
NULL JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

Ein FULL [OUTER] JOIN bedeutet, dass das Abfrageergebnis Kombinationen von Datensätzen aus beiden Quelltabellen enthalten muss, die eine bestimmte Bedingung erfüllen. Darüber hinaus müssen im Abfrageergebnis auch diejenigen Datensätze aus beiden Quellen enthalten sein, für die keine Übereinstimmungen gefunden wurden.

Auf diese Weise umfasst das Abfrageergebnis alle Datensätze aus beiden Quellen; Sie werden miteinander verbunden, wenn die angegebene Bedingung erfüllt ist. Abfrageergebniszeilen, für die keine Datensätze aus einer Quelle gefunden wurden, die der Bedingung entsprechen, enthalten NULL in den Feldern, die basierend auf Datensätzen aus dieser Quelle generiert werden.

// Es ist notwendig, alle Kontrahenten und alle Banken im Bericht anzuzeigen,
// und diejenigen, die beides sind - in einer Zeile drucken.
Wählen
Gegenparteien.Link als Gegenpartei,
Banken.Link Wie man Bankgeschäfte tätigt
Aus
Verzeichnis. Gegenparteien Wie Gegenparteien
Vollständiger äußerer Join
Verzeichnis.Banken Wie Banken
Von
Counterparties.Name = Banks.Name

Abfrageergebnis:

Aliase für Datenquellen

Wenn Sie einer Datenquelle einen Alias ​​zuweisen, ist diese Quelle künftig über diesen Alias ​​(und nicht mehr über die Angabe des Tabellennamens) erreichbar. Eine solche Behandlung kann bequemer und visueller sein und in manchen Fällen die einzig mögliche.

Der Alias ​​wird gemäß den Regeln zur Vergabe von Variablenbezeichnern festgelegt. Die Aliase in der Anfrage dürfen nicht identisch sein.

Das Schlüsselwort HOW kann dem Quellalias vorangestellt werden. Dieses Wort darf überhaupt nicht angegeben werden, aber wenn es angegeben wird, erhöht sich die Sichtbarkeit und Lesbarkeit des Anforderungstextes.

Das Zuweisen von Aliasnamen zu Quellen hat an sich keinen Einfluss auf die Datenauswahl in der Abfrage.

// Dieses Beispiel demonstriert die Verwendung
// in der Liste der Auswahlfelder des Alias-Produkts,
// der Quelltabelle Directory.Nomenclature zugewiesen
Wählen
Produktname,
Produkt.Übergeordnet
Aus
Verzeichnis.Nomenklatur.Produkt

Verschachtelte Tabellen in der Quellliste

Das Quellenverzeichnis kann auch verschachtelte Tabellen enthalten – tabellarische Teile von Nachschlagewerken und Dokumenten.

//Es ist notwendig, die Spezifikation der Rechnungen im Bericht anzuzeigen -
// das Dokument selbst, Nomenklatur und Menge anzeigen.
//Die Quellenliste enthält die verschachtelte Tabelle „Composition“ -
// tabellarischer Teil der Rechnung.
// Die Auswahl ist auf acht Datensätze beschränkt, um das Beispiel nicht zu überladen.
Wählen Sie „Erste 8“.
Link, Nomenklatur, Menge
Aus
Dokument.Rechnung.Zusammensetzung

Abfrageergebnis:

Verknüpfung Nomenklatur Menge
Rechnung 00007 vom 25.02.2002 21:03:21 Jeans für Damen 4
Rechnung 00006 vom 25.02.2002 0:00:00 Jeans für Damen 5
Rechnung 00006 vom 25.02.2002 0:00:00 Shirt „Cowgirl“ 5
Rechnung 00005 vom 01.03.2002 20:58:28 Jeans für Damen 1
Rechnung 00004 vom 01.03.2002 20:50:40 Jeans für Damen 1
Rechnung 00003 vom 23.02.2002 0:00:00 Moydodyr „Aquarium“ 5
Rechnung 00003 vom 23.02.2002 0:00:00 Waschbecken „Lily“ 8
Rechnung 00003 vom 23.02.2002 0:00:00 Mixer „Ultra“ 10

Bitte beachten Sie, dass bei der Angabe einer verschachtelten Tabelle in der Quellenliste sowohl auf die Felder der verschachtelten Tabelle selbst als auch auf die Felder der Tabelle der obersten Ebene (diejenige, die die verschachtelte Tabelle enthält) zugegriffen werden kann. In diesem Fall wird auf das Feld „Link“ des Dokuments selbst zugegriffen.

Unterabfragen in der Quellliste

In der Liste der Abfragequellen kann eine Unterabfrage als Quelltabelle verwendet werden. In diesem Fall enthält die Quellbeschreibung die Beschreibung der Unterabfrage. Die Beschreibung einer verschachtelten Abfrage wird genauso zusammengestellt wie eine normale: siehe

Die Verwendung einer verschachtelten Abfrage als Datenquelle unterscheidet sich nicht von der Verwendung einer Infobase-Tabelle. Als Felder einer solchen Quelle stehen alle in der Liste der Unterabfrage-Auswahlfelder beschriebenen Felder zur Verfügung.

Das Ergebnis wird genau das gleiche sein wie im vorherigen Beispiel.

Erstellen von Berichten

Arbeiten mit Anfragen

Um mit Abfragen zu arbeiten, wird ein integriertes Sprachobjekt verwendet Anfrage . Es ermöglicht Ihnen, in Datenbankfeldern gespeicherte Informationen in Form einer nach bestimmten Regeln erstellten Stichprobe zu erhalten.

Datenquellen abfragen

Die Abfrage erhält erste Informationen aus einer Reihe von Tabellen. Diese Tabellen stellen Daten aus echten Datenbanktabellen in einer leicht zu analysierenden Form dar. Sie lassen sich in zwei große Gruppen einteilen: real und virtuell.

Echte Tabellen wiederum können Objekt (Referenz) oder Nicht-Objekt (Nicht-Referenz) sein:

Die Besonderheit realer Tabellen besteht darin, dass sie Daten aus einer einzigen realen Tabelle enthalten, die in einer Datenbank gespeichert sind. Echte Tabellen sind beispielsweise die Tabelle „Directory.Clients“, die dem Verzeichnis „Clients“ entspricht, oder die Tabelle „Accumulation Register. Material Remaining“, die dem Akkumulationsregister „Material Remaining“ entspricht.

Virtuelle Tabellen werden hauptsächlich aus Daten mehrerer Datenbanktabellen gebildet. Eine virtuelle Tabelle ist beispielsweise die Tabelle „Akkumulationsregister. Materialreste. Salden und Umsätze“, gebildet aus mehreren Tabellen des Akkumulationsregisters „Materialreste“. Manchmal können virtuelle Tabellen aus einer realen Tabelle gebildet werden (z. B. wird die virtuelle Tabelle „Prices.SliceLast“ basierend auf der Informationsregistertabelle „Preise“ gebildet). Allen virtuellen Tabellen ist jedoch gemeinsam, dass ihnen eine Reihe von Parametern zugewiesen werden können, die bestimmen, welche Daten in diesen virtuellen Tabellen enthalten sind. Der Satz solcher Parameter kann für verschiedene virtuelle Tabellen unterschiedlich sein und wird durch die in den Quelldatenbanktabellen gespeicherten Daten bestimmt.

Echte Tabellen werden in Objekttabellen (Referenztabellen) und Nichtobjekttabellen (Nichtreferenztabellen) unterteilt.

Objekt(referenz)tabellen geben Auskunft über Referenzdatentypen (Verzeichnisse, Dokumente, Pläne für Merkmalstypen etc.). Und in Nicht-Objekt (Nicht-Referenz) - alle anderen Datentypen (Konstanten, Register usw.).

Eine Besonderheit von Objekttabellen (Referenztabellen) besteht darin, dass sie ein „Link“-Feld enthalten, das einen Link zum aktuellen Datensatz enthält. Darüber hinaus ist es für solche Tabellen möglich, eine benutzerdefinierte Darstellung des Objekts zu erhalten; diese Tabellen können hierarchisch sein und die Felder solcher Tabellen können verschachtelte Tabellen (Tabellenteile) enthalten.

Abfragesprache

Der Algorithmus, mit dem Daten aus den Quelltabellen der Anfrage ausgewählt werden, wird im Text der Anfrage in einer speziellen Sprache beschrieben – Abfragesprache. Der Anfragetext besteht aus mehreren Teilen:

    Anfragebeschreibung,

    Abfragen zusammenführen

    Ordnen der Ergebnisse,

    automatische Bestellung,

    Beschreibung der Ergebnisse.

Der einzige obligatorische Teil der Anfrage ist der erste – die Beschreibung der Anfrage. Alle anderen sind bei Bedarf anwesend.

Beschreibung der Anfrage definiert Datenquellen, Auswahlfelder, Gruppierungen usw.

Abfragen zusammenführen bestimmt, wie die Ergebnisse mehrerer Abfragen kombiniert werden.

Ergebnisse organisieren Definiert die Sortierbedingungen für Abfrageergebniszeilen.

Automatische Bestellung ermöglicht Ihnen die automatische Sortierung von Abfrageergebniszeilen.

Beschreibung der Ergebnisse bestimmt, welche Summen in der Abfrage berechnet werden sollen und wie die Ergebnisse gruppiert werden.

Bericht Register der Dokumente zur Erbringung von Dienstleistungen

Der erste Bericht, auf dessen Grundlage wir beginnen, uns mit der Abfragesprache vertraut zu machen, wird der Bericht „Dokumentenregister für die Erbringung von Dienstleistungen“ sein. Dieser Bericht zeigt lediglich eine Liste der in der Datenbank vorhandenen „Servicebereitstellungs“-Dokumente in der Reihenfolge ihres Datums und ihrer Nummer an.

Erstellen wir im Konfigurator ein neues Konfigurationsobjekt: Bericht „Register der Dokumente zur Leistungserbringung“. Gehen wir zur Registerkarte „Layout“ und starten Sie den Ausgabeformular-Designer.

Als Datenquelle für die Anfrage wählen wir das Objekt (Referenz-)Dokumentenverzeichnis „Erbringung von Dienstleistungen“ aus. Aus dieser Tabelle wählen wir folgende Felder aus:

  • "Meister",

    "Klient":

Bitte beachten Sie, dass bei Auswahl der Felder „Lager“, „Master“ und „Kunde“ auch die Felder „Warehouse.View“, „Master.View“ und „Customer.View“ in der Liste der ausgewählten Felder ausgewählt werden. Tatsache ist, dass im Allgemeinen davon ausgegangen wird, dass diese Felder in den Zellen eines Tabellenkalkulationsdokuments angezeigt werden. Da es sich bei den entsprechenden Feldern „Lager“, „Master“ und „Kunde“ um Referenzfelder handelt, führt das System bei Übergabe eines Referenzwerts als Parameterwert für die Ausgabe eine zusätzliche Anfrage durch, um eine Darstellung dieses Felds zu erhalten (was dann der Fall ist). wird im Dokument angezeigt), was zu einer langsameren Berichtsausgabe führt. Daher bietet das System bei der Auswahl von Referenzfeldern an, Darstellungen von Referenzfeldern sofort in die Liste der ausgewählten Felder aufzunehmen, in der Erwartung, dass sie für die Ausgabe im Dokument verwendet werden.

Danach gehen wir zur Registerkarte „Bestellung“ und geben an, dass das Ergebnis der Anfrage zunächst nach dem Wert des Felds „Datum“ und dann nach dem Wert des Felds „Dienstbereitstellung. Link“ sortiert werden soll:

Gehen wir zur Registerkarte „Bericht“ und setzen das Flag „Berichtsersteller verwenden“ zurück:

Setzen wir das Flag „Report Builder verwenden“ zurück ...

OK klicken". Der Designer erstellt das Berichtsformular und -layout. Öffnen wir das Formularmodul und finden darin das Verfahren „Register der Dokumentenerbringung von Dienstleistungen“. In diesem Verfahren wird der Anfragetext generiert, der zur Gewinnung der für uns interessanten Daten verwendet wird:

Query.Text = „SELECT

Leistungserbringung.Datum AS-Datum,

Erbringung der Dienstleistungen. Nummer AS-Nummer,

Erbringung von Dienstleistungen. Lager,

Bereitstellung von Dienstleistungen. Lager. Präsentation,

Erbringung von Dienstleistungen. Meister,

Erbringung von Dienstleistungen. Master. Präsentation,

Erbringung von Dienstleistungen. Kunde,

Erbringung von Dienstleistungen. Kunde. Vertretung

Dokument.Bereitstellung von Diensten WIE man Dienste bereitstellt

SORTIERE NACH

Der Anfragetext beginnt, wie oben erwähnt, mit einem Teil der Anfragebeschreibung:

I Bereitstellung der Dienstleistung. Datum AS Datum,

I Erbringung von Dienstleistungen. Nummer AS-Nummer,

I Erbringung von Dienstleistungen. Lager,

I Erbringung von Dienstleistungen. Lager. Präsentation,

Ich erbringe Dienstleistungen. Meister,

I Erbringung von Dienstleistungen. Master. Präsentation,

I Erbringung von Dienstleistungen. Kunde,

1 Erbringung von Dienstleistungen. Kunden. Vertretung

Ich dokumentiere. Bereitstellung von Dienstleistungen WIE man Dienstleistungen bereitstellt

Die Anforderungsbeschreibung beginnt mit einem erforderlichen Schlüsselwort WÄHLEN. Darauf folgt eine Liste ausgewählter Felder, die die Felder beschreibt, die im Abfrageergebnis enthalten sein sollen. Diese Liste kann sowohl die Felder selbst als auch einige Ausdrücke enthalten, die auf der Grundlage der Feldwerte berechnet werden.

Nach dem Schlüsselwort IZ werden Datenquellen angegeben – die ursprünglichen Abfragetabellen, deren Inhalte in der Abfrage verarbeitet werden. In diesem Fall handelt es sich um die Objekt-(Referenz-)Tabelle „Document.Provision of Service“. Nach dem Schlüsselwort WIE angegeben Pseudonym Datenquelle. In unserem Fall handelt es sich um die „Erbringung von Dienstleistungen“. Zukünftig kann über einen Alias ​​auf diese Datenquelle im Hauptteil der Anfrage zugegriffen werden.

Wir sehen diesen Aufruf in der Beschreibung der Auswahlfelder:

| Leistungserbringung.Datum AS-Datum,

| Erbringung der Dienstleistungen. Nummer AS-Nummer,

| Erbringung von Dienstleistungen. Lager,

| Bereitstellung von Dienstleistungen. Lager. Präsentation,

| Erbringung von Dienstleistungen. Meister,

| Erbringung von Dienstleistungen. Master. Präsentation,

| Erbringung von Dienstleistungen. Kunde,

| Erbringung von Dienstleistungen. Kunde. Vertretung

Auswahlfelder können auch Aliase haben, mit denen später im Anfragetext auf dieses Feld verwiesen werden kann. In unserem Fall sind das die Aliase „Date“ und „Number“.

Nach dem Beschreibungsteil der Abfrage folgt in unserem Beispiel der Ergebnisreihenfolgeteil:

|ORDNEN NACH

| Datum, | Nummer";

Angebot SORTIERE NACH ermöglicht Ihnen, die Zeilen im Abfrageergebnis zu sortieren. Nach dieser Schlüsselklausel folgt ein Ordnungsausdruck, bei dem es sich im Allgemeinen um eine Auflistung von Feldern (Ausdrücken) und der Ausgabereihenfolge handelt. In unserem Fall erfolgt die Bestellung zunächst über das Auswahlfeld, auf das über den Alias ​​„Code“ zugegriffen wird, und dann über das Feld „Nummer“. In beiden Fällen ist die Sortierreihenfolge aufsteigend, was der Standardsortierreihenfolge entspricht.

Achten wir nun darauf, wie das Abfrageergebnis in einem Tabellendokument angezeigt wird.

Verfahren Verzeichnis der Leistungserbringungsdokumente (TabDoc) Export

//((CONSTRUCTOR_OUTPUT_FORM(Register der Dokumente zur Bereitstellung von Dienstleistungen)// Dieses Fragment wurde vom Konstrukteur erstellt.// Bei der Wiederverwendung des Konstruktors// eingeführt manuell Änderungen wird verloren sein!!!

Layout = GetLayout("Register der Dokumente, die Dienste bereitstellen"); Anfrage = Neue Anfrage;

Ergebnis = Query.Run();

HeaderArea = Layout.GetArea("Header"); AreaBasement =

Layout.GetArea("TableFooter"); DetailRecordsArea =

TabDoc.Output(TableHeadArea); TabDoc.StartAutogruttingRows();

SelectDetails = Result.Select();

While SelectDetails.NextFunctions()-Schleife

AreaDetailRecords.Parameters.Fill(SelectionDetails);

TabDoc.Output(RecordsDetailsArea,DetailsSelection.Level()); EndCycle;

/L)CONSTRUCTOR_OUTPUT_FORM EndProcedure

Das Berichtsformular enthält ein Kontrollelement TabularDocumentField mit dem Namen „TabDoc“, das basierend auf dem vom Designer generierten Layout mit Daten gefüllt wird.

Zu Beginn des Verfahrens erhalten wir das Berichtslayout, aus dem wir dann die darin vorhandenen Bereiche in die entsprechenden Variablen übernehmen:

HeaderArea = Layout.GetArea("Header"); AreaBasement =

Layout.GetArea("Basement"); TableHeaderArea =

Layout.GetArea("TableHeader"); TableFooterArea =

Layout.GetArea("TableFooter"");DetailRecordsArea =

Layout.GetArea("Details");

Anschließend leeren wir das Tabellenkalkulationsdokument und zeigen die Bereiche an, die keine aus dem Abfrageergebnis erhaltenen Daten enthalten:

TabDoc.Clear(); TabDoc.Output(AreaHeader);

TabDoc.Output(TableHeadArea); TabDoc.StartAutoGroupingRows();

In der letzten Zeile hat der Designer den Beginn der automatischen Gruppierung von Zeilen hinzugefügt. In diesem Beispiel gibt es keine Zeilen, die gruppiert werden müssen, aber standardmäßig schlägt der Designer immer vor, Zeilen in einem Tabellendokument zu gruppieren. Dieser Aufruf hat keinen Einfluss auf die Geschwindigkeit der Berichtsausgabe, daher lassen wir den Konstruktortext unverändert.

Danach erhalten wir eine Auswahl aus dem Abfrageergebnis, die wir in einer Schleife durchlaufen:

In jeder Iteration der Schleife füllen wir die Parameter des zuvor erhaltenen Layoutbereichs mit Werten, die wir aus dem nächsten Abfrageergebnis-Beispieldatensatz erhalten haben, und zeigen diesen Bereich in einem Tabellenkalkulationsdokument an.

Am Ende des Vorgangs zeigen wir die letzten Bereiche des Layouts in einem Tabellendokument an:

TabDoc.FinishAutoGroupingRows();

TabDoc.Output(TableFooterArea);

TabDoc.Output(AreaFooter);

Jetzt starten wir 1C:Enterprise im Debug-Modus und sehen uns das Ergebnis unseres Berichts an:

Am Beispiel dieses Berichts haben wir daher die Verwendung des Ausgabeformular-Designers demonstriert und uns mit einigen grundlegenden Abfragesprachenkonstrukten vertraut gemacht.

Der Bericht „Service Rating“ enthält Informationen darüber, welche Dienstleistungen Master of All Trades LLC im angegebenen Zeitraum den größten Gewinn gebracht haben. Am Beispiel des Berichts „Service Rating“ veranschaulichen wir, wie man Daten in einem bestimmten Zeitraum auswählt, wie man Abfrageparameter festlegt und wie man Daten aus mehreren Tabellen in einer Abfrage verwendet und alle Daten aus einer der Quellen in die einbezieht Abfrageergebnis.

Lassen Sie uns einen neuen Konfigurationsobjektbericht „Servicebewertung“ erstellen. Gehen wir zur Registerkarte „Layouts“ und rufen den Ausgabeformular-Konstruktor auf.

Wählen wir die Objekttabelle (Referenztabelle) des Verzeichnisses „Nomenklatur“ und die virtuelle Tabelle des Akkumulationsregisters „Umsatz.Umsatz“ aus. Um die Mehrdeutigkeit von Namen in der Abfrage zu beseitigen, benennen wir die Tabelle „Nomenklatur“ in „SprNomenklatur“ um (Rechtsklick-Kontextmenü).

Anschließend platzieren Sie den Cursor auf der Tabelle „SalesTurnover“ und rufen den Dialog zur Eingabe virtueller Tabellenparameter auf:

Öffnen Sie den Dialog zur Eingabe virtueller Tabellenparameter

Geben wir an, dass der Beginn und das Ende des Zeitraums in den entsprechenden Parametern „StartDate“ und „EndDate“ übergeben werden (das „&“-Symbol vor dem Namen zeigt an, dass es sich um einen Anfrageparameter handelt):

Wählen Sie dann aus den Tabellen die Felder „SprNomenclature.Link“ und „SalesTurnover.RevenueTurnover“ aus:

SprNomenklatur.Präsentation

UmsatzUmsatzUmsatzUmsatz

Gehen wir zur Registerkarte „Links“ und sehen wir, dass der Designer bereits eine Verbindung zwischen den beiden ausgewählten Tabellen erstellt hat – der Wert der Registeränderung „Nomenklatur“ sollte dem Verweis auf das Verzeichniselement „Nomenklatur“ entsprechen.

Jetzt müssen wir nur noch das „Alle“-Flag für die Registertabelle zurücksetzen und für die Verzeichnistabelle setzen.

Wir werden alle Elemente aus dem Verzeichnis „Nomenklatur“ auswählen

Das Setzen des Flags „Alle“ an der Verzeichnistabelle bedeutet, dass alle Elemente aus dem Verzeichnis ausgewählt werden und diesen Elementen der Umsatzwert aus dem Register zugewiesen wird. Als Ergebnis der Anfrage werden somit alle Dienste angezeigt und für einige von ihnen der Umsatzumsatz angezeigt. Für Leistungen, die im gewählten Zeitraum nicht erbracht wurden, wird nichts angezeigt.

Gehen wir zur Registerkarte „Bedingungen“ und legen Sie die Bedingungen für die Auswahl von Elementen aus dem Verzeichnis „Nomenklatur“ fest. Beim Festlegen der Auswahlbedingungen verwenden wir erneut Abfrageparameter. Die erste Bedingung muss sein, dass das ausgewählte Element keine Gruppe ist (wechseln Sie dazu in den Modus „Benutzerdefinierte Bedingung“).

Die zweite Bedingung muss sein, dass es sich bei dem ausgewählten Artikel um eine Dienstleistung handelt (dies ist die „Einfache Bedingung“):

Zukünftig werden wir vor der Ausführung der Anfrage den entsprechenden Enumerationswert an den Parameter „Type of Nomenclature“ übergeben.

Gehen wir zur Registerkarte „Verknüpfungen/Aliase“ und geben Sie an, dass die Verzeichniselementansicht den Alias ​​„Dienst“ und das Registerfeld den Alias ​​„Umsatz“ haben soll:

Gehen wir zur Registerkarte „Reihenfolge“ und geben an, dass das Abfrageergebnis in absteigender Reihenfolge des Werts des Felds „Umsatz“ sortiert werden soll.

Auf der Registerkarte „Gesamtsummen“ legen wir fest, dass wir allgemeine Gesamtsummen anzeigen müssen, und diese sollten die Summe der Werte im Feld „Umsatz“ sein:

Deaktivieren Sie auf der Registerkarte „Bericht“ das Flag „Berichtsgenerator verwenden“.

Gehen wir nun zum Reiter „Ausgabeformular“. Geben Sie an, dass die Parameter „Enddatum“ und „Startdatum“ im Formular in Eingabefeldern vom Typ „Datum“ bearbeitet werden. Für den Parameter „Typ der Nomenklatur“ hingegen entfernen wir das Bearbeitungsflag in der Form:

OK klicken". Die Plattform generiert ein Layout- und Berichtsformular. Öffnen Sie das Formularmodul und finden Sie darin das Verfahren „Servicebewertung“.

In diesem Verfahren ermitteln wir in dem Teil, in dem die Abfrageparameter festgelegt werden, den Wert des Parameters „Nomenklaturtyp“ (Korrekturen sind fett hervorgehoben):

| LINKE VERBINDUNG RegisterAccumulation.Sales,Turnover(&StartDate,

| &Verfallsdatum,)

| WIE MAN VERKAUFTUmsatz

|ORDNEN NACH | UmsatzDOWN

|ERGEBNISBETRAG (Umsatz) VON | SIND ÜBLICH";

RequestSetParameterC"Art der Nomenklatur",

Übertragungen.Arten der Nomenklatur.Dienstleistung);

Query.SetParameter("StartDate",StartDate); Request.SetParameterC"EndDate", EndDate);

Schauen wir uns nun den vom Konstruktor generierten Anforderungstext an:

| SprNomenclature.Representation AS Repräsentation,

|SalesTurnover.RevenueTurnover AS Umsatz

| Verzeichnis.Nomenklatur AS RefNomenklatur

LINKE VERBINDUNG RegisterAccumulations.Sales.Turnover(&StartDate,

| WIE MAN VERKAUFTUmsatz

| Software SalesTurnover.Nomenclature = SprNomenclature.Link

| (RefNomenclature.ThisGroup = False) UND

| SprNomenclature.Type of Nomenclature = &Type of Nomenclature

|ORDNEN NACH

| UmsatzDOWN

|ERGEBNISBETRAG (Umsatz) VON

Zuerst kommt wie üblich der Teil mit der Beschreibung der Anfrage und dieser enthält Konstruktionen, die für uns neu sind.

Bei der Beschreibung der Anfragequellen (nach dem Schlüsselwort IZ) wurde die Möglichkeit genutzt, mehrere Anfragequellen zu definieren:

| Verzeichnis.Nomenklatur AS RefNomenklatur

|&EndDatum,)

| WIE MAN VERKAUFTUmsatz

| Software SalesTurnover.Nomenclature = SprNomenclature.Link

In diesem Fall werden Datensätze aus zwei Quellen ausgewählt: „SprNomenklatura“ und „SalesTurnover“, mit dem Schlüsselsatz LINKER ANSCHLUSS... VON beschreibt die Art und Weise, wie Datensätze aus diesen beiden Quellen kombiniert werden.

LINKER ANSCHLUSS bedeutet, dass das Abfrageergebnis Kombinationen von Datensätzen aus beiden Quellen enthalten muss, die der nach dem Schlüsselwort BY angegebenen Bedingung entsprechen. Darüber hinaus muss das Abfrageergebnis auch Datensätze aus dem ersten enthalten (links vom Wort angegeben). VERBINDUNG) Quelle, für die aus der zweiten Quelle keine der Bedingung entsprechenden Datensätze gefunden wurden.

Die Beschreibung der ersten Quelle und der Verbindungsbedingung ist für uns nichts Neues, aber bei der Beschreibung der zweiten Quelle nutzen wir die Möglichkeit, die Parameter der virtuellen Abfragetabelle festzulegen:

| RegisterAccumulations.Sales.Turnover(&StartDate, &EndDate,)

Der erste Parameter ist der Beginn des Zeitraums zur Berechnung der Summen, der zweite das Ende des Zeitraums. Dadurch enthält die Quelltabelle nur die im übertragenen Zeitraum berechneten Umsätze. Dabei sollte man immer bedenken, dass wenn wir als Parameter ein Datum übergeben (und das wird in unserem Fall der Fall sein), dann enthält das Datum auch die sekundengenaue Uhrzeit.

Wenn im Voraus bekannt ist, dass der Benutzer nicht an den Ergebnissen des Berichts in sekundengenauen Zeiträumen interessiert sein wird, sollte folgendes Merkmal berücksichtigt werden: Standardmäßig ist die Uhrzeit im Datum auf 00 eingestellt :00:00. Wenn Sie also keine besonderen Maßnahmen ergreifen, stellt sich heraus, dass, wenn der Benutzer den Berichtszeitraum vom 01.03.2004 bis zum 31.03.2004 einstellt, die Registersummen ab dem Beginn des Tages, dem 01.03., berechnet werden. 2004 00:00:00 bis zum Tagesanfang 31.03.2004 00:00:00. Daher werden Daten für den 31. Tag, mit Ausnahme des Tagesanfangs, nicht in die Berechnung einbezogen, was den Benutzer sehr überraschen wird.

Um diese Situation zu beseitigen, sollten zwei Dinge getan werden.

Beschränken Sie zunächst im Berichtsformular die Möglichkeit des Benutzers, das Start- und Enddatum einzugeben, indem Sie die Datumszusammensetzung für die entsprechenden Eingabefelder auf „Datum“ festlegen:

Bestimmen wir die Zusammensetzung des Datums...

Zweitens verwenden Sie beim Übergeben von Parametern die integrierte Funktion Ende des Tages(). Kehren Sie dazu zum Berichtsformularmodul zurück und nehmen Sie die erforderlichen Änderungen vor (Ergänzungen sind fett hervorgehoben):

ProcedureFormActionsRatingServicesGenerate(Button) //((CONSTRUCTOR_WEEKEND_FORM_PROCEDURE_CALL(RatingServices) //Dieses Fragment wurde vom Konstruktor erstellt. // Bei der Wiederverwendung des Konstruktors // gehen manuell vorgenommene Änderungen verloren!!!

TabDoc = FormElements.TableField;

//))CONSTRUCTOR_OUTPUT_FORM_CALL_PROCEDURE

Co. netProcedures

Schauen wir uns weiterhin den Anfragetext an. Im Rahmen der Abfragebeschreibung gibt es eine weitere für uns neue Konstruktion – das Festlegen von Bedingungen für die Auswahl von Daten aus den Quelltabellen:

| SprNomenclature.Representation AS Repräsentation,

| SalesTurnover.RevenueTurnover AS Umsatz

| Verzeichnis.Nomenklatur AS RefNomenklatur

| LINKE VERBINDUNG RegisterAccumulations.Sales.Turnover(&StartDate,

| &Verfallsdatum,

| WIE MAN VERKAUFTUmsatz

| Software SalesTurnover.Nomenclature = SprNomenclature.Ssshka

| SprNomenclature.ThisGroup = False AND

| SprNomenclature.Type of Nomenclature = &Type of Nomenclature

Der Auswahlbedingung wird immer ein Schlüsselwort vorangestellt WO. Anschließend wird der Zustand selbst beschrieben. Bitte beachten Sie, dass die Felder der Quelltabellen, auf die die Bedingung angewendet wird, möglicherweise nicht in der Auswahlliste enthalten sind (wie in unserem Fall). Darüber hinaus verwendet unsere Bedingung den Abfrageparameter „Typ der Nomenklatur“.

ERGEBNISBETRAG (Umsatz) PO

Es beginnt immer mit einem Schlüsselwort ERGEBNISSE, gefolgt von einer Beschreibung der Summen, die im Abfrageergebnis enthalten sein werden. Unmittelbar nach dem Wort ERGEBNISSE beschreibt die Aggregatfunktionen, die in den Ergebnissen berechnet werden müssen. In unserem Fall wird der Betrag im Feld „Umsatz“ berechnet. Anschließend folgt das Schlüsselwort PO, danach werden die Gruppierungen beschrieben, in denen die Summen berechnet werden sollen. In unserem Fall fehlen sie und es wird nur das Schlüsselwort verwendet SIND ÜBLICH, Dies bedeutet, dass die Summen für die gesamte Tabelle als Ganzes berechnet werden.

Nachdem wir uns nun mit dem Text der Anfrage vertraut gemacht haben, starten wir 1C:Enterprise im Debugging-Modus und sehen, wie unser Bericht funktioniert.

Legen wir den Berichtszeitraum vom 01.03.2004 bis zum 30.04.2004 fest. Das Ergebnis wird so aussehen:

Jetzt ändern wir das Enddatum auf den 31.03.2004 und stellen sicher, dass die Daten für den 31. März im Bericht enthalten sind: