Über Magen-Darm-Erkrankungen

Vollständige Syntax (zum Erweitern klicken)

Listenwerte

Beschreibung:

Eine Werteliste ist ein Objekt, das nicht in der Datenbank gespeichert wird und es Ihnen ermöglicht, dynamische Wertesätze zur Lösung von Schnittstellenproblemen zu erstellen und diese zu manipulieren (Elemente hinzufügen, bearbeiten, löschen, sortieren). Es kann mit Werten beliebiger Art gefüllt werden, d.h. In einer Liste können die Arten der gespeicherten Werte unterschiedlich sein. Ein Beispiel für die Verwendung dieses Objekts ist die Organisation der Auswahl eines bestimmten Dokuments aus einer Liste möglicher Dokumente, die mithilfe eines komplexen Algorithmus generiert wurde.

Sammlungsgegenstände: ValueListElement

Es ist möglich, dass ein Objekt die Sammlung mithilfe des Operators umgeht Für jeden... Von... Zyklus. Der Durchlauf wählt die Elemente der Sammlung aus.

Der Zugriff auf ein Sammlungselement ist über den [...]-Operator möglich. Der Index des Elements wird als Argument übergeben ( Nummerierung ab 0).

Eigenschaften:

Methoden:

Einfügen (Index, Wert, Darstellung, Beschriftung, Bild) Fügt ein neues Element in die Werteliste an der Position am angegebenen Index ein.SelectElement (Header, Element) Ruft ein Fenster zur interaktiven Auswahl eines der in der Werteliste enthaltenen Elemente auf. Element- das Element, auf das die Werteliste bei der interaktiven Auswahl zunächst positioniert werden soll. Wenn der Parameterwert kein Wertelistenelement ist, das in der angegebenen Liste enthalten ist, erfolgt keine Positionierung.Werte entladen()Erstellt ein Array und kopiert die Werte der Wertelistenelemente hinein.Add(Value, Representation, Label, Image) Fügt am Ende der Werteliste ein neues Element hinzu.Ladewerte(ArrayValues) Lädt eine Werteliste mit den Werten aus dem übergebenen Array. In diesem Fall werden alle vorherigen Elemente der Liste gelöscht.Füllen Sie Notizen aus(Markierung) Setzt eine Markierung für alle Elemente der Werteliste.Index(Element) Ruft den Index eines Elements in einer Werteliste ab. Wenn nicht gefunden, wird -1 zurückgegeben.Count() Ruft die Anzahl der Elemente in der Werteliste ab.FindByValue(SearchValue) Sucht nach dem Wert eines Elements in einer Werteliste. Wenn kein Element einen Wert speichert, der dem Suchwert entspricht, wird der Wert zurückgegeben Nicht definiert. Nach ID suchen(Bezeichner) Ruft die Werteliste Element nach Bezeichner ab. Wenn das Element nicht gefunden wird, wird es zurückgegeben Nicht definiert. MarkItems(Kopfzeile) Setzt oder deaktiviert (interaktiv) die Elemente in der Werteliste. Kehrt zurück WAHR, wenn im Dialog die Schaltfläche „OK“ gedrückt wird, Lüge- sonst.Clear() Löscht die Werteliste und entfernt alle Elemente daraus.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Ruft ein Fenster zur interaktiven Auswahl eines der in der Werteliste enthaltenen Elemente auf.ShowMark-Elemente(Beschreibung der Abschlusswarnungen, Kopfzeile) Entwickelt für die interaktive Festlegung von Markierungszuständen für Elemente der Werteliste.Get(Index) Ruft den Wert nach Index ab. Funktioniert ähnlich wie der Operator.Shift (Element, Offset) Verschiebt ein Element der Werteliste um eine angegebene Anzahl von Positionen nach vorne oder hinten.Copy() Erstellt eine Kopie einer Werteliste.Sortieren nach Wert(Richtung) Sortiert eine Werteliste in aufsteigender oder absteigender Reihenfolge der von den Elementen gespeicherten Werte. Siehe Beispiel unten.SortByView(Richtung) Sortiert die Werteliste in aufsteigender oder absteigender Reihenfolge in alphabetischer Reihenfolge der Darstellungen der in der Werteliste enthaltenen Elemente. Siehe Beispiel unten.Entfernen (Element) Entfernt ein Element aus einer Werteliste Element- Index des zu löschenden Elements oder des Elements selbst.

Designer:

Neue Werteliste
&OnClient-Prozedur ExecuteCode(Befehl) /// So erstellen Sie eine Werteliste in 1s 8.3, 8.2 Liste = Neue Werteliste; /// So fügen Sie ein Element zur Werteliste in 1s 8.3, 8.2 hinzu // Methodenparameter hinzufügen:// - Bedeutung // - Leistung // - markieren (erforderlich) // - Bild (erforderlich) Aufführen. Hinzufügen( 1980, // Elementwert „Das Jahr von Vasyas Geburt“// Leistung ) ; Aufführen. Hinzufügen(1985, „Das Geburtsjahr von Julia“) ; // Werte können unterschiedlicher Art sein Aufführen. Add("Polina" , "Name des Kindes" ); /// So fügen Sie ein Element in eine Werteliste in 1s 8.3, 8.2 ein // an Position Nr. 2 einfügen (Elemente werden beginnend mit 0 nummeriert) // Element mit Wert 2010 und Darstellung // „Das Jahr, in dem ihre gemeinsame Tochter geboren wurde“ Aufführen. Einfügen(2, 2010, „Das Jahr, in dem ihre gemeinsame Tochter geboren wurde“) ; /// So umgehen Sie Elemente der Werteliste in 1s 8.3, 8.2 Für jedes Element aus der Liste Loop Report( Element. Representation + ": " + String(Element. Value) ) ; EndCycle ; /// So löschen Sie die Werteliste in 1s 8.3, 8.2 Aufführen. Klar() ; Aufführen. Add("Montag"); Aufführen. Add("Dienstag"); Aufführen. Add("Mittwoch"); /// So ermitteln Sie die Anzahl der Elemente einer Werteliste sowie /// ein Listenelement anhand seines Index in 1s 8.3, 8.2 abrufen// Nummerierung von Grund auf Für Index = 0 nach Liste. Quantity() - 1 Cycle Report(List[Index]); EndCycle ;/// So finden Sie ein Listenelement anhand seines Werts in 1s 8.3, 8.2 ValueTuesday = Liste. FindByValue("Tuesday");/// So ermitteln Sie den Index eines Elements in einer Liste in 1s 8.3, 8.2 Report(List. Index(ValueTuesday) ) ; // 1, da die Nummerierung bei Null beginnt /// So sortieren Sie eine Liste nach ihren Werten in 1s 8.3, 8.2// war: Montag, Dienstag, Mittwoch Aufführen. SortByValue(SortDirection.Descending) ; // wurde: Mittwoch, Montag, Dienstag /// So entfernen Sie ein Element aus einer Werteliste in 1s 8.3, 8.2 // das erste Element entfernen // Parameter: Listenelement// oder Elementindex // Sie können diese Liste erstellen. Löschen(Liste[ 0 ]) ; // oder so // List.Delete(0); /// So verschieben Sie ein Element einer Werteliste in 1s 8.3, 8.2 // das Nullelement um eine Position nach vorne verschieben// war: Montag Dienstag Aufführen. Move(0, 1); // wurde: Dienstag Montag/// So erstellen Sie eine Kopie einer Liste in 1s 8 ListCopy = Liste. Kopieren() ; Farben = Neue Werteliste; Farben. Add("Rot" ); Farben. Add("Grün" ); Farben. Add("Blau" ); /// So laden Sie Listenwerte in 1s 8.3, 8.2 in ein Array hoch ArrayColors = Farben. UnloadValues() ; /// So laden Sie Listenwerte aus einem Array in 1s 8.3, 8.2 Farben. LoadValues(ArrayColors) ; EndProzedur/// So treffen Sie eine modale Auswahl eines Werts aus einer Liste /// Werte in 1s 8.3, 8.2&Auf der Client-Prozedur So erstellen Sie eine nicht-modale Wertauswahl (Befehl) Colors = New ValueList; Farben. Add("Rot" ); Farben. Add("Grün" ); Farben. Add("Blau" ); // Prozedur AfterSelectingElement ist direkt unten definiert AlertAfterElementSelection = Neue DescriptionAlerts( „AfterElementSelection“, ThisObject ); Farben. ShowElementSelection( NotificationAfterElementSelection,<>„Wählen Sie Ihre Lieblingsfarbe“ ); Ende der Prozedur &Bei Client-Prozedur nach Elementauswahl (Element, Parameter) Exportieren, wenn Element Farben. LoadValues(ArrayColors) ; EndProzedur&Auf der Client-Prozedur So erstellen Sie eine nichtmodale Markierung von Werten (Befehl) Farben = Neue Werteliste; Farben. Add("Rot" ); Farben. Add("Grün" ); Farben. Add("Blau" ); // Prozedur AfterMarkingElements ist direkt unten definiert AlertAfterMarkingItems = Neue DescriptionAlerts( „AfterMarkingItems“, ThisObject ); Farben. ShowTagItems( AlertAfterTagItems, „Wählen Sie Ihre Lieblingsfarben“); Farben. FillNotes(True) ; Ende der Prozedur &On Client-Prozedur nach dem Markieren von Elementen (Elementen, Parametern) Exportieren von Elementen<>Undefiniert, dann für jede Farbe aus dem Elementzyklus, wenn Farbe. Markieren und dann melden(Color.Value) ; EndIf ; EndCycle ; EndIf ; EndProzedur /// So treffen Sie eine modale Auswahl eines Werts aus einer Liste in 1s 8.3, 8.2&Auf der Client-Prozedur So erstellen Sie eine ModalValueSelection(Befehl) Colors = New ValueList; Farben. Add("Rot" ); Farben. Add("Grün" ); Farben. Add("Blau" ); SelectColor = Farben. Menüpunkt wählen( „AfterElementSelection“); Wenn SelectColor<>Undefiniert, dann Report(SelectColor.Value) ; EndIf ; EndProzedur /// So markieren Sie Werte aus einer Liste modal Farben. LoadValues(ArrayColors) ; EndProzedur&Auf der Client-Prozedur So erstellen Sie eine modale Wertemarkierung (Befehl) Farben = Neue Werteliste; Farben. Add("Rot" ); Farben. Add("Grün" ); Farben. Add("Blau" ); Wenn Farben. MarkItems( „Wählen Sie Ihre Lieblingsfarben“) Dann für jede Farbe aus dem Farbzyklus, wenn Farbe. Markieren und dann melden(Color.Value) ; EndIf ; EndCycle ; EndIf ; // So können Sie alle Markierungen auf einmal setzen // auf einen bestimmten Wert auflisten Farben. FillNotes(True) ; EndProzedur /// Laden Sie diese Beispiele herunter und führen Sie sie auf Ihrem Computer aus

Wovon handelt der Artikel?

Dieser Artikel setzt die Artikelserie „Erste Schritte in der 1C-Entwicklung“ fort. Es behandelt die Prinzipien der Arbeit mit universellen Sammlungen. Nachdem Sie den Artikel gelesen haben, erfahren Sie:

  • Was sind Universalsammlungen und wann und in welchen Fällen sollten sie verwendet werden?
  • Was haben alle Universalsammlungen gemeinsam? Mit welchen Techniken können Sie mit allen arbeiten?
  • Was ist ein Array, wie und wann wird es verwendet? Welche Methoden hat er?
  • Warum eine Struktur verwenden? Wie unterscheidet es sich von einem Array?
  • Wann sollten Sie eine Werteliste verwenden? Wie wird es im Formular angezeigt?
  • Compliance – was ist das und wann ist es anzuwenden? Welche Vorteile ergeben sich hinsichtlich der Struktur?
  • Wozu dient die Wertetabelle? Wie lässt sich seine Struktur beschreiben? Wie füge ich Zeilen hinzu/entferne sie? Wie wird es im Formular angezeigt?
  • Wertebaum – wofür wird er verwendet? Wie fülle ich das Formular aus und zeige es an? Wie arbeitet man damit?

Anwendbarkeit

Der Artikel befasst sich mit der aktuellen Ausgabe der Plattform 1C:Enterprise 8.3.

So arbeiten Sie mit universellen Sammlungen in 1C

Eine Wertesammlung ist ein Container, der in der Regel beliebig viele Elemente enthalten kann. Allerdings gibt es häufig keine strengen Einschränkungen hinsichtlich des Datentyps.

Sie können einer generischen Sammlung Werte hinzufügen. Alle Werte in der Sammlung können durchlaufen werden. Diese Sammlungen werden hauptsächlich für irgendeine Art der Verarbeitung in Algorithmen verwendet. Diese. Dabei handelt es sich um einige dynamische Strukturen, die während der Ausführung des Algorithmus vorhanden sind.

Es ist wichtig zu verstehen, dass Sammlungen nicht in einer Datenbank gespeichert werden (wir sprechen hier nicht vom Datentyp „Value Store“, der nahezu jeden Datentyp speichern kann).

Es gibt verschiedene Arten von Universalsammlungen: Array, Struktur, Übereinstimmung, festes Array, Wertetabelle, Tabellenteil usw. Aber alle Sammlungen haben ein ähnliches Verhalten.

Eine Sammlung kann als Ergebnis der Operation einer Funktion erstellt werden (die Funktion gibt eine universelle Sammlung als Wert zurück).

Sie können eine neue Sammlung manuell abrufen, indem Sie den Konstruktor aufrufen und eine Instanz der Klasse erstellen.

Zum Beispiel: OurArray = Neues Array;

Die Konstruktoren für viele generische Sammlungen sind parametrisiert.

Also im Konstruktor für Sie können die Anzahl der Elemente in den entsprechenden Dimensionen angeben. Diese. Sie können sofort mehrdimensional deklarieren .

Die entsprechende Beschreibung des Konstruktors finden Sie im Syntaxassistenten.

Somit können Sie mithilfe von Konstruktorparametern sofort das gewünschte Verhalten eines bestimmten Objekts festlegen.

Die Parameter sind jedoch optional; der Entwickler kann sie nicht nach eigenem Ermessen festlegen und das Verhalten des Arrays weiter definieren.

Nahezu jede universelle Sammlung kann mit einem Konstruktor erstellt werden (Ausnahme sind Tabellenteile, die als Konfigurationsobjekte fungieren).

Für universelle Sammlungen gibt es gemeinsame Konzepte wie Index und Nummer. Jedes Element der Sammlung verfügt über einen Index. In diesem Fall beginnt der Index bei Null.

Um auf ein Element zuzugreifen UnserArray, können Sie hierfür den Indexzugriff nutzen, der Index wird in eckigen Klammern angegeben.

Zum Beispiel, UnserArray. Bitte beachten Sie, dass das System in diesem Fall das Array-Element mit Index 3 zurückgibt und dies somit das vierte Element des Arrays ist.

Für einige Sammlungen gibt es auch das Konzept einer Zeilennummer. Die Zeilennummer beginnt mit eins. Für den tabellarischen Teil gibt es beispielsweise eine Eigenschaft wie die Zeilennummer. Es ist wichtig zu bedenken, dass wir, wenn wir die Zeilennummer kennen und über den Index darauf zugreifen möchten, als Index einen Wert verwenden sollten, der um eins kleiner als die Zeilennummer ist.

Das Konzept einer Zeilennummer existiert nicht in allen Sammlungen, sondern hauptsächlich in denen, die in der Benutzeroberfläche angezeigt werden können.

Alle Sammlungen verwenden die Durchquerung von Sammlungselementen. Die Umgehung ist auf zwei Arten möglich: Zyklus Für Und Zyklus Für jeden von.

Die Methoden, die für die meisten generischen Sammlungen gelten, sind Zählen, Indexieren, Hinzufügen, Einfügen, Löschen und Suchen.

Count ist eine Funktion, die die Anzahl der Elemente in einer Sammlung zurückgibt. Es kann vor einem Zyklus verwendet werden Für, wie in der Abbildung gezeigt.

Die Index-Methode existiert nicht für alle Sammlungen, sondern nur für diejenigen, deren Elemente referenziert werden können. Ein Beispiel ist Wertetabelle.

Wertetabelle– Dies ist eine bestimmte Sammlung von Zeilen; Zeilen können verschiedene Spalten mit unterschiedlichen Werttypen enthalten.

Jede Zeile stellt eine unabhängige Einheit dar. Sie können einen Link dazu erhalten; über diese Zeile können Sie auf die Werte der Spalten in dieser Zeile zugreifen.

Mit der Index-Methode können Sie bestimmen, welcher Index einer bestimmten Zeile entspricht (d. h. der aktuellen Position der Zeile in der Tabelle). Indexwerte beginnen bei Null.

Fast jede universelle Sammlung verfügt über Methoden zum Hinzufügen neuer Werte zu einer bestimmten Sammlung. Die Abbildung zeigt, wie man ein Array auf zwei Arten mit Werten von 0 bis 10 füllt.

Um dem Array ein Element hinzuzufügen, können wir die Methode verwenden Hinzufügen Geben Sie in Klammern den hinzuzufügenden Wert an. In diesem Fall wird der Wert am Ende der Liste hinzugefügt, d. h. Durch die letzte Position wird das Array stetig vergrößert.

Eine weitere Methode, mit der Sie einer Sammlung Werte hinzufügen können, ist die Einfügen. Es unterscheidet sich von der Methode Hinzufügen, indem Sie angeben können, wo das hinzugefügte Element eingefügt werden soll.

Syntax: Einfügen (,)

Der erste Parameter gibt den Index an, in den der neue Wert eingefügt wird. Diese. Beispielsweise können wir festlegen, dass jeder Wert am Anfang der Liste eingefügt werden soll (zweite Methode in der Abbildung oben).

Um Elemente aus einer Sammlung zu entfernen, verwenden Sie die Methode Löschen. Die Methode „Delete“ gibt anhand des Index an, welches Element gelöscht wird.

Syntax: Löschen()
Anwendungsbeispiel: OurArray.Delete(5);

Es ist zu beachten, dass für Sammlungen, in denen Zeichenfolgen eine unabhängige Entität darstellen (z. B. z Wertetabellen), können wir auch die Methode zum Abrufen des Index verwenden, um diese Zeile später zu löschen.

Fast alle Sammlungen verfügen über eine Methode zur Suche nach einem Wert – Finden. Der Wert, den wir finden möchten, wird an die Methode übergeben. Bei einigen Sammlungen können Sie einige Einschränkungen festlegen.

Zum Beispiel in Wertetabelle Sie können die Zeilen und Spalten angeben, in denen Sie suchen möchten.

Wenn der Wert gefunden wird, gibt diese Methode den Index oder die angegebene Zeichenfolge zurück. Wenn der Wert nicht gefunden wird, wird ein Wert vom Typ zurückgegeben Nicht definiert. Gibt in Bezug auf ein Array zurück Index, oder Wert Nicht definiert.

Anwendungsbeispiel: OurVariable = OurArray.Find(8);

Universelle Sammlungen können sehr schnell gelöscht werden, d. h. Entfernen Sie absolut alle Elemente. Zu diesem Zweck wird die Methode verwendet Klar(), wodurch Array-Elemente und Zeilen entfernt werden Wertetabellen oder Daten aus anderen Sammlungen.

Zusätzliche Methoden für Array

Methode BBorder() gibt die Anzahl der Elemente minus eins zurück. Diese. wenn wir eine Schleife verwenden Für, dann können wir anstelle der Mengenmethode sofort die Methode verwenden Grenze().

Insbesondere die Variable QuantityInArray könnte anders definiert werden:

QuantityInArray = OurArray.InBorder();
Dann sollte bei der Beschreibung des Zyklus selbst nicht von dieser Variablen abgezogen werden.

Mit der Set-Methode können Sie einem Array-Element anhand des Index einen Wert zuweisen.

Syntax: Installieren(,)

Beispiel: OurArray.Set(2,8);

Alternative Möglichkeit: OurArray = 8;

Sie können die Methode für ein Array verwenden Erhalten, um einen Wert an einem Index zu lesen, ohne auf eckige Klammern zurückgreifen zu müssen.

Syntax: Erhalten()

Beispiel: OurVariable = OurArray.Get(2);

Alternative Möglichkeit: OurVariable = OurArray;

Universelle Sammlungsstruktur

Eine Struktur kann wie ein Array eine unbegrenzte Anzahl von Elementen haben, der Inhalt des Elements unterscheidet sich jedoch vom Array.

Die Struktur ist eine Sammlung, bei der jeder Wert aus einem Paar besteht. Das erste Element des Paares wird aufgerufen Schlüssel. Das zweite Element des Paares ist Bedeutung.

Schlüssel ist ein reiner String-Datentyp, der einen Wert beschreibt. Zum Beispiel, Zum Schlüssel„Code“ kann dem Wert 113 entsprechen; Zum Schlüssel„Name“ bedeutet „Vasya“. Der Wert selbst unterliegt keiner Datentypbeschränkung.

Die Struktur ist sehr praktisch, wenn wir eine bestimmte Liste von Parametern erstellen möchten. Wenn dies Struktur angerufen UnsereStruktur, dann beziehen wir uns auf seine beiden Werte wie folgt: OurStructure.Code und OurStructure.Name.

Diese Art des Zugriffs ist viel bequemer, als wenn wir alle Parameter in einem Array definieren und über den Index darauf zugreifen würden.

Struktur macht Programmcode lesbar (verständlich). Struktur wird ziemlich oft verwendet, viel häufiger als Array.

Es wird verwendet, um bestimmte Parameter zu beschreiben, von denen es in allen Algorithmen oft eine recht große Anzahl gibt.

Darüber hinaus wird die Struktur verwendet, wenn die Prozedur und Funktion eine große Anzahl übergebener Parameter enthält.

Dann ist es viel bequemer, alle Parameter in die Struktur zu schreiben und weiterzugeben. Diese. Die Parameter von Prozeduren und Funktionen werden „gepackt“.

Unabhängig davon ist zu beachten, dass als Schlüssel Es kann nicht unbedingt jede Zeile in der Struktur erscheinen. Es gelten bestimmte Einschränkungen.

Schlüssel soll als Identifikator dienen. Das bedeutet, dass in Klyuche Es darf keine Leerzeichen enthalten und es darf nicht mit einer Zahl beginnen.

Akzeptabler Start Schlüssel mit einem Buchstaben oder Unterstrich. Auf diese Weise, Schlüssel muss die Voraussetzungen für die Erstellung von Identifikatoren erfüllen.

Beachten wir, wie sich eine Struktur sonst noch von einem Array unterscheidet. Es gibt eine Methode in der Struktur Einfügen, es gibt zwei Methoden zum Einfügen in Array: Einfügen(zu einer bestimmten Position) und Hinzufügen(bis zum Ende der Liste). In einem Array sind alle Elemente geordnet.

Struktur ist eine Art ungeordnete Menge. Aus diesem Grund gibt es für eine Struktur nur eine Einfügemethode.

Der Wert wird nicht an einer bestimmten Position eingefügt, sondern in die angegebene Menge. Auf eine Struktur kann nicht wie auf andere generische Sammlungen über einen Index zugegriffen werden.

Auf Strukturelemente kann nur über den Schlüsselnamen zugegriffen werden. Allerdings funktioniert die For Each-Schleife auch für die Struktur, Sie sollten sich jedoch nicht auf die Reihenfolge der Strukturelemente verlassen.

Eine Struktur wird auf die gleiche Weise wie andere generische Sammlungen erstellt, indem der New-Konstruktor verwendet und der Datentyp Structure angegeben wird.

Wie ein Array kann der Konstruktor einer Struktur Parameter haben. Diese. Es ist möglich, den eigentlichen Inhalt einer Struktur mithilfe eines Konstruktors zu beschreiben.

Im Gegensatz zu einem Array, bei dem Sie einfach die Anzahl der Elemente für alle Dimensionen angeben können, können Sie in einer Struktur den Inhalt selbst angeben.

Zum Beispiel: OurStructure = Neue Struktur („Code, Name“, 133, „Vasya“);

Durch Kommas getrennt werden zunächst die Namen der Schlüssel aufgelistet und dann entsprechend in der gleichen Reihenfolge die Werte der Parameter.

Es gibt eine Methode zum Hinzufügen eines neuen Werts zur Struktur Einfügen, wodurch ein neues Paar (Schlüssel und Wert) eingefügt wird.

Zum Beispiel: OurStructure.Insert(“FamilyMembers”,3);

Die Struktur zeichnet sich durch eine andere Methode aus, die häufig verwendet wird. Das ist die Methode Eigentum.

Mit dieser Methode können Sie erkennen, ob es in dieser Struktur ein Element gibt, dessen Schlüssel diesen oder jenen Namen hat.

Wenn ein solches Element vorhanden ist, gibt das System den Wert True zurück, andernfalls – False.

Zum Beispiel der Ausdruck OurStructure.Property („Familienmitglieder“) wird gleich True sein. Diese Methode wird häufig bei der Analyse der Struktur verwendet.

Wie bei jeder universellen Sammlung ist es möglich, über den Index auf die Eigenschaften einer Struktur zuzugreifen. Der Index für die Struktur ist jedoch ein Zeichenfolgenwert.

Zum Beispiel: Report(OurStructure[„FamilyMembers“]);

Wir sollten jedoch nicht vergessen, dass eine Struktur eine ungeordnete Menge von Objekten ist, weshalb der Zugriff über die Indexe 0, 1, 2 nicht akzeptabel ist.

Generische Sammlung Werteliste

Listenwerte ist eine lineare Liste von Elementen eines beliebigen Datentyps.

Jedes Element besteht aus mehreren Werten. Schematisch lässt sich eine Werteliste als Liste mit vier Spalten darstellen.

Erste Spalte - Markieren. Es hat einen booleschen Datentyp und ermöglicht dem Benutzer das Aktivieren oder Deaktivieren von Kontrollkästchen.

Die andere Spalte ist ein Bild, das dieses Element irgendwie visuell darstellen kann, d. h. Ordnen Sie diese Zeichenfolge einem Bild zu.

Die dritte Spalte ist der gespeicherte Wert selbst, d.h. Hierbei handelt es sich um jede Art von Daten, die in verschiedenen Zeilen unterschiedlich sein können.

Die vierte Spalte ist die Präsentation, d.h. Dies ist eine Art String-Beschreibung eines bestimmten Werts. Die Ansicht wird dem Benutzer angezeigt, wenn er dieses Element ansieht. Wenn in diesem Fall die Darstellung nicht angegeben ist, versucht das System, Darstellungen für das an dieser Position enthaltene Element zu erhalten.

Listenwerte– Dies ist das Objekt, mit dem der Benutzer visuell arbeiten kann. Diese. Listenwerte können im Formular angezeigt werden.

Der Benutzer kann damit einige Aktionen ausführen. Neben, Listenwerte können mithilfe von Methoden unabhängig abgeleitet werden, d. h. werden auf dem Bildschirm in einem Zweig des Algorithmus angezeigt (mit Ausnahme des Servercodes), sodass der Benutzer eine Zeile auswählt oder einige Kontrollkästchen aktiviert.

Wir werden finden Listenwerte im Sitax-Assistenten. Konstrukteur Listenwerte nicht parametrisiert (Sie können keine Standardwerte festlegen).

Es gibt Methoden wie:

  • Einfügen(,) ;
  • Hinzufügen(,);
  • Menge();
  • Index().

Es gibt auch spezielle Methoden, zum Beispiel UnloadValues(). Dadurch wird ein Array erstellt, in das die Werteliste kopiert wird. Zum Beispiel:

Array of Elements = List of PriceTypes.OutloadValues();

Es gibt auch eine umgekehrte Methode:
ListPriceTypes.LoadValues(ArrayItems);

Es gibt Suchmethoden:
FindByValue(); FindByIdentifier().

Es gibt eine Kopiermethode:
ListCopy = PriceTypeList.Copy();
Mit dieser Methode soll eine Änderung an der Kopie vorgenommen werden.

Es gibt Methoden:
SortByValue();
SortByView().

Methoden Menüpunkt wählen(,) Und MarkItems() Rufen Sie ein modales Dialogfeld auf, das die Ausführung des Algorithmus stoppt, bis der Benutzer das Fenster schließt.

Um diese Methoden in Konfigurationseigenschaften zu verwenden Art der Nutzung der Modalität muss eingestellt werden Verwenden.

Beispielcode, der von einem verwalteten Anwendungsmodul aufgerufen wird:

Zeigen Sie diesen Code im Benutzermodus an (modaler Dialog).

Unten Listenwerte Wird als verfügbarer Datentyp für Formularattribute verwendet. Wir erstellen ein neues Attribut für das Verarbeitungsformular und definieren seinen Typ Listenwerte und zeigen Sie es im Formular an.

Ein neues Team erstellen AnmeldenGeschenke, übertragen Sie es in das Formular und definieren Sie einen Aktionshandler dafür.

Wenn Sie im Benutzermodus im Bearbeitungsformular auf die Schaltfläche „Geschenke ausfüllen“ klicken, wird eine vollständige Liste angezeigt.

Bei Bedarf kann die Liste bearbeitet werden: Einige Elemente können hinzugefügt, andere entfernt werden.

Vielseitige Sammlungskonformität

Diese Sammlung ist sehr ähnlich Struktur. Genau wie Structure sind Mappings Wertemengen, die aus einem Schlüssel und dem Wert selbst bestehen.

Der Hauptunterschied besteht darin, dass sowohl als Schlüssel als auch als Wert ein beliebiger Datentyp angegeben werden kann. Aufgrund dieser Funktion ist es erforderlich, auf den Übereinstimmungswert über den Index zuzugreifen; der Schlüsselwert wird als Indexwert angegeben.

Der Schlüssel kann ein anderer Datentyp als eine Zeichenfolge sein. Die Eigenschaften und Arbeitsmethoden von Compliance sind nahezu dieselben wie die von Structure.

Der Compliance-Konstruktor verfügt im Gegensatz zur Struktur nicht über die Möglichkeit, Parameter anzugeben.

Anwendungsbeispiel:

Die Korrespondenz ist praktisch, wenn Sie zwei beliebige Strukturen verbinden müssen. Beispielsweise muss jede Zeile im tabellarischen Abschnitt mit einer Zeile aus der Wertetabelle abgeglichen werden.
In diesem Fall wird die Tabellenabschnittszeile als Match-Schlüssel verwendet und der entsprechende Wert angegeben.

Beim Einfügen von Elementen in eine Sammlung Match zusätzlich zur Methode Einfügen(,) Eine andere Möglichkeit, einen Wert einzufügen, ist die Verwendung des regulären Zuweisungsoperators.

Zum Beispiel: OurMatch = NewMatch;
Übereinstimmung = 999;

Diese. Wenn ein Element in der Sammlung nicht vorhanden war, wird es mithilfe des Zuweisungsoperators hinzugefügt, und wenn es vorhanden war, wird es aktualisiert.

Dies steht im Gegensatz zur Struktur.

Wertetabelle der universellen Sammlung

Wertetabelle ist eine Tabelle mit beliebig vielen Zeilen und beliebig vielen Spalten. Die Schnittmenge kann Werte jedes Datentyps speichern. Bei Bedarf können Spalten typisiert werden, d. h. Sie können festlegen, in welcher Spalte welche Art von Daten gespeichert werden.

Sie können die Spalten untypisiert lassen, dann können Werte unterschiedlichen Typs in einer Spalte in verschiedenen Zeilen gespeichert werden.

Unterschiede Wertetabellen aus einem zweidimensionalen Array:

  • Dies ist ein Objekt, mit dem der Benutzer arbeiten kann (die Wertetabelle kann auf dem Bildschirm angezeigt werden, der Benutzer kann sie ausfüllen und die eingegebenen Daten können dann gelesen werden);
  • Erstellen von Indizes für eine schnelle Suche;
  • Klonen, Füllen einer gesamten Spalte mit einem bestimmten Wert, Entladen aller Spalten in ein Array.

Wertetabelle Wird als eine Art Informationsspeicherpuffer verwendet. Wertetabelle wird von vielen Systemmethoden zurückgegeben und als Parameter akzeptiert. Es ist möglich, eine Abfrage anhand der Wertetabelle zu erstellen.

Also, Wertetabelle besteht aus einer Reihe von Zeilen und einer Reihe von Spalten. Sowohl Zeilen als auch Spalten sind Sammlungen.

Diese. innerhalb der Sammlung Wertetabelle Es gibt zwei weitere Sammlungen. Wenden wir uns dem Syntaxassistenten zu und suchen Wertetabelle.

Unterstützte Datentypen: sich selbst Wertetabelle, das aus Zeichenfolgen besteht. Jede Zeile wird durch einen Datentyp repräsentiert RowTableValues, das über eigene Eigenschaften und eigene Methoden verfügt. Verfügbar Sammlung von Tabellenspaltenwerten hat auch bestimmte Eigenschaften.

Wichtiger Punkt! Das Verfahren, das erstellt Wertetabelle, muss &OnServer kompilieren.

Bevor Sie mit der Arbeit beginnen Wertetabelle, müssen Sie bestimmen, welche Spalten es enthalten soll (d. h. erstellen). Syntax:

Hinzufügen(,)
(Optional)
Typ: Zeichenfolge.
(Optional)
Typ: Beschreibungstypen
(Optional)
Typ: Zeichenfolge.
(Optional)
Nummer eingeben.

Zum Beispiel:

Um diese Prozedur aufzurufen, verwenden wir den Befehl.

In Beschreibung Wertetabellen Die Elemente der Sammlung sind präzise RowsTableValues.

Im Gegensatz zu Spalten, die nur aus Eigenschaften (Name, Typ, Überschrift, Breite) bestehen, ist in RowTableValues Es gibt sowohl Eigenschaften (Zugriff über den Spaltennamen) als auch Methoden (Sie können einen Wert abrufen und festlegen, mit Eigentümern arbeiten).

Um der Tabelle eine neue Zeile hinzuzufügen, müssen Sie entweder die Methode verwenden Hinzufügen(), oder Einfügen(). Im zweiten Fall sollten Sie angeben, an welcher Position die gewünschte Zeile platziert werden soll.

Um einer Spalte einen Wert zuzuweisen, verwenden wir einen Punkt, um auf den Spaltennamen oder den Index (unter Verwendung von eckigen Klammern) zuzugreifen.

Für die Füllung Wertetabellen Folgende Methoden können verwendet werden:

Klar()– um alle Zeilen zu entfernen Wertetabellen.

FillValues(,)– ermöglicht es Ihnen, alle Spalten oder ausgewählte Spalten mit einem Wert zu füllen.
LoadColumn(,)– lädt eine Spalte aus dem Array.
UnloadColumn()– Entlädt die Spalte in ein Array.

Die letzten beiden Methoden sind praktisch, wenn Sie eine Spalte von einer Wertetabelle in eine andere übertragen müssen.

Kopieren(,)– ermöglicht Ihnen, eine neue Tabelle basierend auf einer vorhandenen Tabelle zu erstellen Wertetabelle, und zwar nicht alle Zeilen und alle Spalten, sondern nur einige davon. Rückgabewert - Wertetabelle.

Sie können die Struktur kopieren Wertetabellen. Dafür gibt es eine entsprechende Methode CopyColumns(). Wir bekommen ein leeres Wertetabelle mit der erforderlichen Struktur.

IN Wertetabelle Es gibt eine Methode Gesamt(). Sie können die Spalte angeben, in der Sie die numerischen Werte summieren möchten. Bezogen auf den zuvor im Tableau angezeigten Code können Sie den Wert berechnen: TK.Total („Betrag“).

IN Wertetabelle Mit der Methode ist es möglich, numerische Werte nach identischen Werten bestimmter Spalten zu gruppieren (zu reduzieren). Zusammenbruch(,).

Bezogen auf den zuvor im Tableau angezeigten Code können Sie den Wert berechnen: TK.Collapse(„Wochentag“, „Betrag“).

Wertetabelle kann auf dem Benutzerbildschirm angezeigt werden, sodass Sie damit beliebige Aktionen ausführen können. Aber nicht wie Listenwerte Man kann nicht einfach aus Programmcode heraus eine Tabelle auf dem Bildschirm aufrufen.

Zur Anzeige Wertetabelle Erstellen Sie auf dem Bildschirm ein Formularattribut und weisen Sie ihm einen Datentyp zu Wertetabelle.

Danach sollte die resultierende Tabelle auf dem Formular angezeigt werden.

Im Formularmodul am Ende des zuvor kompilierten Algorithmus (im Verfahren zum Erstellen einer Wertetabelle) sollten Sie Folgendes hinzufügen:
ValueInFormData(TK, Tabelle);

Universelle Sammlung Wertebaum

eine universelle Sammlung, die sehr ähnlich ist Wertetabelle. Der Unterschied zu einer Tabelle besteht darin, dass die Zeilen des Baums einander untergeordnet sein können, d. h. Es kann eine Art Hierarchie entstehen.

Dies kann sich auch auf dem Bildschirm widerspiegeln. Ein Wertebaum besteht explizit aus einer Sammlung von Zeilen und einer Sammlung von Spalten. Es gibt zwei Eigenschaften in der Baumstruktur: Zeilen und Spalten.

Da Zeilen einander untergeordnet sein können, kann jede Zeile sowohl ein übergeordnetes Element als auch die untergeordneten Zeilen haben.

Lassen Sie uns den entsprechenden Tree-Befehl und seine Verarbeitungsprozedur erstellen.

Lasst uns kreieren in dem es eine übergeordnete Zeile und zwei untergeordnete Zeilen gibt.

Lassen Sie uns die Formularattribute erstellen DerZn(Datentyp – Wertebaum).

Für dieses Attribut erstellen wir die Spalten „Jahr“ und „Monat“.

Verschieben Sie das entsprechende Element DerZn auf dem Formular.

Am Ende Prozeduren TreeOnServer() fügen wir hinzu:

ValueInFormData(TreeZn, DerZn);

Schauen wir uns an, was im Benutzermodus passiert ist.

Per Knopfdruck Hinzufügen Sie können neue Zeilen hinzufügen. Sie können auch eine Hierarchie bilden.

Um alle Elemente des Wertebaums zu durchlaufen, müssen wir Rekursion verwenden, d. h. Aufruf der Prozedur aus sich selbst heraus. Die Verarbeitung eines Wertebaums könnte beispielsweise so aussehen:

Damit ist unsere erste Bekanntschaft mit universellen Sammlungen abgeschlossen.

Im nächsten Artikel schauen wir uns an, welchen wichtigen Mechanismus ein Entwickler nutzen kann, um den Zugriff auf ein Verzeichniselement aus dem Programmcode heraus zu vereinfachen.

In dieser Einheit lernen wir einen neuen Datentyp der 1C-Sprache kennen, der aufgerufen wird Listenwerte.

Liste von Werten ist ein Array, aber mit großen Fähigkeiten. Und wenn ja, dann handelt es sich auch um eine Datensammlung, in die Sie eine Reihe von Zahlen einfügen können:

// eine Werteliste erstellt

List.Add(23);

Bisher sieht alles sehr nach einem Array aus, nicht wahr? Aber lasst uns weitermachen. Um diese Zahlen nun dem Benutzer anzuzeigen, schreiben wir:

// jedes Element der Liste durchlaufen For Each Element From List Loop Report(Element.Value);

// den Wert des Elements EndCycle anzeigen;

Und hier ist der erste Unterschied. Die Elemente eines regulären Arrays sind die Zahlen selbst. Und Zugriff auf den aktuellen Wert eines Elements Aufführen Wir nutzen die Option Bedeutung, unter Verwendung der Konstruktion Element. Bedeutung.

Schauen wir uns einige zusätzliche Funktionen an Werte.

Kann sortieren

Beispielsweise können wir eine Werteliste ganz einfach sortieren. Die Liste kann dies selbst tun:

List.SortByValue(SortDirection.Age); Im Falle eines regulären Arrays müssten wir einen der Sortieralgorithmen implementieren (zum Beispiel „Bubble“).

Kann suchen

Die Werteliste kann selbstständig nach ihren Elementen suchen. Nehmen wir an, wir möchten herausfinden, ob eine vom Benutzer eingegebene Nummer in unserer Liste vorhanden ist:

EnterNumber(Number); // eine Nummer vom Benutzer eingegeben FoundElement = List. FindByValue(Number);

If FoundItem = Undefiniert Then OpenValue("Number " + Number + " not found in the list!"); Ansonsten

OpenValue("Number " + Number + " ist in der Liste vorhanden. Hier ist es:" + FoundElement.Value);

endIf; Listenwerte

Unterstützt das Einfügen und Löschen

Eine Werteliste unterstützt wie ein Array das Einfügen und Entfernen von Elementen:

Aufführen. Einfügen(0, 1000);

// Tausender ganz am Anfang der Liste einfügen List.Delete(O); // und sofort aus der Liste List entfernen. Insert(List.Quantity(), 13);

// 13 am Ende der Liste einfügen Report(List[List.Quantity() - 1]);

// das letzte Element der Liste anzeigen (13)

Unterstützt eckige Klammern

Wie Sie bereits verstanden haben, beginnt die Nummerierung der Listenelemente ebenfalls bei Null und wir können auf jedes Element über seinen Index in eckigen Klammern zugreifen:

Report(List.Value); // das zweite Element der Liste anzeigen So können wir alle Elemente der Liste wie folgt durchgehen:

For A = 0 By List.Quantity() - 1 Loop Report(List[A].Value);

EndCycle;

Kann eine Kopie von sich selbst erstellen

Die Werteliste hat einfach eine tolle Funktion – sie kann eine Kopie von sich selbst erstellen:

ListCopy = List.Copy();

// hat eine Kopie der Liste erstellt // jetzt können wir die Kopie der Liste sicher ändern // während die ursprüngliche Liste die Kopie der Liste nicht ändert. Wert = 123456;

Kann in ein Array umgewandelt werden

Und schließlich können Sie alle Elemente der Liste jederzeit ganz einfach in ein Array übertragen:

ArrayNumbers = Liste. UnloadValues();

// in ein Array gedumpt

Für A = 0 By ArrayNumber.Quantity() - 1 Zyklus

Report(ArrayNumbers[A]); // keine Angabe des // Optionswerts erforderlich

EndCycle;

Um den Stoff dieser Einheit zu üben und zu festigen, wird empfohlen, die folgende Aufgabe zu bearbeiten.

Es ist notwendig, 5 Zahlen vom Benutzer einzugeben, die größte und kleinste davon zu finden und sie dem Benutzer anzuzeigen. Die Lösung muss eine Werteliste verwenden.

Lösung

Liste = Neue Werteliste;

// eine Werteliste erstellt For A = 1 Through 5 Cycle Number = 0;

EnterNumber(Number); // Geben Sie eine Nummer aus dem Benutzer ein List.Add(Number); // und zur Liste hinzufügen EndCycle; // und so weiter 5 Mal

// Sortiere die Zahlenliste

Aufführen. Sortieren nach Wert(SortDirection.Age);

// Nach der Sortierung ist das erste Element der Liste // das kleinste Element und das letzte das größte. OpenValue("Kleinstes Element" + Liste +

", und der größte " + List[List.Quantity() - 1]);



Wenn Sie einen Fehler bemerken, wählen Sie einen Textabschnitt aus und drücken Sie Strg+Eingabetaste
AKTIE: