» Wie öffne ich ein Listenformular mit einer Auswahl? 1c uv Öffnen Sie das Auswahlformular mit Auswahl.

Wie öffne ich ein Listenformular mit einer Auswahl? 1c uv Öffnen Sie das Auswahlformular mit Auswahl.

Mit diesem Code können Sie eine Liste von Dokumenten mit einer bestimmten Auswahl öffnen; Sie können auch eine Liste von Verzeichniselementen mit der gewünschten Auswahl öffnen

Code 1C v 8.2 UP Form = OpenForm("Document. Invoice.Form.ListForm"); //Formular öffnen
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Auswahl hinzufügen
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Wie werden wir vergleichen?
SelectOwner.Use = True; // Aktivieren Sie das Kontrollkästchen für die Verwendung von NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("Account"); //Anhand welcher Angaben treffen wir die Auswahl?
SelectionOwner.RightValue = Object.Account; // Und die eigentliche Bedeutung der Auswahl

Damit Öffnen Sie ein Listenformular mit einer vordefinierten Auswahl Verwenden Sie die folgenden Methoden:

Erster Weg besteht darin, dass Sie beim Öffnen eines Formulars den Parameter Auswahlformular festlegen und das Listenformular mit diesem Parameter öffnen können.

Der Auswahlparameter repräsentiert die Struktur. Die Namen der Elemente entsprechen den Namen der Felder, anhand derer die Auswahl getroffen wird, und die Werte enthalten die Auswahlwerte. Dies ist eine Option zur Erweiterung dynamischer Listen verwalteter Formulare. Das heißt, es existiert für Formulare, deren Hauptattribut ein Attribut vom Typ DynamicList ist, beispielsweise Listenformulare und Auswahlformulare.

Im folgenden Beispiel wird beispielsweise eine Rechnungsliste mit Auswahl nach dem Feld „Nummer“ geöffnet, das 333 entspricht.

Code 1C v 8.2 UE Selection Value = New Structure("Number", "333");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Dokument. Empfangsrechnung. Listenformular", Auswahloptionen);

Zweiter Weg

Sie können ein Listenformular ohne Parameter öffnen:

Code 1C v 8.2 UE OpenForm("Document. Receipt Invoice.List Form");

Und dann schreiben Sie im Ereignishandler des Formulars für die Rechnungsliste When CreatedOnServer Code, der eine Auswahl in der dynamischen Liste erstellt, die das Hauptattribut des Formulars ist:

Code 1C v 8.2 UP &OnServer
Vorgehensweise bei CreatedOnServer(Failure, StandardProcessing)
Auswahlelement = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Ende des Verfahrens

Die Vorteile dieser Methode bestehen darin, dass der Vergleichstyp für die Auswahl nicht nur wie im ersten Fall auf Gleich, sondern auch auf Mehr, Weniger usw. eingestellt werden kann.

Allerdings hat diese Methode auch einen ganz wesentlichen Nachteil: Bei dieser Auswahl öffnet sich das Formular immer. Wo auch immer sie angerufen wurde. Daher sollte dieses Formular nicht als Hauptformular bezeichnet werden. Und wenn es dennoch das Hauptformular ist, muss vor der Installation der Auswahl eine Analyse durchgeführt werden, von wo aus dieses Formular geöffnet wird. Zum Beispiel die Analyse von Formularparametern.

Dritter Weg

Schließlich kann die Auswahlbedingung in einer benutzerdefinierten Abfrage platziert werden, die Daten für eine dynamische Liste auswählt.

Beispielsweise müssen wir eine Liste von Rechnungen öffnen, die den in der Artikelliste markierten Artikel enthalten.

Erstellen Sie dazu in Form einer Artikelliste einen Befehl und die entsprechende Schaltfläche Rechnungen erhalten.

Füllen wir den Ausführungshandler für diesen Befehl wie folgt aus:

Code 1C v 8.2 UP &OnClient
Prozedur ReceiptInvoices (Befehl)
SelectionParameters = New Structure("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Dokument. Empfangsrechnung. Listenformular", Auswahloptionen);
Ende des Verfahrens

In diesem Handler öffnen wir das Formular für die Liste der Rechnungen und übergeben einen Link zum aktuellen Artikel in der Artikelliste an den Formularparameter FilterByProduct.

Anschließend erstellen wir ein Formular für die Liste der Dokumente: Receipt Invoice und erstellen einen FilterBy Product-Formularparameter, mit dem wir ein Formular mit der erforderlichen Auswahl öffnen.

Öffnen wir nun die Eigenschaftenpalette des Hauptattributs des Listenformulars. Setzen Sie das Flag „Benutzerdefinierte Abfrage“ und klicken Sie in der Zeile „Listeneinstellungen“ auf „Öffnen“.

Geben Sie im Feld „Anfrage“ den folgenden Anfragetext ein:

Code 1C v 8.2 UP SELECT
Belegeingangsrechnung. Nummer,
Dokumenteingangsrechnung.Datum
AUS
Document.ReceiptInvoice AS DocumentReceiptInvoice
WO
Belegeingang Invoice.Products.Product = &Product

In der Anfrage verwenden wir den Parameter „Artikel“, der einen Link zur aktuellen Zeile in der Artikelliste erhält, die im Formularparameter „FilterBy Item“ der Rechnungsliste enthalten ist.

Dazu schreiben wir im Listenformular-Ereignishandler „When CreatedOnServer“ Code, um den Wert des Produktanforderungsparameters festzulegen:

Code 1C v 8.2 UP &OnClient
Eröffnungsverfahren (Fehler)
List.Parameters.SetParameterValue("Product", Parameters.FilterByProduct);
Ende des Verfahrens

Hier ist List.Parameters eine Liste dynamischer Listenanforderungsparameter für das List-Attribut. Der Wert des Product-Parameters wird auf den Wert des FilterByProduct-Formularparameters gesetzt.

Als Ergebnis erhalten wir durch Klicken auf die Schaltfläche „Rechnungen erhalten“ im Artikellistenformular eine Liste nur der Rechnungen, die den aktuell in der Artikelliste ausgewählten Artikel enthalten.

Damit Öffnen Sie das Auswahlformular mit Auswahl in 1s 8.2(reguläre Formulare) müssen wir einige Aktionen ausführen. Wir holen es zuerst. Danach legen wir die Auswahl fest und öffnen sie programmgesteuert. Hier ist ein Codebeispiel:

Auswahl auf dem Formular im 1C 8.2-Eingabefeld mit mehreren Werten

Im obigen Beispiel haben wir uns das angeschaut So legen Sie die Auswahl im Auswahlformular fest nach spezifischem Wert. Schauen wir uns nun eine Situation an, in der Sie mehrere Werte ersetzen müssen. Dies kann beispielsweise ein Array sein oder aus einem Abfrageergebnis entladen werden. Dies ist eine Auswahl im 1c-Eingabefeld mit mehreren Bedeutungen.

Zuerst erhalten wir das Auswahlformular, übergeben „Element“ (Eigentümer) in den Parametern und setzen das Auswahlmodus-Flag. Dann erstellen wir eine Werteliste und ein Array. Dabei beachten wir, dass als Auswahl beim Festlegen des Vergleichstyps in der Liste ein Objekt nur mit dem Typ vorhanden sein kann Listenwerte. Wir fügen dem Array Elemente hinzu und laden dieses Array dann in die Werteliste, die wir anschließend in der Auswahl festlegen. Vergessen Sie außerdem nicht, das Flag für die Verwendung dieser Auswahl zu aktivieren und den Vergleichstyp festzulegen.

Festlegen der Auswahl im Eingabefeld des Formulars in 1C 8.3, Ereignis „Start der Auswahl“.

Lassen Sie uns nun überlegen Auswahl im Eingabefeld auf einem verwalteten Formular in 1C 8.3. Suchen wir im Formular das Element, das uns interessiert, in dem wir die Auswahl festlegen, in unserem Fall ist dies das Feld „Organisation“. Wir finden das Ereignis „Start of Selection“, klicken auf die Lupe und befinden uns im Verfahren. Wir sehen den Parameter Selection Data; dieser Parameter ist vom Typ ValueList. Um die Auswahl auf die notwendigen Elemente zu beschränken, müssen wir die Werteliste ausfüllen. Da wir Elemente nur auf dem Server auswählen können, erstellen wir eine Prozedur mit der Kompilierungsanweisung &OnServer. Geben Sie in diesem Verfahren die Auswahldaten ein.

Wie öffne ich ein Listenformular mit einer Auswahl?

Es gibt mehrere Möglichkeiten, ein Listenformular mit einer voreingestellten Auswahl zu öffnen. Schauen wir sie uns der Reihe nach an:

1. Die erste Methode besteht darin, dass Sie beim Öffnen des Formulars den Parameter Auswahlformular festlegen und mit diesem Parameter das Listenformular öffnen können. Der Auswahlparameter repräsentiert die Struktur. Die Namen der Elemente entsprechen den Namen der Felder, anhand derer die Auswahl getroffen wird, und die Werte enthalten die Auswahlwerte. Dies ist eine Option zur Erweiterung dynamischer Listen verwalteter Formulare. Das heißt, es existiert für Formulare, deren Hauptattribut das Typattribut ist Dynamische Liste, wie Listenformulare und Auswahlformulare.

Beim Öffnen des Formulars erfolgt die Auswahl anhand des angegebenen Feldes. Im folgenden Beispiel wird beispielsweise eine Rechnungsliste mit Auswahl nach dem Feld „Nummer“ geöffnet, das 333 entspricht.

Auswahlwert = Neue Struktur("Nummer", "333");

SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Dokument. Empfangsrechnung. Listenformular", Auswahloptionen);

2. Sie können ein Listenformular ohne Parameter öffnen:

OpenForm("Document.Invoice.ListForm");

Und dann im Event-Handler des Rechnungslistenformulars Bei CreatedOnServer Schreiben Sie Code, der eine Auswahl in einer dynamischen Liste erstellt, die das Hauptattribut des Formulars ist:

&Auf dem Server

Vorgehensweise bei CreatedOnServer(Failure, StandardProcessing)

Auswahlelement = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Ende des Verfahrens

Die Vorteile dieser Methode bestehen darin, dass der Vergleichstyp für die Auswahl nicht nur wie im ersten Fall auf Gleich, sondern auch auf Mehr, Weniger usw. eingestellt werden kann.

Allerdings hat diese Methode auch einen ganz wesentlichen Nachteil: Bei dieser Auswahl öffnet sich das Formular immer. Wo auch immer sie angerufen wurde. Daher sollte dieses Formular nicht als Hauptformular bezeichnet werden. Und wenn es dennoch das Hauptformular ist, muss vor der Installation der Auswahl eine Analyse durchgeführt werden, von wo aus dieses Formular geöffnet wird. Zum Beispiel die Analyse von Formularparametern.

3. Schließlich kann die Auswahlbedingung in einer benutzerdefinierten Abfrage platziert werden, die Daten für eine dynamische Liste auswählt. Beispielsweise müssen wir eine Liste von Rechnungen öffnen, die den in der Artikelliste markierten Artikel enthalten.

Erstellen Sie dazu in Form einer Liste von Elementen einen Befehl und eine entsprechende Schaltfläche Rechnungen erhalten.

Füllen wir den Ausführungshandler für diesen Befehl wie folgt aus:

&OnClient

Prozedur ReceiptInvoices (Befehl)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Ende des Verfahrens

In diesem Handler erhalten wir das Formular für die Liste der Rechnungen und übergeben den Link zum aktuellen Artikel in der Artikelliste an den Formularparameter FilterByProduct und öffnen das Formular mit diesem Parameter.

Anschließend erstellen wir ein Dokumentenlistenformular Kaufrechnung und erstellen Sie das Formularattribut FilterByProduct, das wir beim Öffnen als Formularparameter verwenden. Öffnen wir nun die Eigenschaftenpalette des Hauptattributs des Listenformulars. Lasst uns die Flagge setzen BenutzerdefinierteAnfrage und in der Reihe Listeneinrichtung Klicken Sie auf Öffnen.

Geben Sie im Feld „Anfrage“ den folgenden Anfragetext ein:

WÄHLEN

Belegeingangsrechnung. Nummer,

Dokumenteingangsrechnung.Datum

AUS

Document.ReceiptInvoice AS DocumentReceiptInvoice

WO

Belegeingang Invoice.Products.Product = &Product

In der Anfrage verwenden wir den Parameter „Artikel“, der einen Link zur aktuellen Zeile in der Artikelliste erhält, die im Formularparameter „FilterBy Item“ der Rechnungsliste enthalten ist. Dazu schreiben wir im OnOpen-Listenformular-Ereignishandler Code, um den Wert des Produktanforderungsparameters festzulegen:

&OnClient

Eröffnungsverfahren (Fehler)

List.Parameters.SetParameterValue("Product", FilterByProduct);

Ende des Verfahrens

Hier List.Options ist eine Liste dynamischer Listenanforderungsparameter für das List-Attribut. Der Wert des Product-Parameters wird auf den Wert des FilterByProduct-Formularparameters gesetzt.

Als Ergebnis auf Knopfdruck Rechnungen erhalten In Form einer Artikelliste erhalten wir nur die Rechnungen aufgelistet, die den aktuell in der Artikelliste ausgewählten Artikel enthalten.

Ein Demobeispiel für die 3. Option befindet sich im Verzeichnis 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Das Beispiel wurde auf der Plattformversion 8.2.9.356 durchgeführt.

Auswahl auf verwalteten Formularen in 1C 8.3

In dem Artikel werden Optionen zum Installieren der Auswahl in verwalteten Formularen 1C 8.3 erläutert. Die Auswahl für eine dynamische Liste kann statisch oder dynamisch in der Benutzeroberfläche oder im Konfigurator eingestellt werden. Im Folgenden betrachten wir alle Auswahlmöglichkeiten.

  • Einstellungsauswahl im Konfigurator

Auswahl im Benutzermodus einstellen

Eine dynamische Liste ist im Gegensatz zu einer Tabelle oder einem Wertebaum eine geeignetere Lösung für die Implementierung von Formularen, die beliebige Listen enthalten, weil Die dynamische Liste bietet die größte Auswahl an Werkzeugen für die Arbeit mit Auswahl, Feldgruppierung und Sortierung. Diese Auswahl kann im Benutzermodus oder im Konfigurator vorgenommen werden, das Prinzip ist das gleiche.

Um die Auswahl im Enterprise-Modus einzurichten, müssen Sie den Befehl „Liste anpassen“ aufrufen.

Es öffnet sich ein Fenster.


Auf der Registerkarte „Auswahl“ wird eine Liste der Felder angezeigt, die sich in der aktuellen Liste befinden. Wählen Sie die Listenfelder aus, nach denen wir filtern möchten. Dies kann per Doppelklick oder per Drag & Drop erfolgen.


Wir legen den Vergleichstyp und -wert fest, klicken auf „Bearbeitung abschließen“, die Auswahl ist festgelegt.


Wenn Sie die Auswahl im Enterprise-Modus einrichten, werden auf dem Listenformular automatisch sogenannte Schnellauswahlfelder erstellt.


Damit die 1C-Plattform automatisch Schnellauswahlfelder erstellt, müssen Sie beim Entwickeln eines Formulars im Konfigurator eine Gruppe von Benutzereinstellungen angeben.


Diese Auswahl wird nur für den aktuellen Benutzer gespeichert, was eine flexible Anpassung der dynamischen Liste ermöglicht. Wenn die Aufgabe jedoch darin besteht, für alle Benutzer des Systems eine feste Auswahl für eine bestimmte Liste zu treffen, können wir diese nur über den Konfigurator lösen.

Einstellungsauswahl im Konfigurator

Im Konfigurator können wir zwei Arten der dynamischen Listenauswahl festlegen – fest und dynamisch. Die feste Auswahl kann einmalig konfiguriert werden, die dynamische oder programmatische Auswahl kann in Abhängigkeit von beliebigen Daten im System eingestellt werden.

Das Prinzip der Einstellung einer festen Auswahl im Konfigurator unterscheidet sich nicht von der Einstellung im oben beschriebenen Benutzermodus. Um die Auswahl festzulegen, müssen wir die dynamischen Listeneinstellungen öffnen.


Es öffnet sich ein Fenster.


Die Auswahl erfolgt auf die gleiche Weise wie im Benutzermodus.

Die Option „In Benutzereinstellungen einbeziehen“ legt fest, ob die im Konfigurator eingestellte Auswahl im Benutzermodus über den Menüpunkt „Liste anpassen“ verfügbar sein soll.


Dynamische (Software-)Auswahl

Oft besteht die Notwendigkeit, die Auswahl programmgesteuert festzulegen, beispielsweise beim Öffnen eines Auswahlformulars, wenn wir ein gesteuertes Formular mit Auswahl öffnen müssen. Dem Formular wird ein Parameter übergeben und die Auswahl wird auf Grundlage dieses Parameters festgelegt. Ein häufiges Beispiel hierfür ist die Auswahl von Verzeichniselementen nach Eigentümer.

Methoden

Wenn die zu entwickelnde Konfiguration das BSP-Subsystem „Basic Functionality“ enthält, kann die Softwareauswahl in der dynamischen Liste mit der Standardmethode installiert werden:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Signatur dieser Methode:

DynamischeListe Typ: DynamicList – Die Liste, in der Sie die Auswahl festlegen möchten.

Feldname Typ: String – Das Feld, anhand dessen Sie die Auswahl festlegen möchten.

Richtiger Wert Typ: Beliebig – Auswahlwert (Optional. Standardwert: Undefiniert. Hinweis: Wenn Sie Undefiniert übergeben, wird der Wert nicht geändert.)

Vergleich anzeigen Typ: DataComposition-Vergleichstyp – Auswahlbedingung.

Leistung Typ: String – Darstellung eines Datenzusammensetzungselements (Optional. Standardwert: Undefiniert. Wenn angegeben, wird nur das Verwendungsflag mit der angegebenen Darstellung gedruckt (es wird kein Wert gedruckt). An „clear“ muss eine leere Zeichenfolge übergeben werden, damit der Wert erneut gedruckt wird.)

Verwendung Typ: Boolean – Flag zur Verwendung dieser Auswahl (Optional. Standard: Nicht definiert).

Anzeigemodus Typ: ItemDisplayModeDataCompositionSettings – Wie diese Auswahl dem Benutzer angezeigt wird. Mögliche Werte:

  • ElementanzeigemodusDatenlayouteinstellungen.Schnellzugriff – In der Schnelleinstellungsgruppe über der Liste.
  • ElementanzeigemodusDatenlayouteinstellungen. Normal – In Listeneinstellungen (im Untermenü „Mehr“).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Verhindern Sie, dass der Benutzer diese Auswahl ändert.

IdentifierUserSettings Typ: String – Eindeutiger Bezeichner für diese Auswahl (Wird zur Kommunikation mit Benutzereinstellungen verwendet).

Um einen Auswahlwert zu entfernen, müssen Sie die Standardmethode verwenden:

Allgemeiner ZweckClientServer. RemoveGroupElementsSelectionDynamicList()

Signatur dieser Methode:

DynamischeListe Typ: DynamicList – Formularattribut, für das Sie eine Auswahl festlegen möchten.

Feldname Typ: String – Name des Layoutfelds (wird nicht für Gruppen verwendet).

Leistung Typ: String – Darstellung eines Layoutfelds.

Wenn kein BSP im System vorhanden ist, kann die Auswahl mithilfe des DataComposition Field-Objekts unabhängig festgelegt werden.

Auswahlelement = List.Selection.Elements.Add(Type("DataComposition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Name"); Selection Element.Comparison Type = DataComposition Compare Type.Equal; Auswahl Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // Optionales Auswahlelement. RightValue = "Ivanov";

Durch diese Auswahl werden Zeilen ausgewählt, in denen der Wert „Vollständiger Name“ = „Ivanov“ ist.

Zur Verwendung von logischem „AND“, „OR“, „NOT“ ist der Datentyp DataCompositionSelectionElementGroup vorgesehen

Selection Group = List.Selection.Elements.Add(Type("Group of DataComposition Selection Elements")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Auswahlelement = Auswahlgruppe. Elemente. Add(Type("Datenzusammensetzungsauswahlelement")); Selection Element.LeftValue = NewDataCompositionField("Name"); Selection Element.Comparison Type = DataComposition Compare Type.Equal; Auswahl Element.RightValue = "Ivanov"; Auswahlelement = Auswahlgruppe. Elemente. Add(Type("Datenzusammensetzungsauswahlelement")); Selection Element.LeftValue = NewDataCompositionField("Name"); Selection Element.Comparison Type = DataComposition Compare Type.Equal; SelectionElement.RightValue = "Petrov";

Durch diese Auswahl werden Zeilen ausgewählt, in denen der Wert „Vollständiger Name“ = „Ivanov“ oder „Petrov“ ist.

Die Auswahl in einer dynamischen Liste kann auch durch Ändern des Textes der dynamischen Listenanforderung erfolgen. Diese Option funktioniert, wenn die dynamische Liste über eine „benutzerdefinierte Anfrage“ erstellt wird.


Fügen Sie dazu die Bedingung „WHERE IS THE TRUE“ zum Abfragetext hinzu...


Wie Sie sehen, ist dieser Ansatz im Hinblick auf das Schreiben von Code kompakter. Je komplexer die Auswahlbedingungen im tabellarischen Teil sind, die wir festlegen möchten, desto umständlicher wird die Option, die Auswahl über das Datenzusammensetzungs-Auswahlelement zu verwenden. Allerdings hat das Beispiel mit der Änderung des Anforderungstextes seine Nachteile – diese Implementierung ist nicht resistent gegen Codeänderungen. Sie haben beispielsweise eine solche Implementierung vorgenommen und vergessen, aber wenn Sie in Zukunft den Anforderungstext ändern möchten, indem Sie nach WHERE (ORDER, GROUP) einen Operator hinzufügen, müssen Sie bedenken, dass der Programmcode Folgendes enthält:

List.QueryText = List.QueryText + " And DirectoryUsers.Full Name V("Ivanov"","Petrov"")";

Wenn dies nicht berücksichtigt wird, kommt es zu einem Fehler, aber um dies zu vermeiden, können Sie es auf eine andere Implementierung ändern. Wir ergänzen den Anfragetext um folgende Bedingung:

WHERE (NICHT &SelectionInstalled ODER DirectoryUsers.Name IN (&PermittedName))

List.Parameters.SetParameterValue("SelectionSet", Vollständiger Name.Quantity() > 0); List.Parameters.SetParameterValue("Allowed Full Name", Full Name);

Hier ist der vollständige Name ein Array.

Wie Sie sehen, 2 Codezeilen gegenüber 10. Welche Methode Sie wählen, hängt von der spezifischen Anwendungsaufgabe ab.

Code 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Akzeptiert";
DirectoryList.Selection.Status.Set();

Für 1C 8.2:
Es gibt mehrere Möglichkeiten, ein Listenformular mit einer voreingestellten Auswahl zu öffnen. Schauen wir sie uns der Reihe nach an:

1. Die erste Methode besteht darin, dass Sie beim Öffnen des Formulars den Parameter Auswahlformular festlegen und das Listenformular mit diesem Parameter öffnen können. Der Auswahlparameter repräsentiert die Struktur. Die Namen der Elemente entsprechen den Namen der Felder, nach denen die Auswahl erfolgt, und die Werte enthalten die Auswahlwerte. Dies ist eine Option zur Erweiterung dynamischer Listen verwalteter Formulare. Das heißt, es existiert für Formulare, deren Hauptattribut ein Attribut vom Typ „Dynamische Liste“ ist, beispielsweise Listenformulare und Auswahlformulare.

Beim Öffnen des Formulars erfolgt die Auswahl anhand des angegebenen Feldes.
Code 1C v 8.2 UP // Im folgenden Beispiel wird beispielsweise eine Rechnungsliste mit Auswahl durch das Feld „Nummer“ gleich 333 geöffnet.
Auswahlwert = Neue Struktur("Nummer", "333");
SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Dokument. Empfangsrechnung. Listenformular", Auswahloptionen);

// Das folgende Beispiel öffnet beispielsweise eine Rechnungsliste
// mit Auswahl durch das Feld „Auftragnehmer“ gleich „OJSC Horns and Hooves“.
Auswahlwert = Neue Struktur("Gegenpartei", "OJSC Horns and Hooves");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Dokument. Empfangsrechnung. Listenformular", Auswahloptionen);

2. Sie können ein Listenformular ohne Parameter öffnen:
Code 1C v 8.2 UE OpenForm("Document. Receipt Invoice.List Form");

Und dann schreiben Sie im Ereignishandler des Formulars für die Rechnungsliste When CreatedOnServer Code, der eine Auswahl in der dynamischen Liste erstellt, die das Hauptattribut des Formulars ist:
Code 1C v 8.2 UP &OnServer

Auswahlelement = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Ende des Verfahrens

&Auf dem Server
Vorgehensweise bei CreatedOnServer(Failure, StandardProcessing)
Auswahlelement = List.Selection.Elements.Add(Type
(„DataCompositionSelectionElement“));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
Ende des Verfahrens

Die Vorteile dieser Methode liegen in der Vergleichsansicht Zur Auswahl können Sie nicht nur Gleich wie im ersten Fall, sondern auch Mehr, Weniger usw. einstellen.

Allerdings hat diese Methode auch einen ganz wesentlichen Nachteil: Bei dieser Auswahl öffnet sich das Formular immer. Wo auch immer sie angerufen wurde. Daher sollte dieses Formular nicht als Hauptformular bezeichnet werden. Und wenn es dennoch das Hauptformular ist, muss vor der Installation der Auswahl eine Analyse durchgeführt werden, von wo aus dieses Formular geöffnet wird. Zum Beispiel die Analyse von Formularparametern.

3. Schließlich kann die Auswahlbedingung in einer benutzerdefinierten Abfrage platziert werden, die Daten für eine dynamische Liste auswählt. Beispielsweise müssen wir eine Liste von Rechnungen öffnen, die den in der Artikelliste markierten Artikel enthalten.

Erstellen Sie dazu in Form einer Artikelliste einen Befehl und die entsprechende Schaltfläche Rechnungen erhalten.

Füllen wir den Ausführungshandler für diesen Befehl wie folgt aus:
Code 1C v 8.2 UP &OnClient
Prozedur ReceiptInvoices (Befehl)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Ende des Verfahrens

In diesem Handler erhalten wir das Formular für die Liste der Rechnungen und übergeben den Link zum aktuellen Artikel in der Artikelliste an den Formularparameter FilterByProduct und öffnen das Formular mit diesem Parameter.

Anschließend erstellen wir ein Formular für die Liste der Dokumente: Receipt Invoice und erstellen ein Formularattribut FilterBy Product, das wir beim Öffnen als Parameter des Formulars verwenden. Öffnen wir nun die Eigenschaftenpalette des Hauptattributs des Listenformulars. Legen Sie das ArbitraryRequest-Flag fest und klicken Sie in der Zeile Listeneinstellungen auf Offen.

Geben Sie im Feld „Anfrage“ den folgenden Anfragetext ein:
Code 1C v 8.2 UP SELECT
Belegeingangsrechnung. Nummer,
Dokumenteingangsrechnung.Datum
AUS
Document.ReceiptInvoice AS DocumentReceiptInvoice
WO
Belegeingang Invoice.Products.Product = &Product

In der Anfrage verwenden wir den Parameter „Artikel“, der einen Link zur aktuellen Zeile in der Artikelliste erhält, die im Formularparameter „FilterBy Item“ der Rechnungsliste enthalten ist. Dazu schreiben wir im OnOpen-Listenformular-Ereignishandler Code, um den Wert des Produktanforderungsparameters festzulegen:
Code 1C v 8.2 UP
&OnClient
Eröffnungsverfahren (Fehler)

List.Parameters.SetParameterValue("Product", FilterByProduct);

Ende des Verfahrens

Hier List.Options ist eine Liste dynamischer Listenanforderungsparameter für das List-Attribut. Der Wert des Product-Parameters wird auf den Wert des FilterByProduct-Formularparameters gesetzt.

Als Ergebnis erhalten wir durch Klicken auf die Schaltfläche „Rechnungen erhalten“ im Artikellistenformular eine Liste nur der Rechnungen, die den aktuell in der Artikelliste ausgewählten Artikel enthalten.

Informationen stammen von der Website