Wie erhalte ich den Typ (Typ) eines Dokuments in einer Anfrage? 1c Check-in-Anfrage für Verzeichnistyp

43
NULL – fehlende Werte. Nicht zu verwechseln mit Nullwert! NULL ist keine Zahl, entspricht nicht einem Leerzeichen, einer leeren Referenz oder Undefiniert. NULL ist ein typbildender Wert, d.h. Es gibt einen Typ NULL und einen einzelnen Wert dieses Typs. NULL... 26
Um Abfragen an Datenbanktabellen in der 1C-Plattform zu generieren und auszuführen, wird ein spezielles Objekt der Programmiersprache Query verwendet. Dieses Objekt wird durch Aufrufen des New Request-Konstrukts erstellt. Bequeme Anfrage... 18
Der Artikel bietet nützliche Techniken für die Arbeit mit 1C v.8.2-Abfragen sowie Informationen, die über die Abfragesprache nicht so bekannt sind. Ich versuche nicht, eine vollständige Beschreibung der Abfragesprache zu geben, sondern möchte nur auf ... eingehen. 13
LIKE – Operator zum Überprüfen einer Zeichenfolge auf Ähnlichkeit mit einem Muster. Analog zu LIKE in SQL. Mit dem SIMILAR-Operator können Sie den Wert des links davon angegebenen Ausdrucks mit der rechts angegebenen Musterzeichenfolge vergleichen. Die Bedeutung des Ausdrucks...

Die 1C-Abfragesprache ist einer der Hauptunterschiede zwischen den Versionen 7.7 und 8. Einer der wichtigsten Punkte beim Erlernen der 1C-Programmierung ist die Abfragesprache. In 1C 8.3 sind Abfragen das leistungsstärkste und effektivste Werkzeug zum Abrufen von Daten. Mit der Abfragesprache können Sie auf komfortable Weise Informationen aus der Datenbank abrufen.

Die Syntax selbst ähnelt stark dem klassischen T-SQL, mit der Ausnahme, dass Sie in 1C mit der Abfragesprache Daten nur über das Select-Konstrukt empfangen können. Die Sprache unterstützt beispielsweise auch komplexere Konstrukte (Anfrage innerhalb einer Anfrage). Abfragen in 1C 8 können sowohl in Kyrillisch als auch in Latein verfasst werden.

In diesem Artikel werde ich versuchen, über die wichtigsten Schlüsselwörter in der 1C-Abfragesprache zu sprechen:

  • wählen
  • erlaubt
  • verschieden
  • äußern
  • Erste
  • für den Wandel
  • Bedeutung
  • Werttyp (und REFERENCE-Operator)
  • Auswahl
  • gruppiere nach
  • haben
  • IST NULL
  • Ja NULL
  • Anschlüsse - rechts, links, intern, voll.

Sowie einige kleine Tricks der 1C-Sprache, mit denen Sie den Anfragetext optimal aufbauen können.

Zum Debuggen von Abfragen im 1C 8.2-System steht ein spezielles Tool zur Verfügung – die Abfragekonsole. Sie können die Beschreibung sehen und über den Link herunterladen.

Schauen wir uns die wichtigsten und interessantesten Operatoren der 1C-Abfragesprache an.

WÄHLEN

In der Abfragesprache 1C Enterprise 8 beginnt jede Abfrage mit einem Schlüsselwort WÄHLEN. In der 1C-Sprache gibt es keine UPDATE-, DELETE-, CREATE TABLE- und INSERT-Konstrukte; diese Manipulationen werden in der Objekttechnologie durchgeführt. Sein Zweck besteht nur darin, Daten zu lesen.

Zum Beispiel:

WÄHLEN
Aktueller Verzeichnisname
AUS
Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis

Die Abfrage gibt eine Tabelle mit Elementnamen zurück.

In der Nähe der Struktur WÄHLEN Sie können Schlüsselwörter finden FÜR DEN WANDEL, ERLAUBT, VERSCHIEDEN, ERSTE

ERLAUBT– wählt nur Datensätze aus der Tabelle aus, für die der aktuelle Benutzer Rechte hat.

VERSCHIEDEN– bedeutet, dass das Ergebnis keine doppelten Zeilen enthält.

AUSWAHL (FALL)

Sehr oft wird dieses Design von Programmierern unterschätzt. Ein Anwendungsbeispiel:

Aktuelles Verzeichnis.Name,

WANN Aktuelles Verzeichnis.Dienst DANN

"Service"

ENDE ANZEIGENomenklatur

Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis

Das Beispiel gibt einen Textwert im Feld „Artikeltyp“ zurück – „Produkt“ oder „Dienstleistung“.

WO

Das Design der 1C-Abfragesprache, das es Ihnen ermöglicht, den empfangenen Daten eine Auswahl aufzuerlegen. Bitte beachten Sie, dass das System alle Daten vom Server erhält und erst dann anhand dieses Parameters ausgewählt wird.

WÄHLEN
Verzeichnisname
AUS
Aktuelles Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis
WHERE CurrentDirectory.Service = TRUE

Im Beispiel wählen wir Datensätze aus, bei denen der Wert des Attributs „Service“ auf „True“ gesetzt ist. In diesem Beispiel könnten wir mit der folgenden Bedingung auskommen:

„WO IST DER SERVICE“

Im Wesentlichen wählen wir Zeilen aus, in denen der Ausdruck nach dem Schlüsselwort „True“ ist.

Sie können direkte Bedingungen in Ausdrücken verwenden:

WHERE-Code = „005215“

Mit dem Operator „VALUE()“ in den Bedingungen nutzen Sie den Zugriff auf vordefinierte Elemente und Aufzählungen in einer 1C-Anfrage:

WHERE Item Type = Value(Enumeration.Item Types.Product)

Zeitwerte können wie folgt angegeben werden:

WO Empfangsdatum > DATETIME(2012,01,01):

Am häufigsten werden Bedingungen als Parameter angegeben, die an die Anfrage übergeben werden:

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

WHERE NomenclatureGroup= &NomenclatureGroup

Dem Attributtyp kann eine Bedingung auferlegt werden, wenn es sich um einen zusammengesetzten Typ handelt:

Wenn Sie die Auswahl aus einer Werteliste oder einem Array einschränken müssen, können Sie Folgendes tun:

WO ist das Sammelregister B (&Liste der Dokumente zur Auswahl)

Die Bedingung kann auch komplex sein und aus mehreren Bedingungen bestehen:

WHERE Receipt Date > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

GRUPPIERE NACH

Design der 1C 8.2-Abfragesprache, die zum Gruppieren des Ergebnisses verwendet wird.

Zum Beispiel:

WÄHLEN
Wareneingang und Dienstleistungen.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Menge,
SUM(Receipt of GoodsServicesGoods.Amount) AS Betrag
AUS
Dokument. Wareneingang und Dienstleistungen. WIE Wareneingang und Dienstleistungen

GRUPPIERE NACH
WareneingangServicesGoods.Goods

Diese Anfrage fasst alle Belege nach Betrag und Menge nach Artikel zusammen.

Außer dem Schlüsselwort SUMME Sie können andere Aggregatfunktionen verwenden: MENGE, ANZAHL DER VERSCHIEDENEN, MAXIMAL, MINIMUM, DURCHSCHNITT.

HABEN

Ein Design, das oft vergessen wird, aber sehr wichtig und nützlich ist. Sie können die Auswahl in Form einer Aggregatfunktion festlegen. Dies ist im Design nicht möglich WO.

Beispiel für die Verwendung von HAVING in einer 1C-Anfrage:

WÄHLEN
Wareneingang und Dienstleistungen.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Menge,
SUM(Receipt of GoodsServicesGoods.Amount) AS Betrag
AUS
Dokument. Wareneingang und Dienstleistungen. WIE Wareneingang und Dienstleistungen

GRUPPIERE NACH
Empfang von Waren und Dienstleistungen

SUM(Receipt of GoodsServicesGoods.Quantity) > 5

Daher wählen wir die Anzahl der Produkte aus, bei denen mehr als 5 Stück eingetroffen sind.

BEDEUTUNG()

Zum Beispiel:

WHERE Bank = Value(Directory.Banks.EmptyLink)

WHERE Nomenklaturtyp = Wert(Verzeichnis.Nomenklaturtypen.Produkt)

WHERE Item Type = Value(Enumeration.Item Types.Service)

TYP auf Anfrage

Der Datentyp kann mithilfe der Funktionen TYPE() und VALUETYPE() oder mithilfe des logischen REFERENCE-Operators überprüft werden.

ÄUSSERN()

Der Express-Operator in 1C-Abfragen wird zum Konvertieren von Datentypen verwendet.

Syntax: ÄUSSERN(<Выражение>WIE<Тип значения>)

Damit können Sie Zeichenfolgenwerte in Datumswerte oder Referenzwerte in Zeichenfolgendaten usw. umwandeln.

In praktischen Anwendungen wird der Express()-Operator sehr häufig zum Konvertieren von Feldern unbegrenzter Länge verwendet, da Felder unbegrenzter Länge nicht ausgewählt, gruppiert usw. werden können. Wenn solche Felder nicht konvertiert werden, erhalten Sie eine Fehlermeldung Sie können Felder unbegrenzter Länge und Felder inkompatibler Typen nicht vergleichen.

WÄHLEN
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS-Ansicht
AUS
Informationsregister. WIE Kontaktinformationen

GRUPPIERE NACH
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Eine recht nützliche Funktion der 1C-Abfragesprache, die den Wert im Datensatz prüft und prüft, ob er gleich ist NULL, Dadurch können Sie es durch Ihren Wert ersetzen. Wird am häufigsten verwendet, um virtuelle Salden- und Umsatztabellen zu erhalten, um sie zu verbergen NULL und eine klare 0 (Null) setzen.

ISNULL(Pre-Month Taxes.AppliedFSS Benefit, 0)

Eine solche Funktion der 1C-Abfragesprache ISNULL gibt Null zurück, wenn kein Wert vorhanden ist, wodurch ein Fehler vermieden wird.

VERBINDEN

Es gibt 4 Arten von Verbindungen: LINKS, RECHTS, VOLLSTÄNDIG, INTERN.

LINKER und RECHTER ANSCHLUSS

Joins werden verwendet, um zwei Tabellen basierend auf einer bestimmten Bedingung zu verknüpfen. Funktion wann LINKS BEITRETEN besteht darin, dass wir die erste angegebene Tabelle vollständig nehmen und die zweite Tabelle bedingt binden. Die Felder der zweiten Tabelle, die nicht durch die Bedingung gebunden werden konnten, werden mit dem Wert gefüllt NULL.

Ein Beispiel für einen Left Join in einer 1C-Anfrage:

Es wird die gesamte Tabelle zurückgegeben und das Feld „Bank“ nur an den Stellen ausgefüllt, an denen die Bedingung „Counterparties.Name = Banks.Name“ erfüllt ist. Wenn die Bedingung nicht erfüllt ist, wird das Feld Bank auf gesetzt NULL.

RIGHT JOIN in der Sprache 1C 8.3 absolut ähnlich Linker Anschluss, mit Ausnahme eines Unterschieds: in ANSCHLUSSRECHT Die „Haupttabelle“ ist die zweite, nicht die erste.

VOLLSTÄNDIGE VERBINDUNG

VOLLSTÄNDIGE VERBINDUNG Der Unterschied zu links und rechts besteht darin, dass alle Datensätze aus zwei Tabellen angezeigt werden und nur diejenigen verbunden werden, die per Bedingung verbunden werden können.

Zum Beispiel:

VOLLSTÄNDIGE VERBINDUNG
Verzeichnis.Banken WIE Banken

VON

Die Abfragesprache gibt beide Tabellen nur dann vollständig zurück, wenn die Bedingung „Datensätze verbinden“ erfüllt ist. Im Gegensatz zu einem Links-/Rechts-Join ist es möglich, dass NULL in zwei Feldern erscheint.

INNER JOIN

INNER JOIN Der Unterschied zu „full“ besteht darin, dass nur die Datensätze angezeigt werden, die gemäß einer bestimmten Bedingung verbunden werden könnten.

Zum Beispiel:

AUS
Verzeichnis. Gegenparteien AS-Kunden

INNER JOIN
Verzeichnis.Banken WIE Banken

VON
Clients.Name = Banks.Name

Diese Abfrage gibt nur Zeilen zurück, in denen die Bank und die Gegenpartei denselben Namen haben.

Abschluss

Dies ist nur ein kleiner Teil der Syntax aus der 1C 8-Abfragesprache; in Zukunft werde ich versuchen, einige Punkte detaillierter zu betrachten, zu zeigen und vieles mehr!

Mit 1C können Sie die Buchhaltung erheblich vereinfachen oder einfach jede Organisation verwalten, sei es ein kleines Geschäft oder ein großes Unternehmen. Das Programm ist ein großes Datenbankverwaltungssystem. Um bei all dem nicht verwirrt zu werden, müssen Sie in der Lage sein, verschiedene einfache Aktionen auszuführen und das Wesentliche zu verstehen. Als Nächstes erfahren Sie, wie Sie die Art der Werte in einer Anfrage in 1C überprüfen, was sie im Allgemeinen sind und wie Sie sie unterscheiden können.

Werttypen

1C: Das Unternehmen hat in neuen Versionen (Plattform 8.2) eine Sonderfunktion integriert. Damit können Sie beliebigen Namen oder Elementen des Datensystems beliebige spezielle Parameter hinzufügen. Dies wurde durchgeführt, um die Bearbeitung des Systems und das Hinzufügen neuer Elemente zu vereinfachen. Diese Funktion wird „Werttyp“ genannt.

Tatsächlich ist dies eines der Grundkonzepte, die die meisten Programmiersprachen enthalten. Damit können Sie verschiedene Daten klassifizieren. Zum Beispiel: Datumsangaben, Zahlen, Zeichenfolgen, Links. Dies sind nur grundlegende Klassifizierungen. Es kann sein, dass es noch viel mehr davon gibt. Nehmen wir an, wenn Sie Informationen über Städte in Ihr System eingeben, können Sie Folgendes verwenden: Kontinent, Land, Region usw.

Untersuchung

Sie können ein bestimmtes Feld mithilfe einer Abfragesprache überprüfen. Oder besser gesagt seine Funktionen: TYPE VALUE. Das heißt, wenn wir herausfinden möchten, welche Art von Informationen die interessierende Zelle enthält, müssen wir den Befehl verwenden.

WERTTYP(Wert) = TYP(Zeichenfolge)

Im obigen Beispiel haben wir den einfachsten Typ mit dem Befehl definiert. Ein weiteres Beispiel für die Anforderungsvalidierung:

Dokumentation

Es gibt eine ganze Reihe von Typen; Benutzer können sich mit den ersten begnügen oder eigene eingeben, um die Informationsbasis zu verbessern. Hier sind einige davon.

  • DocumentLink. Es wird zum bequemen Speichern von Verweisen auf verschiedene Objekte in anderen Teilen des Systems verwendet.
  • DocumentObject – Bearbeiten von Dokumenten.
  • DocumentSelection – Sortieren von Objekten aus der Datenbank.

Darüber hinaus gibt es spezielle Begriffe, die beliebige Daten charakterisieren:

  • bilden;
  • Linie;
  • boolescher Wert;
  • Nummer;
  • Datum von;
  • Array;
  • Kontrollkästchen;
  • Bild.

Dies sind nur einige davon. Jedes Objekt kann nur etwas aus dieser Liste sein. Boolean ist ein spezieller Parameter, der zwei Werte annehmen kann: wahr oder falsch. Es gibt auch spezielle Tags, mit denen Sie die Anfrage anpassen können: wann, wo, wie, sonst usw. Sie legen den Verhaltensalgorithmus des Programms fest. 1C zeichnet sich dadurch aus, dass diese Wörter hier, wie alles andere auch, auf Russisch eingegeben werden können.

Es ist wichtig zu verstehen, dass all dies von Anfängern und Laien als chinesische Alphabetisierung wahrgenommen wird. Um zu verstehen, wovon wir sprechen, und um 1C effektiv zu nutzen, müssen Sie die Grundlagen der Programmierung kennen. Im Allgemeinen ist die Überprüfung des Typs einer Anfrage im 1C-Programm im Vergleich zu anderen Aktionen recht einfach.

Aufmerksamkeit! Dies ist eine Einführungsversion der Lektion, deren Materialien möglicherweise unvollständig sind.

Melden Sie sich als Student auf der Website an

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

Abfragesprache 1C 8.3 für Programmieranfänger: Funktionen und Operatoren für die Arbeit mit Typen (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Denken Sie daran, dass jedes Attribut (Eigenschaft, Feld) eines Verzeichnisses, Dokuments oder eines anderen Anwendungsobjekts seinen eigenen Typ hat. Und diesen Typ können wir uns im Konfigurator ansehen:

In der Abfragesprache gibt es eine ganze Klasse von Funktionen und Operatoren für die Arbeit mit Detailtypen. Schauen wir sie uns an.

Funktion WERTTYP

Diese Funktion nimmt einen Parameter (Wert) und gibt seinen Typ zurück. Für die im Bild (oben) beschriebenen Requisiten Schmecken Verzeichnis Essen Folgendes wird zurückgegeben:

Schauen wir uns nun die Requisiten an Besonderes Merkmal im Verzeichnis Städte:

Sie sehen, dass dieses Attribut einen von mehreren Typen haben kann: Linie, Verzeichnis.Geschmäcker, Verzeichnis.Farben. Diese Art von Details wird COMPOSITE genannt.

Wenn wir versuchen, den Wert eines solchen Details im 1C:Enterprise-Modus einzugeben, fragt uns das System, welche Art von Wert eingegeben wird:

Und erst nach unserer Auswahl können wir den Wert des ausgewählten Typs eingeben.

Somit sind Verzeichniselemente desselben Typs ( Verzeichnis.Städte) kann im selben Attribut gespeichert werden ( Besonderes Merkmal) Werte verschiedener Typen (String, Farben oder Geschmacksrichtungen).

Sie können sich davon selbst überzeugen, indem Sie auf die Elemente des Verzeichnisses klicken Städte im 1C:Enterprise-Modus. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar.

Hier ist der Unterscheidungsmerkmalswert ein Verzeichniselement Aromen:

Hier ist die Zeile:

Und hier ist im Allgemeinen ein Element des Nachschlagewerks Farben:

Das sind die Möglichkeiten, die uns ein zusammengesetzter Datentyp eröffnet!

Ich frage mich, wie sich die Funktion verhalten wird TYPWERTE auf den Requisiten DistinctiveElement, mit einem zusammengesetzten Datentyp:

Das ist schon sehr interessant. Schauen wir uns jede Zeile einzeln an.

Die Art der Bedeutung des Unterscheidungsmerkmals für das Element Russland ist gleich NULL. Dies ist das erste Mal, dass wir dieser Art begegnen. Werte dieser Art dienen ausschließlich der Ermittlung des fehlenden Wertes bei der Arbeit mit der Datenbank.

Dies ist wahr, da das Element „Russland“ eine Gruppe und kein gewöhnliches Verzeichniselement ist Städte, also hat es kein Feld Besonderes Merkmal. Und der Typ eines fehlenden Werts ist, wie wir oben gelesen haben, immer gleich NULL.

Der Werttyp des Unterscheidungsmerkmals für Perm ist gleich Aromen. Dies trifft zu, da der in der Datenbank für die Stadt Perm eingetragene Wert des Unterscheidungsmerkmals eine Verknüpfung zum Verzeichniselement darstellt Aromen.

Für Krasnojarsk ist der Attributtyp gleich Farben, da der in der Datenbank ausgewählte Wert ein Link zu einem Verzeichniselement ist Farben.

Für Woronesch ist der Attributtyp gleich Linie, da der in die Datenbank eingegebene Wert eine reguläre Zeichenfolge ist.

Indien ist wieder eine Gruppe, daher gibt es keine Bedeutung. Und der Typ des fehlenden Werts ist, wie wir uns erinnern, gleich NULL.

Hier ist das Ding. Wenn Sie zum Verzeichniselement gehen Städte mit Namen Sao Paulo, dann sehen Sie das Feld Besonderes Merkmal absolut überhaupt nicht ausgefüllt. Es ist leer. A Alle leeren Felder eines zusammengesetzten Typs haben eine besondere Bedeutung NICHT DEFINIERT .

MIT NICHT DEFINIERT wir begegnen auch zum ersten Mal. Bedeutung NICHT DEFINIERT Wird verwendet, wenn ein leerer Wert verwendet werden muss, der keinem anderen Typ angehört. Das ist genau unsere Situation. Und der Werttyp NICHT DEFINIERT, wie Sie wahrscheinlich schon vermutet haben, ist gleich NULL.

Funktionstyp

Es benötigt nur einen Parameter – den Namen des primitiven Typs ( LINIE, NUMMER, DATUM, BOOLEAN) oder den Namen der Tabelle, deren Linktyp Sie erhalten möchten.

Das Ergebnis dieses Konstrukts ist ein Wert vom Typ Type für den angegebenen Typ.

Klingt vage, nicht wahr?

Schauen wir uns die Anwendung dieses Designs an und alles wird sofort passen.

Angenommen, wir müssen alle Verzeichniseinträge auswählen Städte, die Verbundstützen haben Besonderes Merkmal hat einen Wert vom Typ LINIE:

Wählen wir nun alle Datensätze aus, die Attributwerte haben Besonderes Merkmal sind Links zu Verzeichniselementen Farben(Tisch Verzeichnis.Farben):

Rückzug

Wie Sie sich erinnern, einige Elemente des Verzeichnisses Städte Ich habe keine Requisiten Besonderes Merkmal. Funktion TYPWERTE für solche Elemente erzeugt es NULL.

Wie können Sie solche Elemente in einer Abfrage auswählen? Hierfür steht ein spezieller logischer Operator zur Verfügung IST NULL(nicht zu verwechseln mit der Funktion IST NULL, die wir weiter unten betrachten werden). Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar.

Hier ist ein Beispiel für seine Verwendung:

Großartig. Aber ist Ihnen aufgefallen, dass es kein Element des Werttyps „Sao Paulo, Requisiten“ gibt? Besonderes Merkmal die er auch ausgab NULL. Warum ist das geschehen?

Aber die Sache ist, dass die Situation für Gruppen (Russland, Indien, Brasilien) gilt, für die die Angaben ausgefüllt werden müssen Besonderes Merkmal grundsätzlich unmöglich, da sie überhaupt nicht vorhanden sind, unterscheidet sich von der Situation für das Sao Paulo-Element, für das das Ausfüllen der Requisiten möglich ist, aber es wird einfach nicht ausgefüllt und entspricht, wie wir uns erinnern, einem besonderer Wert NICHT DEFINIERT.

Um alle Datensätze auszuwählen, die über die erforderlichen Anforderungen verfügen Besonderes Merkmal vorhanden, aber nicht ausgefüllt, sollte eine andere Konstruktion verwendet werden:

Der Vergleich mit UNDEFINED zur Bestimmung leerer (ungefüllter) Attribute funktioniert jedoch nur für zusammengesetzte Typen.

Der logische Operator IS NULL hat übrigens eine Negationsform, die so aussieht:

Logischer Operator LINK

Wählen wir zum Beispiel aus dem Verzeichnis aus Städte nur die Datensätze, die den Wert eines zusammengesetzten Attributs haben Besonderes Merkmal sind ein Link zu einem Verzeichniselement Aromen:

Wie Sie sich erinnern, könnten wir das gleiche Problem mit lösen TYPWERTE Und TYP:

Funktion ISNULL

Die Funktion soll einen Wert ersetzen NULL zu einer anderen Bedeutung.

Wir erinnern uns an die Bedeutung NULL wird zurückgegeben, wenn das angeforderte Attribut (Feld, Eigenschaft) nicht vorhanden ist.

Zum Beispiel Requisiten Besonderes Merkmal für Verzeichnisgruppen Städte:

Funktion IST NULL hilft uns, einen anderen Wert auszugeben, wenn dieser Wert gleich ist NULL. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar. Sei in diesem Fall die Zeile „There is no such prop!“:

Es stellt sich heraus, dass wenn der erste Parameter der Funktion IST NULL nicht gleich NULL, dann kehrt er zurück. Wenn es NULL ist, wird der zweite Parameter zurückgegeben.

EXPRESS-Funktion

Diese Funktion gilt nur für Felder, die einen zusammengesetzten Typ haben. Ein hervorragendes Beispiel für einen solchen Bereich ist der Immobilienbereich Besonderes Merkmal für Verzeichniselemente Städte.

Wie wir uns erinnern, können zusammengesetzte Felder einer von mehreren im Konfigurator angegebenen Typen sein.

Für Feld Besonderes Merkmal solche gültigen Typen sind LINIE, Verzeichnis.Farben Und Verzeichnis.Geschmäcker.

Manchmal besteht die Notwendigkeit, die Werte eines zusammengesetzten Felds in einen bestimmten Typ umzuwandeln.

Lassen Sie uns alle Feldwerte auflisten Besonderes Merkmal tippen Referenz.Farben:

Als Ergebnis alle Elementwerte, die vom Typ waren Verzeichnis.Farben, blieben gefüllt und wurden in den angegebenen Typ umgewandelt. Alle Werte anderer Typen ( LINIE, Verzeichnis.Geschmäcker) sind jetzt gleich NULL. Dies ist die Besonderheit der Typumwandlung mithilfe der Funktion ÄUSSERN.

Sie können einen Typ entweder in einen primitiven Typ umwandeln ( BOOLEAN, NUMMER, LINIE, DATUM) oder auf einen Referenztyp. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar. Der Typ, in den die Umwandlung durchgeführt wird, muss jedoch in der Liste der Typen für dieses zusammengesetzte Feld enthalten sein, andernfalls gibt das System einen Fehler aus.

Nimm den Test

Test starten

1. Wählen Sie die zutreffendste Aussage

2. Details, die Werte eines von mehreren Typen annehmen können, werden aufgerufen

3. Um den Typ des Attributwerts zu bestimmen, verwenden Sie die Funktion

4. Leere Details eines zusammengesetzten Typs sind wichtig

Schauen wir uns jetzt den Rest an.

Funktionen zum Arbeiten mit Zeichenfolgen in 1C-Abfragen

Es gibt nur wenige Funktionen und Operatoren für die Arbeit mit String-Daten in 1C-Abfragen.

Erstens können Zeichenfolgen in Abfragen hinzugefügt werden. Verwenden Sie dazu den „+“-Operator:

Anfrage. Text = „AUSWÄHLEN
" "Linie: " " + Quellname
;

Zweitens können Sie einen Teil der Zeile auswählen. Nutzen Sie dazu die Funktion UNTERSTRUKTION. Die Funktion ähnelt der integrierten 1C-Sprache. Es hat drei Parameter:

  1. Quellzeichenfolge.
  2. Die Nummer des Zeichens, mit dem die ausgewählte Zeile beginnen soll.
  3. Figuren.

Anfrage. Text= "WÄHLEN
SUBSTRING("
"Linie: " ", 4, 3) ALS Ergebnis"; // Ergebnis: ok

Funktion IST NULL

NULL ist ein spezieller Datentyp auf der 1C:Enterprise-Plattform. Es ist auch der einzig mögliche Wert dieser Art. NULL kann in mehreren Fällen in Abfragen vorkommen: beim Verbinden von Abfragequellen, wenn in einer der Tabellen kein entsprechender Wert gefunden wurde; beim Zugriff auf die Details eines nicht vorhandenen Objekts; wenn in der Liste der Abfragefelder NULL angegeben wurde (z. B. bei der Kombination von Auswahlergebnissen aus mehreren Tabellen) usw.

Denn NULL ist weder null, noch die leere Zeichenfolge, noch nicht einmal ein Wert Nicht definiert, Oft ist es sinnvoll, ihn durch einen nützlicheren Datentyp zu ersetzen. Dafür ist die Funktion konzipiert. IST NULL.

Es hat zwei Parameter:

  1. Der überprüfte Wert.
  2. Der Wert, durch den der erste Parameter ersetzt werden soll, wenn er sich als NULL herausstellt.

Anfrage. Text= "WÄHLEN
ISNULL(Source.Remainder, 0) AS Remainder"
; // Wenn das Ergebnis der Anfrage das Feld rest = NULL ist,
// dann wird es durch 0 ersetzt und Sie können damit mathematische Operationen durchführen

Funktionen LEISTUNG Und EINFÜHRUNGSLINKS

Diese Funktionen dienen dazu, Zeichenfolgendarstellungen verschiedener Werte zu erhalten. Das heißt, sie konvertieren Referenzen, Zahlen, Boolesche Werte usw. in Klartext umwandeln. Der Unterschied zwischen ihnen besteht in der Funktion LEISTUNG Konvertiert beliebige Datentypen in Text (String) und die Funktion EINFÜHRUNGSLINKS- nur Links und gibt die restlichen Werte unverändert zurück, nicht konvertiert.

Anfrage. Text= "WÄHLEN
REPRESENTATION(TRUE) AS Boolean,
Darstellung (4) als Zahl,
DARSTELLUNG (Quelle.Link) ALS Link,
REPRESENTATION(DATETIME(2016,10,07)) AS Date“
;
// Boolean = „Ja“, Zahl = „4“, Link = „Dokument Geldeingangsbestellung Nr.... von…“
// Datum="07.10.2016 0:00:00"

Anfrage. Text= "WÄHLEN
REPRESENTATIONREFERENCE(TRUE) AS Boolean,
REPRÄSENTATIONREFERENZ(4) ALS NUMMER
PRESENTINGLINK(Source.Link) AS Link,
REPRESENTATIONREFERENCE(DATETIME(2016,10,07)) AS Datum"
;
// Boolean = TRUE, Number = 4, Link = „Dokument Geldeingangsbestellung Nr.... von…“
// Datum=07.10.2016 0:00:00

Funktionen TYP Und TYPWERTE

Funktion TYP gibt den Datentyp der 1C:Enterprise-Plattform zurück.

Anfrage. Text= "WÄHLEN
Nummer eingeben)
TYP (Zeichenfolge),
TYP (Dokument. Ausgabenzahlungsauftrag)“
;

Funktion TYPWERTE gibt den Typ des an ihn übergebenen Werts zurück.

Anfrage. Text= "WÄHLEN
WERTETYP (5) AS Zahl,
TYP ("
"Linie" ") AS-String,
TYPE (Source.Link) AS-Referenz
Aus dem Verzeichnis.Source AS Source"
;
//Number=Number, String=String, Directory = DirectoryLink.Source

Diese Funktionen sind praktisch, wenn Sie beispielsweise herausfinden müssen, ob es sich bei einem in einer Anfrage empfangenen Feld um einen Wert eines bestimmten Typs handelt. Lassen Sie uns beispielsweise die Kontaktinformationen von Gegenparteien aus dem Informationsregister „ContactInformation“ abrufen (dort werden nicht nur Kontakte von Gegenparteien, sondern auch von Organisationen, Einzelpersonen usw. gespeichert):

Anfrage. Text= "WÄHLEN

AUS

WO
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)"
;

Funktion BEDEUTUNG

Funktion Bedeutung ermöglicht Ihnen die direkte Verwendung von 1C-Konfigurationsobjekten in einer Anfrage, ohne .

Fügen wir dem vorherigen Beispiel eine weitere Bedingung hinzu. Sie müssen lediglich die Telefonnummern Ihrer Gegenparteien erhalten.

Anfrage. Text= "WÄHLEN
KontaktInformationen.Einführung
AUS
Informationsregister. WIE Kontaktinformationen
WO
WERTE TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Es ist zu beachten, dass diese Funktion nur mit vordefinierten Werten verwendet werden kann, d. h. mit Werten, die direkt aus dem Konfigurator abgerufen werden können. Das heißt, die Funktion BEDEUTUNG kann nicht mit von Benutzern erstellten Verzeichniselementen verwendet werden, kann aber mit Aufzählungen, mit vordefinierten Verzeichniselementen und mit Werten arbeiten EmptyLink.

Operator VERKNÜPFUNG

Operator VERKNÜPFUNG soll die von einer Anfrage zurückgegebenen Werte daraufhin überprüfen, ob sie zu einem bestimmten Referenztyp gehören. Die gleiche Aufgabe kann mithilfe von Funktionen erfüllt werden TYP Und TYPWERTE(die einen größeren Anwendungsbereich haben und oben besprochen wurden).

Beispielsweise könnte die Aufgabe, Kontaktinformationen für Gegenparteien auszuwählen, folgendermaßen gelöst werden:

Anfrage. Text= "WÄHLEN
KontaktInformationen.Einführung
AUS
Informationsregister. WIE Kontaktinformationen
WO
„ContactInformation.Object LINK Directory.Counterparties“
;

Operator ÄUSSERN

Operator ÄUSSERN wird in 1C-Abfragen in zwei Fällen verwendet:

  • wenn Sie die Eigenschaften eines primitiven Typs ändern müssen;
  • wenn Sie ein Feld mit einem zusammengesetzten Datentyp in ein Feld mit einem einzelnen Typ umwandeln müssen.

Zu den primitiven Datentypen gehören: Zahl, Zeichenfolge, Datum, boolescher Wert. Einige dieser Datentypen weisen zusätzliche Merkmale auf. Typ Nummer hat Länge und Präzision, Typ Linie - Länge oder unbegrenzt.

Operator ÄUSSERN ermöglicht es Ihnen, nicht den Datentyp, sondern zusätzliche Merkmale zu ändern. Er kann beispielsweise einen String mit unbegrenzter Länge in einen String mit begrenzter Länge umwandeln. Dies kann nützlich sein, wenn Sie Abfrageergebnisse nach einem solchen Feld gruppieren müssen. Eine Gruppierung nach Feldern mit unbegrenzter Länge ist nicht möglich, daher konvertieren wir sie in eine Zeichenfolge mit einer Länge von 200 Zeichen.

Anfrage. Text= "WÄHLEN
MENGE (VERSCHIEDENE Ankunft von Waren und Dienstleistungen. Link) AS Link
AUS
Dokument. Empfang von Waren und Dienstleistungen. WIE Empfang von Waren und Dienstleistungen
GRUPPIERE NACH
EXPRESS(Eingang von Waren und Dienstleistungen. Kommentar AS ROW (200))“
;

In einigen Fällen werden Abfragen an Felder mit einem zusammengesetzten Datentyp möglicherweise von der 1C-Plattform nicht optimal verarbeitet. Dies führt zu längeren Abfrageausführungszeiten, daher kann es sinnvoll sein, den zusammengesetzten Typ vorab in einen einzelnen Typ zu konvertieren.

Anfrage. Text= "WÄHLEN
EXPRESS(WarenbewegungUmsatz.Auftrag als Dokument.Kundenauftrag).Datum als Auftragsdatum,
WarenverkehrUmsatz.Nomenklatur
AUS
RegisterAkkumulationen.Warenbewegung.Umsatz AS WarenbewegungUmsatz
WO
WarenbewegungUmsatz.Auftrag LINK Dokument.Kundenauftrag"
;

Betreiber AUSWAHL Und IST NULL

Operator AUSWAHLähnlich dem Operator WENN in der integrierten 1C-Sprache, verfügt jedoch über etwas eingeschränkte Funktionalität.

Nehmen wir an, wir möchten Kontaktinformationen aus dem Informationsregister ContactInformation erhalten und gleichzeitig in einem separaten Anfragefeld angeben, ob es sich um eine Gegenpartei oder eine Einzelperson handelt.

Anfrage. Text= "WÄHLEN
ContactInformation.Introduction,
AUSWAHL
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
DANN "
Gegenpartei "
ANDERE WAHL
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
DANN "
Individuell"
ELSE „Jemand anderes“ "
ENDE
ENDE ALS EIGENTÜMER
AUS
Informationsregister. Kontaktinformationen „AS-Kontaktinformationen“
;

Wie aus dem Beispiel ersichtlich ist, im Design AUSWAHL Nach dem Wort steht immer eine Bedingung WANN; Wert, der angewendet wird, wenn die Bedingung nach dem Wort wahr ist DANN und der Wert, der angewendet wird, wenn die Bedingung nicht erfüllt ist, nach dem Wort ANSONSTEN. Alle drei Designelemente AUSWAHL sind verpflichtend. Element weglassen ANSONSTEN, genauso wie bei Verwendung des Operators WENN In der integrierten 1C-Sprache ist dies unmöglich. Auch vom Betreiber AUSWAHL Es gibt kein Analogon zum Design ELSEIF, aber Sie können eins investieren AUSWAHL in einem anderen, wie es in unserem Beispiel geschehen ist.

Operator IST NULL im Design verwendet AUSWAHL um ein Abfragefeld mit dem Typ NULL zu vergleichen.

Anfrage. Text= "WÄHLEN
AUSWAHL
WENN DER WERT NULL IST, DANN 0
ELSE Bedeutung
ENDE"
;

Darüber hinaus der Betreiber IST NULL kann in Abfragebedingungen verwendet werden, beispielsweise in einem Satz WO.

Fortsetzung des Themas:
Apfel

Das nächste Testobjekt, Samsung GT-I9100, musste auf die neueste offizielle Firmware aktualisiert werden. Leider basiert die neueste offizielle Version dieses Geräts laut... auf Android 4.1.2.