Primitive Datentypen in 1s. Verwenden definierter Typen

Dieser Artikel setzt die Artikelserie „Erste Schritte in der 1C-Entwicklung“ fort. Es geht um primitive Datentypen und die häufigsten Funktionen bei der Arbeit mit ihnen. Nachdem Sie das Material gelesen haben, erfahren Sie:

  • Welche Datentypen sind primitiv?
  • Wie kann mit Strings gearbeitet werden und welche Besonderheiten sind zu beachten?
  • Was sind die Feinheiten der Arbeit mit numerischen Ausdrücken?
  • Wie beschreibe ich ein Datum mit einem bestimmten Wert? Wie stelle ich ein leeres Datum ein?
  • Wie funktioniert die Typkonvertierung?
  • Null und Undefiniert – was sind sie und was sind die Unterschiede?
  • Wie kann festgestellt werden, um welchen Typ es sich bei einem Objekt/einer Variablen handelt?

Anwendbarkeit

Der Artikel wurde für die 1C-Plattformversion 8.3.4.496 geschrieben, daher sind die Informationen auch für die aktuelle Version der Plattform relevant. Allerdings ist zu beachten, dass in der Version 8.3.6.1977 neue Funktionen zum Arbeiten mit Strings hinzugefügt wurden. Wenn Sie also die Schritte aus dem Artikel wiederholen, wundern Sie sich nicht, wenn Sie im entsprechenden Abschnitt des Syntax-Assistenten einige Funktionen sehen, die in unserem Screenshot nicht dargestellt sind. Wir empfehlen Ihnen außerdem, sich mit der neuen StringWithNumber()-Methode vertraut zu machen, die in Plattform 8.3.10 hinzugefügt wurde.

Primitive Datentypen und einige ihrer Funktionen

Folgende primitive Datentypen werden unterschieden:

String-Konstanten

Primitiver Datentyp Linie(String-Konstante) besteht aus verschiedenen Zeichen. Linie wird immer in Anführungszeichen gesetzt. Beispiel einer String-Konstante:

Message.Text = „Es sind leere Daten vorhanden“;

Diese. Dem Attribut wird die Zeile „Es liegen leere Daten vor“ zugeordnet Text Objekt Nachricht. Alles, was in Anführungszeichen steht, wird als Zeichenfolge betrachtet.

Die Zeichenfolge kann aus beliebigen Zeichen bestehen. Zeichenfolgen können mehrzeilig sein. In diesem Fall muss jede neue Zeile in Anführungszeichen gesetzt werden. Zum Beispiel:

Text = „Ungültige Angaben ausgefüllt“
„Es ist unmöglich, das Dokument zu veröffentlichen“;

Das Semikolon wird nur am Ende der letzten Zeile platziert.

Es gibt eine andere Möglichkeit – den gesamten Text mit nur einem Anführungszeichen einzurahmen, aber jede neue Zeile muss mit einem vertikalen Streifen beginnen.

Diese Syntax wird am häufigsten in typischen Konfigurationen verwendet. Insbesondere in der Abfragesprache. Zum Beispiel:

Request.Text =
"WÄHLEN
| Mitarbeiter.Name AS Mitarbeiter,
| Mitarbeiter.Geburtsdatum AS Geburtsdatum
|VON
| Verzeichnis.Mitarbeiter WIE Mitarbeiter
|WO
| KEINE Mitarbeiter. Dies ist eine Gruppe“;

Es ist zu beachten, dass die Additionsoperation für Zeichenfolgen definiert ist. Dies ist keine arithmetische Operation, sondern wird als Verkettungsoperation bezeichnet.

Diese. Sie müssen beispielsweise zwei Zeilen mit einem Zusatzzeichen „+“ zwischen den Zeilen kombinieren:

Text = „Die Angaben sind falsch ausgefüllt“ + „Das Dokument kann nicht gebucht werden“;

Somit werden die Zeilen zusammengeführt. Die Verkettungsoperation ist natürlich auf mehr Zeichenfolgen anwendbar. Andere Operationen (Subtraktion, Multiplikation, Division) sind für Zeichenfolgen nicht zulässig.

Wenn ein Wort innerhalb einer Zeichenfolge in Anführungszeichen eingeschlossen werden muss, muss das Anführungszeichen innerhalb der Zeichenfolge durch ein doppeltes Anführungszeichen definiert werden. Zum Beispiel:

Text = „Fehler im Modul „Allgemeines Modul1““;

In diesem Beispiel beginnt die Zeichenfolge mit dem ersten Anführungszeichen. Das zweite und dritte Anführungszeichen nebeneinander weisen auf ein Anführungszeichen hin.

Und am Ende stehen drei Anführungszeichen: Das allerletzte Anführungszeichen schließt die Zeile ab, die beiden vorherigen deuten auf das Anführungszeichen hin.

Für Zeichenfolgen sind verschiedene Zeichemöglich: Identifizieren der ersten paar linken Zeichen, Identifizieren mehrerer Zeichen ganz rechts, Suchen nach einer Teilzeichenfolge innerhalb einer Zeichenfolge usw.

Alle diese Funktionen sind überall in der Konfiguration verfügbar.

Im Syntaxassistenten befinden sie sich im Abschnitt Allgemeine Beschreibung der integrierten SpracheIntegrierte FunktionenFunktionen zum Arbeiten mit Werten vom Typ String.

Es gibt eine ganze Reihe von Funktionen, die in der Regel ausreichen, um mit String-Konstanten zu arbeiten.

Schauen wir uns ein Beispiel für die Lösung eines Problems mithilfe von String-Funktionen an.

Die Aufgabe:

Es muss eine Funktion entwickelt werden. Als Parameter wird der Funktion eine beliebige Zeichenfolge übergeben. Die Zeichen in der Zeile können auch Zahlen sein.

Eine Folge von Ziffern (eine oder mehrere), die durch Leerzeichen von anderen Zeichen getrennt sind, bildet eine positive ganze Zahl.

Beispielsweise enthält die Zeichenfolge „72 ABC 6AP 31 54f -22“ zwei positive ganze Zahlen: 72 und 31. Abgesehen von Leerzeichen werden andere unbedeutende Zeichen (z. B. Tabulatoren, Wagenrückläufe) nicht verwendet. Die Funktion muss die Anzahl positiver Ganzzahlen zurückgeben.

Es muss sich in einem verwalteten Anwendungsmodul befinden. Es muss sichergestellt werden, dass es beim Systemstart aufgerufen wird. Definieren Sie eine Zeichenfolge mithilfe einer Variablen.

Öffnen wir also das verwaltete Anwendungsmodul und wählen Sie aus der Liste im Auswahlfeld im Konfigurator-Panel aus Modul Standardhandler AtSystemStart().

Innerhalb des Handlers definieren wir eine Variable Linie, Zum Beispiel:

Zeile = „72 ABC 6AP 31 54f -22“;

Quantity = Number ofIntegerNumbers(String);

Senden wir eine Nachricht über die Anzahl der Ganzzahlen:

Report("Die Zeile enthält " + Zahl + " Ganzzahlen");

In diesem Fall die Variable Menge wird implizit in einen Typ konvertiert String-Konstante. Anschließend wird die Verkettungsoperation für die drei Zeichenfolgen durchgeführt und die Nachricht übertragen.

Definieren wir den Anfang und das Ende (d. h. die Vorlage) der Funktion Anzahl der Ganzzahlen (String).

Schauen wir uns nun eine der möglichen Optionen zur Entwicklung einer Funktion an Anzahl der Ganzzahlen (String). Gleichzeitig lernen wir einige integrierte Funktionen kennen, die für die Arbeit mit Strings entwickelt wurden.

Zunächst sollten Sie sich mit der Funktion vertraut machen Symbolcode. Diese Funktion ruft den Code des Zeichens ab, das sich in der übergebenen Zeichenfolge an der Position mit der angegebenen Nummer befindet.

Syntax:

Zeichencode(,)

Optionen:

(erforderlich)

(optional) – Dies ist die Nummer des Zeichens in der Zeile, dessen Code Sie erhalten möchten. Die Nummerierung der Zeichen in einer Zeile beginnt bei 1.

Rückgabewert:
Code des übertragenen Zeichens. Der Code wird gemäß der Unicode-Kodierung zurückgegeben.

Bitte beachten Sie, dass der Parameter Der Standardwert ist 1.

Ein String kann auch aus einem Zeichen bestehen. Somit ist es möglich, Code 0 und Code 9 zu bestimmen, und die Codes aller anderen Ziffern liegen bekanntlich im Intervall dazwischen.

Definieren wir die entsprechenden Variablen und ihre Werte:

Code0 = CharacterCode(“0”);
Code9 = CharacterCode(“9”);

Um das Problem zu lösen, wählen wir das folgende Schema:

  1. Wenn die Zeile führende oder nachgestellte Leerzeichen in beliebiger Menge enthält, werden wir diese mit einer speziellen Funktion entfernen. Als nächstes werden wir uns für Gruppen von Zeichen zwischen Innenräumen interessieren. Wenn die Gruppe nur aus Ziffern besteht, handelt es sich um eine ganze Zahl. Es gibt eine spezielle Funktion, mit der die Position des ersten Leerzeichens bestimmt werden kann.
  2. Sobald Sie die Position des ersten Leerzeichens kennen, können Sie eine andere Funktion verwenden, um die Gruppe von Zeichen (Teilzeichenfolge) links vom Leerzeichen abzurufen.
  3. Lassen Sie uns die Zeichen analysieren, aus denen die Gruppe besteht, und feststellen, ob es sich um eine Ganzzahl handelt. Die identifizierten Ganzzahlen werden in einer speziellen Variablen summiert.
  4. Verkürzen wir die Anfangszeile, indem wir mit einer anderen Funktion alle Zeichen auswählen, die sich jetzt rechts vom Leerzeichen befinden. Bei diesem Leerzeichen kann es sich nicht nur um eins, sondern um eine ganze Reihe von Leerzeichen in einer Reihe handeln. Verwenden Sie daher in der verbleibenden Zeile eine spezielle Funktion, um alle Leerzeichen ganz links (in einer Reihe) zu entfernen und zu Punkt 2 zurückzukehren. Wir werden das wiederholen Schritte von Punkt 2 zu Punkt 4, bis wir die Bedingung erreichen, dass in der Zeile keine Leerzeichen mehr vorhanden sind. In diesem Fall stellt die verkürzte Zeichenfolge die letzte analysierte Zeichengruppe dar.

Schauen wir uns nun die Funktionen an, die wir zur Lösung des Problems benötigen.

AbbrLP
Syntax: AbbrLP()
Optionen: (erforderlich).
Schneidet Leerzeichen (nicht signifikante Zeichen) links vom ersten signifikanten Zeichen in der Zeichenfolge und rechts vom letzten signifikanten Zeichen in der Zeichenfolge ab.

Finden
Syntax: Find(,)
Optionen: (erforderlich), (erforderlich).
Gibt die Position des ersten Zeichens einer gefundenen Teilzeichenfolge zurück.
Die Nummerierung der Zeichen in einer Zeichenfolge beginnt bei 1. Wenn die Zeichenfolge die angegebene Teilzeichenfolge nicht enthält, wird 0 zurückgegeben. In unserem Fall verwenden wir ein Leerzeichen („ “) als Teilzeichenfolge.

ein Löwe
Syntax: Lev(,)
Optionen: (erforderlich), (erforderlich).
Wählt die ersten linken Zeichen einer Zeichenfolge aus. Mit dieser Funktion bestimmen wir Gruppen von Zeichen für die Analyse (von links bis zum ersten Leerzeichen).

StrLength
Syntax: StrLength()
Optionen: (erforderlich).
Ruft die Anzahl der Zeichen in der Zeichenfolge ab. Wir werden es verwenden, um die Länge einer Zeichenfolge zu bestimmen.
Funktion Symbolcode, das wir verwenden werden, um Gruppen von Zeichen zu identifizieren, die ganze Zahlen sind, wurde bereits beschrieben.

Rechts
Syntax: Right(,)
Optionen: (erforderlich), (erforderlich).
Wählt die Zeichen ganz rechts in einer Zeichenfolge aus. Mit dieser Funktion wählen wir den noch unbearbeiteten Teil des Strings aus.

Abk.L
Syntax: Abkürzung()
Optionen: (erforderlich).
Schneidet Leerzeichen (nicht signifikante Zeichen) links vom ersten signifikanten Zeichen in der Zeichenfolge ab. Wir verwenden diese Funktion, um mögliche Leerzeichen auf der linken Seite des Rests der Zeichenfolge zu entfernen.

Nachfolgend finden Sie einen möglichen Algorithmus für die Funktion mit Kommentaren.

Numerische Ausdrücke

Variablen von Modulen und Details von Datenbankobjekten können numerisch sein.
Es gibt eine Ziffernbegrenzung für eine Zahl. Bei numerischen Angaben darf die Länge des ganzzahligen Teils 32 Zeichen nicht überschreiten.

Die Genauigkeit des Bruchteils darf 10 Stellen nicht überschreiten. Wenn eine Variable beschrieben und ihr ein numerischer Wert zugewiesen wird, wird ihre Bittiefe nirgendwo aufgezeichnet. Allerdings gibt es auch Einschränkungen für Variablen.

Die Syntaxhilfe gibt an, dass die maximal zulässige Bittiefe für eine Zahl 38 Zeichen beträgt. Eine solche Einschränkung verhindert nicht die Lösung etwaiger wirtschaftlicher Probleme, d.h. Mit diesen Zahlen kann jeder Geldwert beschrieben werden.

Wenn Sie jedoch dennoch große Mengen beschreiben müssen, um einige mathematische Probleme zu lösen, dann gibt es in der Programmiertheorie Algorithmen, die es Ihnen ermöglichen, Zahlen mit beliebigen Dimensionen basierend auf bestehenden Einschränkungen zu beschreiben.

Auf Zahlen anwendbare Operationen:

  • gewöhnliche arithmetische Operationen (-, +, *, /). Multiplikation und Division haben Vorrang vor Addition und Subtraktion. Klammern haben die höchste Priorität. Es gibt auch unäre Operatoren + und –, deren Priorität unmittelbar nach den Klammern liegt;
  • Vorgang „Rest der Teilung“ (%). Beispiel: 12%5=2;
  • mathematische Funktionen, die für Zahlen verwendet werden können (trigonometrische Funktionen, Potenzierung, Quadratwurzel, Runden auf einen bestimmten Stellenwert, Auswahl des ganzzahligen Teils einer Zahl)

Wenn wir über die Genauigkeit numerischer Werte in Bezug auf Datenbankdetails sprechen, gibt es natürliche Einschränkungen.

Aber was Variablen betrifft, gibt es hier eine Besonderheit. Tatsächlich können Sie mit sehr großen Zahlen in Variablen arbeiten, aber Werte mit einer ganzzahligen Teillänge von nicht mehr als 32 Zeichen werden in der Informationsbasis gespeichert.

Boolesche Werte

Was den booleschen Datentyp betrifft, gibt es nur zwei Werte, True und False, die auf verschiedene Arten erhalten werden können.

Sie können beispielsweise Vergleichsoperationen zwischen Zahlen oder Datumsangaben verwenden. Als Ergebnis wird ein bestimmter boolescher Wert erhalten, der in Zukunft am häufigsten in bedingten Anweisungen und Schleifenoperatoren verwendet wird.

Literale vom Typ Datum

Es gibt zwei Möglichkeiten, ein Datum zu beschreiben. Einer von ihnen verwendet ein Literal. Das Literal wird in einfache Anführungszeichen geschrieben.

Zuerst wird das Jahr geschrieben, dann der Monat und dann der Tag.

Bei Bedarf können Sie auch die Uhrzeit angeben, denn Im 1C:Enterprise 8-System enthält jedes Datum sowohl Datum als auch Uhrzeit. Zum Beispiel:

DocumentDate = '20140315121020';

Wenn keine Zeit angegeben ist, wird sie standardmäßig auf Null gesetzt. Sie können in der Datumsbeschreibung ein beliebiges Trennzeichen verwenden. Zum Beispiel:

DocumentDate = '2014.03.15';

Die zweite Möglichkeit, das Datum zu ermitteln, ist die Verwendung der globalen Kontextfunktion Datum von(). In diesem Fall übergeben wir das Gleiche als Parameter an diese Funktion: Jahr, Monat, Tag, getrennt durch Kommas.

Sie können auch die Uhrzeit angeben. Wenn Sie es nicht angeben, wird standardmäßig der Beginn des Tages verwendet.

Im 1C:Enterprise 8-System steht ein leeres Datum ganz am Anfang des Kalenders. Aufnahmeoptionen:

EmptyDate = '00010101';
EmptyDate = Date(1,1,1);

Beide Einträge liefern das gleiche Ergebnis und dieses Datum wird als leer betrachtet.

Bequemlichkeit der Funktion Datum von() Der Punkt ist, dass wir ihm keine spezifischen Werte übergeben können, sondern einige Variablen. Das heißt, manchmal erstellen wir ein Datum, indem wir verschiedene Variablen sammeln.

Die Additionsoperation ist auf das Datum anwendbar. Die Additionsoperation fügt dem Datum die angegebene Anzahl von Sekunden hinzu.

Konvertierungen primitiver Datentypen

In einer Zuweisungsanweisung, in der mehrere Variablen summiert werden (z. B. Variable = A + B + C) ist eine Konvertierung primitiver Datentypen möglich. Die Datentypkonvertierung wird für den Wert des ersten Datentyps durchgeführt.

Wenn also der erste Datentyp eine Zeichenfolge ist, versucht das System, den gesamten Ausdruck in eine Zeichenfolge umzuwandeln. Wenn der erste Datentyp eine Zahl ist, versucht das System, einen numerischen Datentyp zu erhalten.

Und so gilt: Zeichenfolge + Zahl = Zeichenfolge. Manchmal kann einer Zeichenfolge eine Zahl hinzugefügt werden, wenn ein numerischer Wert aus der Zeichenfolge extrahiert werden kann (z. B. 123 + „456“).

Für den logischen Datentyp gelten folgende Ausdrücke:

Wahr UND 1 = Wahr;
Wahr UND 0 = Falsch.

Jede Zahl größer als Null wird in „Wahr“ umgewandelt, 0 wird in „Falsch“ umgewandelt.

Das Datum kann, wie bereits erwähnt, zur Nummer hinzugefügt werden. Dem booleschen Datentyp können auch Datumsangaben hinzugefügt werden.

In diesem Fall wird True in 1 und False in 0 umgewandelt.

Neben der Typkonvertierung in Operatoren ist auch eine explizite Typkonvertierung über entsprechende Funktionen möglich: String(), Number(), Date(), Boolean().

ZU Linie Jeder Datentyp wird konvertiert.

Die Zahl kann aus einem String oder einem Booleschen Wert erhalten werden. Boolesche Konvertierungen: True in 1, False in 0.

Sie können eine Zeichenfolge in „Datum“ umwandeln, wenn sie einen Datumswert enthält. Beispiel: Datum („20140315“). Wie bereits erwähnt, ist eine Konvertierung nach Position möglich:

Datum von(,).

Sie können Number und den booleschen Wert selbst in einen booleschen Wert konvertieren.

Diese Funktionen können im Programmcode verwendet werden, um eine explizite Typkonvertierung durchzuführen.

Als Datenbankfelder können die primitiven Datentypen Number, String, Date und Boolean fungieren.

Null- und undefinierte Werte

NULL ist ein Literal. Es wird in der Regel bei Datenbankabfragen verwendet, wenn zwei oder mehr Tabellen zusammengeführt werden.

Es sind die fehlenden Datensätze in der zweiten Tabelle, die mit einem NULL-Wert gefüllt werden. Diese. es ist eine Art fehlender Wert.

Dies muss künftig bei der Verarbeitung des resultierenden Ergebnisses berücksichtigt werden, da NULL nicht Null, sondern der entsprechende Datentyp ist.

Damit ein Wert verarbeitet werden kann, muss NULL in einen regulären Datentyp umgewandelt werden, der ausgegeben oder in arithmetischen Operationen verwendet werden kann.

Ein Wert vom Typ NULL kann auch in der integrierten Sprache abgerufen werden. Sie können eine Variable definieren und ihr denselben NULL-Wert zuweisen. Allerdings wird eine solche Zuweisung im Programmcode fast nie verwendet.

Diese. NULL ist eigentlich der Datentyp, der bei der Arbeit mit Abfragen erhalten wird. Der NULL-Wert in der Abfragesprache muss auf besondere Weise behandelt werden.

Der A=NULL-Vergleich funktioniert nämlich nicht auf der Abfrageebene; es müssen spezielle Funktionen verwendet werden. In der integrierten Sprache wird der Vergleich mit dem NULL-Wert jedoch korrekt gehandhabt.

Der Datentyp „Undefiniert“ ist ein nicht leerer Wert eines Attributs.

Wenn beispielsweise ein Verzeichnisattribut einen Link zu einem anderen Verzeichnis als Datentyp hat, ist der leere Wert dieses Attributs nicht gleich „Undefiniert“.

Dieser Typ (Undefiniert) erscheint zunächst, wenn wir eine bestimmte Variable haben und diese nicht initialisiert ist (der Datentyp ist nicht definiert).

Zweites Beispiel: Der Datentyp „Undefiniert“ wird von vielen integrierten Sprachfunktionen zurückgegeben, wenn die Aktion nicht ausgeführt werden kann.

Suchen Sie beispielsweise anhand des Namens nach einem Verzeichniselement, wenn ein Verzeichnis keinen solchen Elementnamen hat. Methode FindByName gibt den Wert zurück Nicht definiert.

Dabei Nicht definiert ein Schlüsselwort ist, wird es rot hervorgehoben. Dies ist auch ein wörtlicher Ausdruck zum Schreiben Nicht definiert Es ist nicht erforderlich, Anführungszeichen, Kommas, Klammern usw. zu verwenden.

Wenn es eine Liste von Dokumenten gibt und diese Liste leer ist (also keine Zeilen enthält), dann nimmt die aktuelle Zeile den Wert an Nicht definiert.

Wenn die Infobase über ein Attribut mit einem zusammengesetzten Datentyp verfügt, ist der leere Wert dieses Attributs gleich Nicht definiert.

Wenn der Datentyp jedoch nicht zusammengesetzt ist, entspricht der leere Wert dem leeren Wert dieses Typs (bei einem Datum ist dies die erste Sekunde der ersten Stunde des ersten Tages des ersten Monats des ersten Jahres).

NULL und Undefiniert sind sowohl Datentypen als auch Werte in diesen Typen und einer und nur einer. Für NULL ist es der Wert NULL, für Undefiniert ist es Undefiniert.

Datentyp Typ

Der Hauptzweck dieses Datentyps besteht darin, den Wert einer bestimmten Variablen oder eines Datenbankattributs mit einem bestimmten Typ zu vergleichen.

Diese. Im Algorithmus müssen Sie verstehen, um welchen Typ es sich bei einem bestimmten Objekt handelt.

Bemerkenswert ist, dass dieser Datentyp kein Literal hat. Wir können ihn nicht als NULL oder Undefiniert schreiben, aber wir können den Wert dieses Typs mithilfe von zwei Funktionen ermitteln Typ Und Typwert.

Um den Typ eines Objekts zu ermitteln (es kann sich um eine Variable, ein Datenbankattribut oder ein Formularattribut handeln), wird die Funktion verwendet Typwert.

An diese Funktion wird das Objekt übergeben, dessen Datentyp Sie ermitteln möchten.

Diese Funktion gibt den Typ des Typs als Rückgabewert zurück.

In Zukunft sollte es mit jeder Art von Interesse verglichen werden. Zum Beispiel:

Wenn TypeValue(Element) = Type („DirectoryLink.Nomenclature“), dann
Report("Dies ist ein Produkt");
endIf;

Lassen Sie uns abschließend das gesamte behandelte Material zusammenfassen.

Wir haben uns die Grundstrukturen der integrierten 1C-Sprache angesehen, gelernt, wie man Variablen und Operatoren verwendet, und herausgefunden, warum und wie man Prozeduren und Funktionen verwendet. Beachten Sie, dass im Grunde unser gesamter Programmcode bis zu diesem Zeitpunkt autark war – wir haben alles von Grund auf selbst geschrieben und einige Konfigurationsobjekte oder integrierte Sprachen auf ein Minimum beschränkt.

Wir werden diese Objekte im nächsten Artikel genauer untersuchen, also bleiben Sie dran! ;)

/
Metadatenobjekte erstellen und bearbeiten

Verwenden definierter Typen

Anwendungsbereich: verwaltete Anwendung, normale Anwendung.

1. Definierte Typen sollen Datentypen definieren, die häufig verwendete Entitäten beschreiben oder sich mit hoher Wahrscheinlichkeit bei der Implementierung einer Anwendungslösung ändern können. Sie ermöglichen die Wiederverwendung des beschriebenen Typs oder Satzes von Typen, ohne die Zusammensetzung an verschiedenen Stellen in der Konfiguration (in Details, Eigenschaften von Objekten, Formularen usw.) anzugeben.

Siehe auch den Artikel zum ITS: „Konfigurationsobjekte – Definierte Typen“

2.1. Um einen einfachen Typ und seine Qualifizierer zu definieren, die eine angewandte Bedeutung haben, die in verschiedenen Attributen, Ressourcen, Formularattributen, Layouts usw. verwendet wird. innerhalb eines beliebigen Subsystems oder in der gesamten Anwendungslösung. Dadurch wird sichergestellt, dass die Daten an allen Einsatzorten die gleiche Länge und Genauigkeit aufweisen und die Anpassung bei geänderten Anforderungen vereinfacht wird.
Zum Beispiel:

  • Rechnungsnummer- String, Länge 30. Reguliert das Format der Rechnungsnummer in verschiedenen Dokumenten: Empfang von Waren und Dienstleistungen, EintragBücherEinkaufen, Warenrückgabe vom Kunden usw.
  • Versandadresse- String, 500. Textdarstellung der Lieferadresse in Dokumenten Bestellung an den Lieferanten, LieferadresseTräger, in Bearbeitung Verkäufer, in Requisiten LieferadresseTräger dokumentieren Antrag auf Warenrückgabe durch den Kunden usw.

2.2. Definieren eines zusammengesetzten Typs, der häufig in Objekten eines Subsystems oder in der gesamten Anwendungslösung verwendet wird. Der definierte Typ garantiert die gleiche Zusammensetzung (Art) der Daten an allen Einsatzorten und vereinfacht zudem die Änderung und Implementierung von Subsystemen in Anwendungskonfigurationen.

Die Konfiguration umfasst beispielsweise ein Subsystem Interaktionen, das für die Durchführung von E-Mail-Korrespondenz, die Aufzeichnung von Anrufen und Besprechungen vorgesehen ist. Bei der Implementierung dieses Subsystems hat sich der Entwickler für die Zusammensetzung von Metadatenobjekten entschieden, die als „Interaktionskontakte“ fungieren können – das sind Elemente von Verzeichnissen Einzelpersonen, Partner, AnsprechpartnerPartner und diese Zusammensetzung der Typen im definierten Typ angegeben KontaktInteraktionen im Subsystem bereitgestellt. Der definierte Typ wird wiederum häufig in Objektdetails und Subsystemformularen (in Dokumenten) verwendet Treffen, Geplante Interaktion- tabellarischer Teil Teilnehmer, im Dokument NachrichtSMS– tabellarischer Teil Adressaten, im Dokument Anruf- Requisiten Abonnentenkontakt, in allgemeinen Formen Das Adressbuch, Wählen Sie Kontakt aus- Requisiten KontakteZum Thema,im Layout-Parameter Hierarchie der InteraktionenKontakt Dokumentenjournal Interaktionen usw.) Ansonsten ohne Verwendung eines definierten Typs KontaktInteraktionen Es wäre notwendig, Subsystemobjekte aus der Unterstützung zu entfernen und an allen aufgeführten Stellen die erforderliche Typenzusammensetzung anzugeben.

2.3. Bei der Entwicklung eines implementierten Subsystems – zur Neudefinition des Anwendungstyps, der während der Implementierung angegeben wird.
Beispiel: Subsystemtyp Lieferanten während der Implementierung kann durch einen Anwendungskonfigurationstyp ersetzt werden Gegenparteien.

3. Es ist aus bestimmten Gründen falsch, definierte Typen zu verwenden, um ein „Synonym“ für einen vorhandenen Typ zu definieren und Entitäten zu „ersetzen“ für die lokale (nicht Massen-) Verwendung innerhalb eines Subsystems (Konfiguration), ohne dass eine Implementierung in anderen Konfigurationen erforderlich ist der einfachen Modifizierung. Dies deutet in der Regel auf einen Konstruktionsfehler oder eine methodisch falsche Wahl des ursprünglichen Typnamens hin.

Melden Sie sich als Student auf der Website an

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

Interne Programmiersprache 1C 8.3 für Programmieranfänger: Datentypen in 1C

Jetzt wissen wir, wie wir den Computer zwingen können, unsere Befehle auszuführen (am Beispiel des Befehls „Report“) und wie wir bestimmte Parameter an die Befehle übergeben (den Text der Nachricht, die in Klammern nach „Report“ folgt). Wir haben auch festgestellt, dass alle Befehle durch Semikolons getrennt sind.

Datentypen

Eine der Hauptaufgaben der Programmierung ist die Datenverarbeitung. Lassen Sie uns also herausfinden, was die wichtigsten Datentypen in der 1C-Sprache sind:

  • Linie. Ein hervorragendes Beispiel für solche Daten ist ein Zitat aus einem Gedicht „Der Sturm bedeckt den Himmel mit Dunkelheit“. Bitte beachten Sie, dass Daten vom Typ String immer eingeschlossen sind Anführungszeichen.
  • Nummer. Wir alle sind mit dem Datentyp vertraut. Wir beschäftigen uns oft im wirklichen Leben damit: bei der Arbeit am Zahltag und dann im Laden. Wie Sie natürlich wissen, können Zahlen sein ganz Und gebrochen. Ein Beispiel für eine ganze Zahl: 1000000 und einen Bruch: 3,14. Der Bruchteil wird vom ganzen Teil getrennt Punkt. Die Zahlen haben auch ein Vorzeichen: Plus oder Minus.
  • Datum. Ein Beispiel für diese Art von Daten ist Ihr Geburtsdatum. Es umfasst Jahr, Monat und Tag. Beispielsweise fand am 12. April 1961 der erste bemannte Raumflug statt. In Computersprache sehen diese Daten so aus: „ 19610412 ". Versuchen Sie selbst herauszufinden, warum das so ist. Das Datum ist immer Einzelzitate ().

Aufgabe Nr. 6. Notieren Sie im Computerformat (unter Verwendung des entsprechenden Datentyps) die Antworten auf die folgenden Fragen:

  1. Wann wurde der erste künstliche Satellit gestartet?
  2. Wie hieß der erste Kosmonaut?
  3. Wie viele Planeten gibt es im Sonnensystem?

Überprüfe dich selbst

Aus den Ergebnissen der Aufgabe Nr. 7 lässt sich eine interessante Schlussfolgerung ziehen: Nicht nur Strings, sondern auch Daten jeglicher anderer Art können als Parameter an den Report-Befehl übergeben werden.

Datenverarbeitung

Lassen Sie uns nun endlich diese Daten verarbeiten! Welche Operationen können wir an Daten durchführen? Es kommt auf ihren Typ an.

Beispielsweise können wir Zeichenfolgen mithilfe des Additionszeichens miteinander verbinden:

Für komplexere arithmetische Ausdrücke verwenden Sie Klammern:

Aufgabe Nr. 8. Führen Sie die folgenden Beispiele auf Ihrem Computer aus.

Typensystem ist ein spezielles System, mit dem die von Anwendungslösungen verwendeten Daten organisiert werden. Mit dem Typsystem können Sie reale Informationen in Begriffen darstellen, die für 1C:Enterprise 8 „verständlich“ sind.

Das Typsystem bietet zahlreiche Möglichkeiten sowohl zur direkten Beschreibung der Geschäftslogik von Anwendungslösungen als auch zur Durchführung zwischengeschalteter Datenverarbeitungsaufgaben.

Eine Beschreibung des Typsystems finden Sie im Syntaxassistenten, in der integrierten Hilfe und in der Dokumentation.

Das Hauptmerkmal des Typsystems besteht darin, dass es in jeder Anwendungslösung Typen gibt. Diese Typen selbst werden auf Plattformebene definiert und sind immer vorhanden, unabhängig von den Aktionen des Entwicklers. Darüber hinaus können in einer bestimmten Anwendungslösung verschiedene Arten von Daten vorhanden sein, die dieser bestimmten Anwendungslösung innewohnen. Für solche Datentypen werden auf Plattformebene lediglich allgemeine Regeln für deren Erstellung und Vorlagen definiert. Und bestimmte Arten von Daten werden von der Plattform basierend darauf erstellt, wie der Entwickler die Struktur der Anwendungslösung erstellt und ändert.

Auf Plattformebene definierte Datentypen

Die Arten, mit denen Anwendungslösungen arbeiten können, sind sehr vielfältig. Es ermöglicht Ihnen, sowohl Datenverarbeitungsprobleme als auch die Aufgabe zu lösen, diese Daten dem Benutzer zu präsentieren und interaktiv damit zu arbeiten. Es gibt mehrere Hauptkategorien von Datentypen.

Primitive Typen

Primitive Datentypen sind Typen wie Linie, Nummer, Datum, Boolescher Wert und andere. Diese Typen sind für 1C:Enterprise 8 keine Besonderheit. Solche Datentypen existieren in der Regel auch in anderen Softwaresystemen.

Werte primitiver Typen sind einfache unteilbare Werte, bei denen einzelne Komponenten nicht unterschieden werden können. Zum Beispiel Werte wie Nummer kann 1, 8, 15 usw. sein. Um einen Wert eines primitiven Typs zu erstellen, müssen Sie ihn im Programmtext angeben wörtlich- symbolischer Bezeichner des Werts.

Generische Wertsammlungen

Es gibt auch komplexere Datentypen. Beispielsweise unterstützt die Plattform eine Reihe von Typen, bei denen es sich um generische Wertesammlungen handelt: Array, Struktur, Listenwerte und andere.

Gängige Typen

Darüber hinaus implementiert die Plattform spezifische Datentypen, die die eine oder andere Funktionalität von Anwendungslösungen implementieren: Text dokument, Tabellarisches Dokument, Speicherwerte, Abfrage Ersteller und andere.

Es werden auch allgemeine Typen genannt gemeinsame Gegenstände. Die Werte dieser Typen sind im Gegensatz zu den Werten primitiver Typen eine Sammlung von Werten einzelner Eigenschaften eines Objekts. Deshalb heißen sie Instanzen von Objekten.

Objektinstanzen werden mit einem speziellen integrierten Sprachoperator erstellt – Neu.

Schnittstellentypen

Mit Schnittstellentypen können Sie die visuelle Interaktion einer Anwendungslösung mit dem Benutzer organisieren. Hierbei handelt es sich hauptsächlich um Typen, die sich auf die Funktionsweise von Formularen und deren Elementen beziehen.

Arten von Daten, die in einer Anwendungslösung generiert werden

Zusätzlich zu den Datentypen, die auf Plattformebene definiert sind, kann eine bestimmte Anwendungslösung jedoch einzigartige Datentypen verwenden, die nur in dieser bestimmten Anwendungslösung vorhanden sind. Darüber hinaus unterstützt die Plattform die Arbeit mit diesen Datentypen vollständig, genauso wie mit Typen, die auf der Ebene der Plattform selbst definiert sind.

Die Entstehung neuer Datentypen in einer Anwendungslösung ist in der Regel mit der Verwendung von Anwendungskonfigurationsobjekten verbunden. Daher werden diese Typen auch genannt Anwendungstypen oder angewandte Objekte.

Auf Plattformebene werden mehrere Klassen (Vorlagen) von Anwendungsobjekten unterstützt, die selbst nicht in einer bestimmten Anwendungslösung verwendet werden können. Sie können beispielsweise Anwendungsobjektklassen auflisten, z Verzeichnisse, Dokumentation, Informationsregister, Charakteristische Typenpläne usw.

Für jede Klasse von Anwendungsobjekten wird die ihr entsprechende Grundfunktionalität definiert: Arten von Datenbanktabellen, die zum Speichern von Daten erstellt werden müssen, Standardformulare, Standardsprachobjekte, Rechtesätze usw.

Ein Entwickler hat beim Erstellen einer Anwendungslösung nicht die Möglichkeit, diese Klassen direkt zu verwenden, sondern kann seiner Anwendungslösung ein neues Konfigurationsobjekt hinzufügen, das die gesamte Funktionalität einer bestimmten Klasse erbt:

Beispielsweise kann ein Entwickler seiner Anwendungslösung ein neues Nachschlagewerk hinzufügen Nomenklatur Verzeichnisse, oder ein neues Dokument Kassenbericht, die die Funktionalität der Klasse erbt Dokumentation.

Unmittelbar nach einer solchen Hinzufügung stehen dem Entwickler neue Datentypen zur Verfügung, deren Zusammensetzung durch die Zugehörigkeit des Konfigurationsobjekts zu einer bestimmten Klasse von Anwendungsobjekten bestimmt wird.

Zum Beispiel nach dem Erstellen eines neuen Verzeichnisses Nomenklatur werden folgende Datentypen verfügbar:

  • DirectoryManager.Nomenclature,
  • DirectoryLink.Nomenklatur,
  • DirectoryObject.Nomenclature,
  • Verzeichnisstichprobe. Nomenklatur,
  • DirectoryList.Nomenclature.

Das Typsystem beschreibt nur die allgemeine „Struktur“ dieses Typs, die Regeln, nach denen Objekte dieses Typs gebildet werden. Der konkrete Name des Typs sowie die Zusammensetzung der Eigenschaften und Methoden des Objekts hängen davon ab, wie der Entwickler das Konfigurationsobjekt benennt und welche Details und Tabellenteile er beispielsweise hinzufügt.

Gleichzeitig nach der Erstellung eines neuen Akkumulationsregisters Vertriebsgesellschaft, wird die Zusammensetzung der neuen Datentypen unterschiedlich sein:

  • AkkumulationsregisterUnternehmensverkaufsleiter,
  • RegisterAccumulationSelection.SalesCompany,
  • RegisterAccumulationList.SalesCompany,
  • RegisterAccumulationSetRecords.SalesCompany,
  • AkkumulationsregisterRecord.Unternehmensverkäufe,
  • AkkumulationsregisterAufzeichnungsschlüssel.Unternehmensverkäufe.

Es ist noch einmal zu beachten, dass diese Datentypen nicht nativ von der Plattform unterstützt werden und nur in einer bestimmten Anwendungslösung vorhanden sind.

Ein weiterer Punkt, der hervorgehoben werden sollte, lässt sich am einfachsten anhand eines Beispiels veranschaulichen.

Nehmen wir an, in einer Anwendungslösung wurden zwei neue Verzeichnisse erstellt: Nomenklatur Und Preise. Obwohl beide Objekte die Funktionalität der entsprechenden Klasse erben Verzeichnisse, und für sie in der Anwendungslösung der gleiche Satz von Datentypen erstellt wurde, werden die „gleichen“ Datentypen unterschiedliche Datentypen sein. Zum Beispiel, DirectoryObject.Nomenclature Datentyp.

Definierte Typen sind ein neues 1C-Metadatenobjekt, das in Plattformversion 8.3 erschien. Das Objekt hat Hilfscharakter. Betrachten wir die definierten Typen und die Aufgaben, die dieses Objekt lösen kann.

Definiert werden neue Datentypen, deren Menge vom Entwickler der Anwendungslösung bestimmt wird. Es besteht aus mehreren gültigen Typen. Dieser Datentyp kann der Typ eines beliebigen Konfigurationsattributs sein, mit Ausnahme des definierten Typs selbst und des „ “-Objekts.

Holen Sie sich 267 Video-Lektionen zu 1C kostenlos:

Einstellungen

Für dieses Objekt gibt es nicht so viele Einstellungen:

Diese. Zusätzlich zum Namen und Synonym in 1C verfügen definierte Typen nur über eine Reihe von Objekttypen.

Ein Beispiel für die Verwendung definierter Typen in 1C 8.3

Für dieses Objekt gibt es vielfältige Einsatzmöglichkeiten.

Anwendungsbeispiele:

  • Sie können in der Konfiguration Details beschreiben, die sich auf Daten beziehen, die definiert werden, wenn das Fragment in eine bestimmte Konfiguration eingebettet wird.
  • Weisen Sie einem bestimmten Satz von Ereignisabonnements einen Typ definierter Daten zu. Wenn sich der Satz von Typen ändert, ändert sich die Quelle dynamisch für alle Abonnements.
  • Verwendung als Alternative zum Merkmalsplantyp

und vieles mehr.

Wenn Sie anfangen, 1C-Programmierung zu lernen, empfehlen wir Ihnen unseren kostenlosen Kurs (nicht vergessen).



In Verbindung stehende Artikel: