Dynamische Liste 1s 8.2 benutzerdefinierter Anforderungsparameter. Suchen Sie in einer dynamischen Liste

Bei der Finalisierung von Konfigurationen stößt jeder 1C-Programmierer auf dynamische Listen.
Eine dynamische Liste ist ein Schnittstellenobjekt, das zur Anzeige verschiedener Listen von Datenbankobjekten oder Nicht-Objekt-Daten – Registereinträgen – verwendet wird.
Beispielsweise wird eine dynamische Liste verwendet, um eine Liste von Elementen anzuzeigen:

Um die Fähigkeiten zu demonstrieren dynamische Liste lasst uns erschaffen externe Verarbeitung, fügen Sie das Hauptformular hinzu. Fügen wir dem Formular ein neues Attribut vom Typ „Dynamische Liste“ hinzu. Schauen wir uns seine Eigenschaften an und sehen, was sich darin befindet.
Wir interessieren uns für die Eigenschaft „Benutzerdefinierte Anfrage“. Wenn Sie es aktivieren, werden uns alle Funktionen einer dynamischen Liste angezeigt. Wir werden in der Lage sein, eine Anfrage mit fast allen Funktionen der 1C: Enterprise-Systemabfragesprache zu schreiben. Aktivieren Sie das Kontrollkästchen und klicken Sie auf den Link „Öffnen“:

Standardmäßig zeigt unsere Liste eine Artikelliste mit dem Gesamtsaldo für alle Lager an. Um eine solche Liste zu implementieren, fügen Sie die folgende Abfrage hinzu:


Als Haupttabelle wählen wir „Directory.Nomenclature“. Dadurch können wir mit einer dynamischen Liste wie mit einer Nomenklaturliste arbeiten – Verzeichniselemente hinzufügen, ändern und zum Löschen markieren. Außerdem ermöglicht die Installation der Haupttabelle das dynamische Auslesen von Daten – das bedeutet, dass die Auswahl je nach Bedarf portionsweise erfolgt.
Als nächstes müssen wir Formularelemente für unsere Liste erstellen:

Wenn wir versuchen, unsere Verarbeitung in dieser Form auszuführen, erhalten wir eine Fehlermeldung:


Um dies zu beseitigen, müssen Sie den Wert für den Parameter „Periode“ festlegen. Dazu können Sie die Methode „SetParameterValue“ der Sammlung „Parameters“ der dynamischen Liste verwenden. Die Methode benötigt zwei Parameter:
. „Parameter“ – Typ: String; DataCompositionParameter. Der Name des Parameters oder Datenzusammensetzungsparameters, dessen Wert Sie festlegen möchten;
. „Wert“ – Typ: Beliebig. Der festzulegende Wert.
Kann im „OnCreateOnServer“-Handler des Formulars aufgerufen werden:

Sie haben eine Frage oder benötigen Hilfe von einem Berater?


Wir bieten dem Benutzer die Möglichkeit, den Zeitraum für den Erhalt von Guthaben zu ändern. Fügen Sie dazu das Attribut und das damit verbundene Formularelement „Datum“ hinzu:


Im Handler „OnChange“ des Formularelements „Date“ rufen wir die Methode „SetParameterValue“ auf und übergeben als Wert den Wert des zugehörigen Attributs. Auf ähnliche Weise ändern wir das Verfahren „Beim Erstellen auf dem Server“ des Formulars. Da die Methode auf dem Client verfügbar ist, ist kein Aufruf des Servers erforderlich:


Wenn sich nun das Datum ändert, werden die Salden automatisch aktualisiert:




Nehmen wir an, dass Benutzer entweder aktuelle Salden oder geplante Einnahmen sehen möchten. Betrachten wir eine der Implementierungsoptionen. Fügen wir ein Formularattribut vom Typ Boolean und einen zugehörigen Schalter hinzu:


Wenn Sie den Wert des Schalters ändern, ändern wir den Text der Anfrage. Dazu nutzen wir den Eventhandler „On Change“ für das Formularelement „Display Quantity On Receipt“. Wir müssen die Eigenschaft „QueryText“ der dynamischen Liste abhängig vom Wert des Attributs ändern. Da diese Eigenschaft auf dem Client nicht verfügbar ist, muss eine Serverprozedur aufgerufen werden:


Ergebnis vorgenommene Änderungen:



Zusätzlich zu den primitiven Datentypen, die in jeder Programmiersprache zu finden sind, gibt es in 1C einzigartige Typen. Jeder von ihnen hat seine eigenen Eigenschaften, Methoden, Funktionen, Zwecke und Nutzungsnuancen im System. Einer dieser Typen ist eine dynamische Liste, die viele Anwendungsaufgaben erheblich erleichtert. Deshalb müssen Entwickler dieses universelle Werkzeug kennen und damit umgehen können.

Funktionen dynamischer Listen in 1C

Zweck dieser Art besteht aus der Anzeige von Informationen aus beliebigen Datenbanktabellen, unabhängig von deren Typ. Der Mechanismus wurde auf Basis von SKD erstellt und verfügt über ähnliche Fähigkeiten. Dies bedeutet jedoch nicht, dass Sie unbedingt eine Anfrage in der 1C-Sprache verfassen müssen, obwohl diese Möglichkeit besteht und genutzt werden sollte. Sie können einfach die Tabelle angeben, deren Informationen Sie interessieren, und 1C generiert selbstständig eine einfache Abfrage.

Um zu sehen, wie eine dynamische Liste entsteht und welche Daten sie anzeigt, müssen Sie die verwalteten Formulare dort öffnen, wo sie sich im Konfigurator befinden: in der Detailliste über KontextmenüÖffnen Sie seine Eigenschaften und achten Sie auf den Punkt „Benutzerdefinierte Abfrage“. Wenn kein Kontrollkästchen vorhanden ist, spiegelt der Parameter „Haupttabelle“ die Datenbanktabelle wider, aus der die Daten entnommen werden. Andernfalls spiegelt die dynamische Liste die Daten einer benutzerdefinierten Abfrage wider, die durch Öffnen der Listeneinstellungen angezeigt werden kann.

Das benutzerdefinierte Abfrageschema wird viel häufiger verwendet, da es eine hervorragende Möglichkeit bietet, eine Vielzahl von Daten zu kombinieren und anzuzeigen. Am häufigsten wird dieser Mechanismus verwendet, um Lagerbestände, Artikelpreise, Einnahmen, Ausgaben oder Einkäufe widerzuspiegeln. Sie müssen es vorsichtig verwenden, da die Leistung bei komplexen Abfragen sinken kann.

Eine weitere nützliche Eigenschaft einer dynamischen Liste öffnet sich, wenn Sie auf die Aufschrift „Listeneinstellungen“ klicken. Mit diesem Menü können Sie Informationen für Endbenutzer zugänglicher und verständlicher machen, selbst wenn Sie einen Standardsatz von Feldern verwenden. Unabhängig davon, ob die Anfrage willkürlich ist oder nicht, wird Ihnen die Registerkarte „Einstellungen“ angezeigt, in der Sie Folgendes festlegen können:

  • Dynamische Listenauswahl;
  • Gruppen;
  • Sortierung;
  • Dekor.

Die Verwendung von Parametern macht dynamische Listen universell und recht flexibel. Sie können sie auch mit Details in einem verwalteten Formular verknüpfen, und die Daten ändern sich abhängig von den vom Benutzer ausgewählten Parametern. Die Verwendung dieser Mechanismen kann anhand von Beispielen realer Probleme verstanden und gewürdigt werden.

Betrachten Sie als Beispiel die Aufgabe, die Überreste der Nomenklatur in einer kontrollierten Form wiederzugeben. In der Praxis kommen solche Aufträge recht häufig in unterschiedlichen Konfigurationen vor, als Hilfsmittel bietet sich eine dynamische Liste an. Für diese Aufgabe müssen wir eine benutzerdefinierte Abfrage, dynamische Listenparameter und deren Einstellungen verwenden.

Zur besseren Übersichtlichkeit erstellen wir eine separate externe Verarbeitung und platzieren darauf eine dynamische Liste. Um unsere Pläne umzusetzen, wird die Tabelle mit der Nomenklatur nicht ausreichen, daher müssen wir eine beliebige Abfrage zulassen. Darin beschreiben wir die linke Verbindung des Verzeichnisses mit der Artikelliste und dem Saldenregister und legen das Verzeichnis als Haupttabelle fest. Mit diesem Schema können Benutzer, die mit einer dynamischen Liste arbeiten, Elemente hinzufügen oder ändern.



SELECT NomenclatureList.Name AS Name, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEFT CONNECTION RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS GoodsOn WarehousesRemaining Software NomenclatureList.Link = HäuserRemainings.Nomenklatur WO

Da unsere Anfrage den Parameter „CurrentDate“ verwendet hat, müssen wir seinen Wert festlegen, bevor wir die Verarbeitung verwenden. Weisen Sie ihm dazu im Formularmodul in der Prozedur „When CreatedOnServer“ mit einem Standardbefehl die Funktion „CurrentSessionDate“ zu. Wir müssen auch die dynamische Liste im Kontrollformular anzeigen und die Reihenfolge der Felder aus Gründen der Übersichtlichkeit ändern. Ziehen Sie das Attribut „Verbleibende Nomenklatur“ in die Formularelemente (oberer linker Teil) und ändern Sie mit den blauen Pfeilen die Reihenfolge der Felder in der Tabelle auf dem Formular.

&Auf der Serverprozedur, wenn sie auf dem Server erstellt wird (Fehler, Standardverarbeitung), bleiben die ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure bestehen


Bereits zu diesem Zeitpunkt können wir unsere externe Verarbeitung in 1C öffnen und sehen, dass die dynamische Liste funktioniert. Wir können Salden einsehen, Artikel und Gruppen erstellen und suchen. Oft möchten Kunden die Möglichkeit hinzufügen, das Datum auszuwählen, an dem sie ihre Salden sehen möchten. Bei einem Formular mit dynamischer Liste wird dies durch sichergestellt zusätzliches Feld und das Einstellen von Parametern damit.

Fügen Sie das Attribut „DateRemaining“ vom Typ „Date“ hinzu und übertragen Sie es auf die Formularelemente. Im Feld Ereignisse erstellen wir das Ereignis „OnChange“ und schreiben den Code zum Setzen des Parameters „CurrentDate“, der in der dynamischen Anfrage verwendet wird. Damit der Benutzer beim Öffnen des Formulars sofort versteht, an welchem ​​Datum er die Salden sieht, werden wir kleine Änderungen am Verfahren „When CreatedOnServer“ vornehmen.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Ende der Prozedur &Auf der Client-Prozedur Verbleibendes DateWhenChanged(Element)Nomenclature Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); EndProzedur

Daher kann unser dynamisches Listenformular die Salden zu jedem Datum widerspiegeln.

Wir haben nur einen kleinen Teil der Möglichkeiten dieses Toolkits betrachtet, aber das reicht bereits aus, um den Nutzen dieser Art dynamischer Liste zu verstehen. Ein ähnlicher Mechanismus wird für viele Aufgaben verwendet, am häufigsten ist er jedoch in zu finden typische Konfigurationen V kontrollierte Formen:

  1. Auswahl;
  2. Listen.

Um eine dynamische Liste und deren Anforderung in standardmäßig verwalteten Formularen zu erhalten, muss der Entwickler das gewünschte Formular im Konfigurator öffnen. Im Detailbereich finden Sie die Details mit dem Datentyp „DynamicList“ (meistens ist er fett hervorgehoben). Seine Eigenschaften enthalten den Anforderungstext, Auswahlmöglichkeiten und andere Einstellungen.

Endlich ist der Traum eines jeden Siebenjährigen wahr geworden. Wie oft haben Benutzer des Programms 7.7 nach einer normalen Auswahl an Artikeln gefragt? Damit Sie Salden, Preise sehen und Filter einstellen können. Wir mussten uns verschiedene Tricks einfallen lassen, unter anderem das Schreiben externer Komponenten. In 1C 8.2 erschienen dynamische Listen. Ich schlage vor, darüber nachzudenken, was es ist und was sie uns in 1C 8.3 bieten können.

Nehmen wir einige als Grundlage Testkonfiguration 1C: „Unternehmensbuchhaltung 3.0“. Wir werden jetzt keine Auswahl treffen, sondern einfach ein weiteres Auswahlformular im Verzeichnis „Nomenklatur“ hinzufügen und es vorübergehend zum Hauptformular machen:

Bei der Erstellung fügt das System dem Formular standardmäßig ein Tabellenfeld vom Typ „Dynamische Liste“ hinzu.

Schauen wir uns seine Eigenschaften an und sehen, was sich darin befindet.

Zunächst interessiert uns die Checkbox „Individuelle Anfrage“. Dadurch werden uns alle Vorteile einer dynamischen Liste offenbart. Wir werden die Möglichkeit haben, unsere eigene Anfrage mit Parametern zu schreiben. Aktivieren Sie das Kontrollkästchen und klicken Sie auf den Link „Öffnen“:

Es öffnet sich ein Fenster mit dem fertigen Code. Vorerst werden dort lediglich alle Felder des Verzeichnisses „Nomenklatur“ aufgelistet.

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

Wie Sie sehen, gibt es einen Aufruf-Button „ “ und eine Checkbox, die es ermöglicht, den Inhalt der Liste dynamisch zu ändern. Das heißt, wenn ein anderer Benutzer etwas im Verzeichnis ändert, ändert sich dies auch in unserer Liste. Darüber hinaus gibt es einen Reiter „Einstellungen“, auf den wir aber später eingehen.

Benutzerdefinierte Abfrage in dynamischer Liste

Erstellen wir zunächst die benötigte Anfrage mit Salden und Preisen. Ungefähr so:

Registerkarte „Einstellungen“.

Und jetzt das Beste! Gehen Sie zur Registerkarte „Einstellungen“. Und wir sehen sofort, dass wir auf der ersten Registerkarte für jedes Feld in der Anfrage beliebige Auswahlen treffen können:

Programmgesteuertes Festlegen von Abfrageparametern in einer dynamischen Liste 1C 8.3

Vergessen Sie nicht, dass wir in der Anfrage zwei Parameter haben: „Zeitraum“ und „Preistyp“. Wir müssen sie in die Anfrage übergeben, sonst kommt es zu einem Fehler.

Schreiben wir diese Parameter in die Formularparameter und fügen die folgenden Zeilen im Formularmodul hinzu:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) Liste. Optionen. SetParameterValue("Period" , Parameters. Date) ; Aufführen. Optionen. SetParameterValue("PriceType", Parameters.PriceType) ; EndProcedures Home-Notizen von Through the Looking Glass

21.04.2014 Empfang dynamischer Listendaten

Implementiert in Version 8.3.6.1977.

Wir haben die Möglichkeit implementiert, Daten einfach und bequem über eine dynamische Liste anzuzeigen.

Möglicherweise benötigen Sie dynamische Listendaten, um sie in einer nicht standardmäßigen, „spezifischen“ Form zu drucken. Oder um damit bestimmte Aktionen durchzuführen. Senden Sie beispielsweise einen Brief an alle Auftragnehmer, die Sie anhand bestimmter Kriterien in der Liste ausgewählt haben.

Darüber hinaus gibt es eine Reihe von Aufgaben, bei denen der Benutzer neben der Liste der Elemente auch die zu dieser Liste zugehörigen zusammenfassenden Daten sehen möchte. Wenn er beispielsweise Produkte einer bestimmten Produktgruppe und eines bestimmten Lieferanten ausgewählt hat, möchte er sofort die Gesamtzahl dieser Produkte in der Datenbank sehen.

Eine dynamische Liste allein kann Ihnen diese Informationen nicht liefern. Der Zweck einer dynamischen Liste besteht darin, Folgendes bereitzustellen Schnellansicht große Datenmengen. Daher liest es die Daten in Blöcken, die für die Anzeige auf einem oder zwei Bildschirmen erforderlich sind. Und „weiß beispielsweise nichts“ über die Gesamtdatenmenge, die er zählen muss.

Im Allgemeinen, um zu bekommen Weitere Informationen Wenn der Benutzer möchte, müssen Sie die Datenbank abfragen. Genau das gleiche wie das, das in der dynamischen Liste verwendet wird.

Früher war das möglich. Aber es war nicht immer einfach. Schließlich mussten Sie zusätzlich zum Text der ursprünglichen Anfrage, mit der die dynamische Liste arbeitet, alle Auswahlen, Sortierungen und anderen Parameter kennen, die der Benutzer interaktiv in der Tabelle mit den Daten festlegt.

Jetzt kann dieses Problem einfach gelöst werden. Die dynamische Listentabelle verfügt jetzt über zwei neue Methoden:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

So erhalten Sie das Datenlayoutschema selbst und vor allem alle seine Einstellungen, dank derer der Benutzer die Liste genau so sieht. Sie müssen lediglich das Layout programmgesteuert erstellen und in der Wertesammlung anzeigen (z Softwareverarbeitung) oder in Tabellenkalkulationsdokument(zur Anzeige):

Als Ergebnis erhalten Sie eine Struktur (oder einen Bericht) mit Spalten und Zeilen, die in einer dynamischen Listentabelle angezeigt werden.

Wichtig ist, dass das Layout und die Einstellungen, die Sie von der dynamischen Listentabelle erhalten, unter anderem die Sichtbarkeit der Spalten und die angewendete Suche berücksichtigen. Da die Einstellungen separat bezogen werden, können Sie die Zusammensetzung der Felder für Ihre Zwecke ändern und erhalten beispielsweise alle Spalten der Liste und nicht nur die, die für den Benutzer sichtbar sind.

Bei der Ausgabe in ein Tabellenkalkulationsdokument gibt es noch einen weiteren angenehmen Moment. Im Allgemeinen entspricht das Erscheinungsbild des Berichts Aussehen dynamische Listentabellen zum Zeitpunkt des Empfangs des Schemas und der Einstellungen. Einschließlich der bedingten Gestaltung der Tabelle. Nur wenn Sie das bedingte Design des Formulars auf den Bericht übertragen möchten, sind einige zusätzliche Aktionen erforderlich.



Wird geladen...
Spitze