Einrichten einer dynamischen Liste 1s 8.3. Einschränkungen und Funktionen

Heimnotizen 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. Versenden 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. Alles, was Sie tun müssen, ist, das Layout programmgesteuert zu erstellen und es an eine Wertesammlung (für die programmgesteuerte Verarbeitung) oder an auszugeben 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.

Drucken (Strg+P)

Dynamische Liste

1. Allgemeine Information

Eine dynamische Liste ist ein spezieller Datentyp, der es Ihnen ermöglicht, beliebige Informationen aus Datenbanktabellen in einem Formular anzuzeigen. Dazu müssen Sie die Tabelle angeben, aus der Sie Daten anzeigen möchten, oder die resultierende Auswahl in einer Abfragesprache beschreiben.
Der Mechanismus basiert auf einem Datenkompositionssystem und bietet Funktionen zum Sortieren, Auswählen, Suchen, Gruppieren und bedingten Formatieren der empfangenen Daten. In diesem Fall ist die Datenquelle eine Anfrage, die entweder automatisch vom System generiert wird (basierend auf den angegebenen Daten) oder manuell vom Entwickler geschrieben wird.

Reis. 1. Optionen zum Erstellen einer dynamischen Liste

Beim Erstellen von Formularattributen des Typs DynamischeListe Ein Entwickler kann zwei Möglichkeiten wählen, eine Datenabfrage zu erstellen:
● Durch Angabe der Haupttabelle – in diesem Fall müssen Sie nur die Tabelle (Haupttabelleneigenschaft) angeben, von der Sie Daten erhalten möchten, und das System generiert automatisch eine Abfrage für die Daten (siehe rechter Teil in Abb. 1).
● Manuelles Generieren einer Anfrage – dazu müssen Sie die Eigenschaft „Benutzerdefinierte Anfrage“ festlegen (siehe linke Seite von Abb. 1). Danach ist die manuelle Generierung einer Anfrage zum Abrufen von Daten aus der Infobase verfügbar.
Eine Abfrage kann Daten aus mehreren Tabellen abrufen, sodass Sie eine Primärtabelle angeben können. Auf diese Weise kann die dynamische Liste bestimmen, welche Daten primär und welche sekundär sind, und Informationen korrekt auswählen und anzeigen sowie Standardbefehle bereitstellen. Wenn es jedoch nicht möglich ist, die Haupttabelle in der Abfrage zu ermitteln, kann sie nicht angegeben werden, aber dann
Die dynamische Liste stellt keine Befehle bereit, die sich auf die Haupttabelle beziehen. Darüber hinaus wird in diesem Fall (ohne Angabe der Haupttabelle) die Effizienz der Datenbeschaffung durch eine dynamische Liste erheblich reduziert.
Um die Leistung zu verbessern, wird empfohlen, alle Verknüpfungen, die in einer benutzerdefinierten Abfrage nur zum Abrufen zusätzlicher Daten verwendet werden, mithilfe einer Abfragesprachenerweiterung für das Datenkompositionssystem optional zu machen.
Für eine dynamische Liste, die das Hauptformularattribut darstellt, ist es möglich, Auswahlwerte mithilfe eines Formularparameters festzulegen Auswahl. Hierzu ist es erforderlich, dass sich im Parameter der Name der Struktureigenschaft befindet Auswahl,
stimmte mit dem Namen des dynamischen Listenauswahlfelds überein. In diesem Fall wird der Wert der Struktureigenschaft als rechter Wert des Auswahlelements festgelegt. Wenn als Wert eines Elements des Auswahlparameters eines dynamischen Listenformulars ein Array, ein festes Array oder eine Werteliste übergeben wird, wird der Auswahl eine Bedingung mit der Option „In Liste“ im richtigen Wert hinzugefügt davon wird eine Liste von Werten platziert (in die das Array und das feste Array konvertiert werden).
Eine beliebige Abfrage in einer dynamischen Liste kann eine Abfrage sein, bei der ein Parameter zum Generieren des Werts eines Felds verwendet wird, zum Beispiel:

WÄHLEN
AUSWAHL
WHEN Delivery.Coefficient = 1 THEN &Presentation
SONST Lieferung. Koeffizient
END AS-Verhältnis
AUS

Wenn außerdem der Typ des Parameterwerts vom Typ des Objektattributs abweicht (z. B. Requisiten1 Typ hat Nummer, und der Parameterwert ist Typ Linie), um das Feld korrekt anzuzeigen, müssen Sie den Parameterwert explizit in den gewünschten Typ umwandeln:

WÄHLEN
AUSWAHL
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. Koeffizient
END AS-Verhältnis
AUS
Dokument.Lieferung von Produkten, WIE man liefert

Wenn das Feld, durch das die Auswahl festgelegt wird, mithilfe von Funktionsoptionen deaktiviert ist, wird die Auswahl durch ein solches Feld nicht installiert, selbst wenn der Auswahlwert als Formularparameter oder Auswahlparameter-Links übergeben wird.
Mithilfe der Eigenschaft „Dynamisches Datenlesen“ geben Sie einer dynamischen Liste an, dass Daten in kleinen Portionen gelesen werden müssen
(Weitere Einzelheiten zu Möglichkeiten zum Abrufen von Daten mithilfe einer dynamischen Liste und Daten-Caching finden Sie unten.) Unabhängig von diesem Attribut gelten folgende Bedingungen:

● Wenn der Ansichtsmodus auf hierarchische Liste eingestellt ist, werden nur die Daten der aktuellen Gruppe und die Daten aller übergeordneten Elemente (ohne untergeordnete Elemente) gelesen.
● Wenn der Baumansichtsmodus eingestellt ist, werden nur die Daten gelesen offene Knoten Baum.
● Das einmalige Laden dynamischer Listendaten wird nicht unterstützt, wenn hierarchisches Durchsuchen eingestellt ist (Anzeigeeigenschaft ist auf Baum gesetzt) ​​und die anfängliche Baumanzeige auf Alle Ebenen erweitern eingestellt ist. Um Daten zu erhalten, werden so viele Anfragen an den Server gestellt, wie Knoten in der angezeigten Liste vorhanden sind.
Innerhalb eines einzelnen Datenabrufs verwendet eine dynamische Liste zuvor erstellte temporäre Tabellen wieder, wenn die folgenden Bedingungen erfüllt sind:
● Die Listen-Batch-Abfrage enthält keine Abfragen nach der Haupt-Batch-Abfrage.
● Die Zusammensetzung der temporären Tabellen und der darin enthaltenen Felder bleibt gegenüber der vorherigen Ausführung der Stapelanforderung unverändert.

Bei ihrer Arbeit verwendet die dynamische Liste die Werte der folgenden Eigenschaften von Metadatenobjektdetails:
● Format,
● Bearbeitungsformat,
● Hinweis,
● Zeichen zur Hervorhebung negativer Werte,
● Maske,
● mehrzeiliges Moduszeichen,
● Zeichen einer fortgeschrittenen Bearbeitung,
● Passwortmodus.
Bei der Anzeige und Bearbeitung der Auswahl und Parameter des Datenkompositionssystems wird das Bearbeitungsformat des entsprechenden Feldes verwendet.

2. Einschränkungen und Funktionen

Denken Sie beim Festlegen der Auswahl in einer dynamischen Liste daran, dass die Auswahl keine Auswirkungen auf Gruppen hat, wenn der Anzeigemodus für die dynamische Liste „Hierarchische Liste“ oder „Baum“ ist. Mit „Gruppen“ meinen wir ein Element eines Verzeichnisses oder Plans von Merkmalstypen, dessen ThisGroup-Eigenschaft auf True gesetzt ist.
Es werden Qualifikationen angewendet, die automatisch von einer dynamischen Liste auf die Standarddetails „Eigentümer“, „Übergeordnetes Element“, „Datum“, „Zeitraum“ und „Diese Gruppe“ angewendet werden
Standardmittel Datenkompositionssysteme. Die Auswahl, die automatisch durch eine dynamische Liste auf Schlüsselfelder angewendet wird, kann sowohl mit Standardmitteln des Datenkompositionssystems als auch durch direktes Hinzufügen von Bedingungen zum Anforderungstext angewendet werden IN zu den Feldern der Haupttabelle. Durch die Anwendung von Auswahlen mithilfe von Layout-Tools können diese sowohl in verschachtelten Abfragen als auch in Parametern virtueller Tabellen angewendet werden.

Bei der Entwicklung dynamischer Listen wird empfohlen, alle dynamischen Listen mit benutzerdefinierten Abfragen zu testen. Während des Überprüfungsprozesses sollten Sie sicherstellen, dass eine Listenabfrage verschachtelte Abfragen oder virtuelle Tabellen enthält und in diesen Feldern mit Aliasnamen verfügbar sind, die mit den Aliasnamen der Standarddetails „Eigentümer“, „Übergeordnetes Element“, „Datum“, „Zeitraum“, „Diese Gruppe“ oder „Schlüssel“ übereinstimmen Auswahl, dann sind diese Felder gültig und entsprechen den Standarddetails, mit denen ihr Spitzname übereinstimmt. Ist dies nicht der Fall, sollten Sie die Anfrage so ändern, dass sie mit oder übereinstimmt
der Spitzname war anders.
Wenn Sie sich dafür entscheiden, eine Anfrage manuell zu generieren, gelten für die Anfrage einige Einschränkungen:
● Die Verwendung der FIRST-Anweisung in einer dynamischen Listenabfrage wird nicht unterstützt. Wenn Sie eine durch die Anzahl der Datensätze in einer dynamischen Liste begrenzte Auswahl verwenden müssen, sollten Sie die Anfrage zum Generieren einer dynamischen Liste so überarbeiten, dass der eigentliche Inhalt der Anfrage in einer Unterabfrage platziert wird, und die Anzahl der Datensätze begrenzen in dieser Unterabfrage empfangen. Sie können anstelle einer Unterabfrage auch eine temporäre Tabelle verwenden.
● Auswahl, Sortierung und Gruppierung werden nicht unterstützt:

  • Entsprechend den Angaben der tabellarischen Teile.
  • Felder anzeigen.
  • DataVersion-Feld.
  • Vordefiniertes DataName-Feld.
  • Feld vom Typ „Kontenplantabelle“.
  • Feld Art der Bewegung der Akkumulationsregistertabelle.
  • Feldtypwerte der Merkmalstypplantabelle.
  • Typfeld Typ;
  • Feld vom Typ String (unbegrenzte Länge).
  • Feld vom Typ BinaryData.

● Das Sortieren und Gruppieren nach Subconto-Feldern wird nicht unterstützt<НомерСубконто>und ViewSubconto<НомерСубконто>Tabellen MovementsSubconto des Buchhaltungsregisters.
● Das Gruppieren nach Feldern, bei denen es sich um Abfragesprachenausdrücke handelt, die Aggregatfunktionen enthalten, wird nicht unterstützt.
● Bei Auswahl der Haupttabelle gelten für die dynamische Listenabfrage folgende Einschränkungen:

  • Verknüpfungen werden nicht unterstützt.
  • Der Abschnitt ORDER BY wird nicht unterstützt. Sie sollten eine Abfrage ohne Haupttabelle verwenden oder die erforderliche Reihenfolge über die dynamischen Listeneinstellungen festlegen.

● Wenn eine dynamische Liste als hierarchische Liste oder Baum angezeigt wird, wird ein Eintrag nicht als dynamische Liste angezeigt, es sei denn, mindestens ein übergeordneter Eintrag dieses Eintrags wird angezeigt. Mit anderen Worten: Um ein Element einer hierarchischen Liste anzuzeigen, muss eine dynamische Liste auch alle übergeordneten Elemente dieses Elements bis zum Anfang der Liste anzeigen. In diesem Fall meinen wir mit dem Anfang der Liste beides
das Stammelement des hierarchischen Objekts, das von einer dynamischen Liste angezeigt wird, oder das als ParentTopLevel-Eigenschaft einer Formulartabellenerweiterung für eine dynamische Liste festgelegte Element.

Die Verwendung der folgenden Tabellen als Haupttabelle einer dynamischen Liste wird nicht unterstützt:

● Eine Tabelle, die keinen Schlüssel hat, der jeden Tabellendatensatz eindeutig identifiziert (eine Referenz für Objekttabellen und einen Datensatzschlüssel für Registertabellen). Die folgenden Tabellen können jedoch als Haupttabelle einer dynamischen Liste festgelegt werden (obwohl sie keinen Schlüssel haben):

● Subconto-Tabelle des Buchhaltungsregisters;
● alle virtuellen Tabellen des Buchhaltungsregisters, mit Ausnahme der Tabelle MovementsSubconto;
● Tabellen mit konstanten Werten (einschließlich der Konstantentabelle);
● Tabellen externer Datenquellen ohne Schlüsselfelder;
● Cube-Tabellen externer Datenquellen;
● Akkumulationsregistertabellen:

  • Revolutionstisch;
  • Bilanztabelle;
  • Tabelle der Umsätze und Salden.

● Berechnungsregistertabellen:

  • Tabelle der tatsächlichen Gültigkeitsdauer;
  • Zeitplandaten;
  • Grundinformationen.

● Tabellen tabellarischer Teile von Objekten;
● Änderungsregistrierungstabellen (in Datenaustauschmechanismen verwendet);
● Sequenztabellen;
● Umrechnungstabellen (wird in periodischen Abrechnungsmechanismen verwendet).
● Eine Tabelle, die in einer Abfrage nur in einem Outer-Join verwendet wird.

Mit anderen Worten: Eine dynamische Liste mit der angegebenen Haupttabelle funktioniert korrekt, wenn als Ergebnis der Ausführung der Abfrage
Wenn als Datenquelle angegeben wird, erhöht sich die Anzahl der aus der Haupttabelle erhaltenen Zeilen nicht (unter Berücksichtigung der auferlegten Auswahl). Wenn sich durch die Ausführung einer Abfrage die Anzahl der durch die Abfrage aus der Haupttabelle ermittelten Zeilen erhöht, führt dies zu einer Verletzung der Eindeutigkeit des Schlüssels der in der Liste angezeigten Datensätze der Tabelle. In diesem Fall müssen Sie die Verwendung der Haupttabelle der dynamischen Liste deaktivieren.
Wenn Sie mit einer dynamischen Liste arbeiten, müssen Sie Zugriffsrechte auf die von der Liste angezeigten Details berücksichtigen:
● Daten aus dynamischen Listenspalten, die mit der Eigenschaft „Immer verwenden“ gekennzeichnet sind, für die der aktuelle Benutzer jedoch nicht über das Ansichtsrecht verfügt, werden nicht an die Clientseite übertragen. Zugriff auf Daten solcher Spalten (mithilfe der CurrentData-Eigenschaft und der RowData()-Methode)
Clientseitig nicht möglich.
● Wenn der aktuelle Benutzer nicht über das Recht „Anzeigen“ für ein Schlüsselfeld einer dynamischen Liste verfügt, führt das Abrufen von Daten aus dieser dynamischen Liste zu einem Zugriffsverletzungsfehler.
Für eine dynamische Liste, die eine Aufzählungsliste anzeigt, gibt es keine Option zum interaktiven Anpassen der Liste.
Die Zusammensetzung der Spalten und Einstellungen der dynamischen Liste werden über Aliase der Auswahlfelder mit den Abfragefeldern verknüpft. Wenn in einer Abfrage für ein Auswahlfeld kein Alias ​​angegeben wird und es sich bei dem Feld um ein Systemfeld handelt, wird der Feldname für die englische Version der integrierten Sprache als Alias ​​verwendet.
Die angegebene Beziehung bedeutet, dass beim Ändern (oder expliziten Angeben eines Alias ​​für ein Feld, für das ein automatischer Alias ​​verwendet wurde)
Alias ​​des Abfragefelds, das die Daten der dynamischen Liste generiert, gehen die Attributeinstellungen der dynamischen Liste verloren, die Formularelemente „verlieren“ die angezeigten Details, die Einstellungen der dynamischen Liste werden falsch usw.
Wenn die Datenquelle einer dynamischen Liste eine Tabelle (regulär oder virtuell) ist, die es Ihnen ermöglicht, eine Auswahl nach Zeitraum festzulegen, und wenn der Benutzer den Anzeigezeitraum in einer solchen dynamischen Liste festlegt (Befehl Datumsintervall festlegen...),
Die angegebenen Periodengrenzen werden als Auswahlwerte oder virtuelle Tabellenparameter festgelegt. Wenn mittels Spracherweiterung
Bei Abfragen für das Datenkompositionssystem wurden die Namen der virtuellen Tabellenparameter explizit angegeben - die Parameter mit den angegebenen
Namen. Tabellen, für die es möglich ist, den Zeitraum für die Anzeige oder Verarbeitung von Daten zu steuern:
● Registertabellen (hauptsächlich oder virtuell), für die eine Auswahl nach Zeitraum möglich ist (für das Berechnungsregister - nach Registrierungszeitraum);
● Haupttabellen mit Dokumenten, Geschäftsprozessen und Aufgaben;
● Haupttabellen der Dokumentenjournale;
● Hauptsequenztabellen, Sequenzgrenztabellen.
Der Abfrageparameter der dynamischen Liste kann ein Array oder eine Werteliste sein. Handelt es sich bei dem Parameter jedoch um eine Werteliste, wird nur der erste Wert in der Liste als Auswahlwert verwendet. Wenn eine dynamische Liste eine Abfrage mit Parametern verwendet, muss die anfängliche Einstellung der Parameterwerte im OnCreateOnServer-Handler durchgeführt werden.
Beachten Sie bei der Anzeige dynamischer Listendaten die folgenden Punkte:
● Wenn Sie die Eigenschaften einer dynamischen Liste programmgesteuert ändern, werden die mit der Liste verknüpften Befehlsfelder nicht automatisch neu gefüllt.
mit dieser dynamischen Liste.
● Wenn mehrere Felder mit dem Gruppierungsmodus in einer Zelle zu einer Gruppe gruppiert sind und in den gruppierten Feldern ein Feld vorhanden ist, das als Kontrollkästchen angezeigt wird, wird dieses Kontrollkästchen in der resultierenden Zelle immer zuerst angezeigt (links davon). Text).
Wenn in einer dynamischen Liste der Datentyp für Felder bestimmt wird, deren Ausdrücke Parameter, Felder oder Literale enthalten, wird der resultierende Typ durch die Typen der Felder und Literale bestimmt. Wenn der Parameterwerttyp nicht im resultierenden Datentyp enthalten ist, wird sein Wert abgeschnitten.
Im folgenden Beispiel hat das Feld beispielsweise den Typ „Zahl“.

AUSWAHL
WENN ES EINE LÜGE IST
DANN 5
ANSONSTEN
&Parameter
ENDE

Wenn Sie den Parameter Parameter auf einen Wert eines anderen Typs festlegen, erhält die dynamische Liste für dieses Feld den Wert 0 (den Standardwert für den Typ „Zahl“).
Wenn Sie in einer solchen Situation einen Parameter eines anderen Typs auswählen müssen, wird empfohlen, das Abfragesprachenkonstrukt zu verwenden ÄUSSERN. Zum Beispiel,
Wenn Sie im obigen Beispiel eine Zeichenfolge mit maximal 100 Zeichen an den Parameter übergeben müssen, sollten Sie die einfache Angabe des Parameters durch einen Ausdruck mit einer expliziten Typumwandlung ersetzen:

AUSWAHL
WENN ES EINE LÜGE IST
DANN 5
ANSONSTEN
EXPRESS(&Parameter AS String(100))
ENDE

Wenn der beliebige Text einer dynamischen Listenanforderung Parameter in den Ausdrücken der Auswahlfelder verwendet, sollten Sie die Art der Parameter mithilfe des Konstrukts explizit angeben ÄUSSERN. Zum Beispiel statt &Nomenklatur AS-Nomenklatur verwenden
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Nomenclature. Andernfalls könnte die Suche über die Suchleiste funktionieren
falsch sein oder Fehler erzeugen.

3. Methoden zum Abrufen und Zwischenspeichern von Daten mit einer dynamischen Liste

Beim Abrufen der anzuzeigenden Daten verwendet eine dynamische Liste eine von drei Methoden:
1. Das Lesen aus der Datenbank erfolgt in Blöcken mit einer Anzahl von Datenelementen, die geringfügig größer ist als die Anzahl der gleichzeitig in der Liste angezeigten Zeilen (jedoch nicht weniger als 20). Die Daten werden nicht auf dem Server zwischengespeichert.
2. Das Auslesen aus der Datenbank erfolgt in Seiten mit 1.000 Datenelementen. Daten werden auf dem Server zwischengespeichert. Hierarchische Daten werden zwischengespeichert: Für jedes übergeordnete Element werden nicht mehr als zwei Seiten mit Elementen zwischengespeichert. Pro dynamischer Liste werden nicht mehr als 20 Seiten mit Elementen zwischengespeichert. Das Caching wird durch eine dynamische Liste für die folgenden Tabellen aktiviert:
● Auswahlkriterien;
● Alle Tabellen des Buchhaltungsregisters, mit Ausnahme der Haupttabelle und der MovementsSubconto-Tabelle;
● Alle Akkumulationsregistertabellen außer der Haupttabelle;
● Alle Tabellen des Informationsregisters, außer der Haupttabelle;
● Alle Tabellen des Berechnungsregisters, außer der Haupttabelle;
● Virtuelle Aufgabentabelle nach Ausführendem;
● Tabellen externer Quellen ohne Schlüssel;
● Cubes aus externen Quellen.

3. Das Auslesen aus der Datenbank erfolgt in Seiten mit 1.000 Elementen. Der erste Teil entspricht 1 Seite. Jeder nachfolgende Teil erhöht sich um 1 Seite (wenn das Ende des vorherigen Beispiels erreicht ist). Je näher sich der „Betrachtungspunkt“ dem Ende der angezeigten Daten nähert, desto größer wird die Stichprobe aus der Datenbank gelesen und entspricht schließlich allen angezeigten Daten. Daten werden auf dem Server zwischengespeichert. Höchstbetrag Einträge im Cache und in der dynamischen Liste – 1.000.000.
Abhängig davon, was in der Haupttabelle der dynamischen Liste ausgewählt ist und welchen Wert die Eigenschaft „Dynamisches Lesen“ annimmt, wird die eine oder andere Methode zum Lesen von Daten verwendet:

● Eine der folgenden Tabellen ist als Wert der Haupttabelleneigenschaft angegeben: Austauschplan, Verzeichnis, Dokumentenliste, Dokumentenjournal, Merkmalsplantypen, Kontenplan, Berechnungsplantypen, Geschäftsprozess, Aufgabe, Tabelle von Geschäftsprozesspunkte:



● Eine der folgenden Tabellen ist als Wert der Eigenschaft Haupttabelle angegeben: die Haupttabelle des Informationsregisters, das Akkumulationsregister, das Abrechnungsregister, das Berechnungsregister, die virtuelle Tabelle des Abrechnungsregisters MovementsSubconto:

● Dynamische Leseeigenschaft:
● Installiert: Methode 1 wird verwendet (Beschreibung der Methoden siehe oben).
● Zurücksetzen: Methode 2 wird verwendet (Beschreibung der Methoden siehe oben).

● Die Eigenschaft Haupttabelle enthält die Auswahlkriterientabelle oder Aufgabentabelle nach Ausführendem (Tasks By Performer):
● Schlüssel zur Identifizierung einer Tabellenzeile: Link.

● Die Eigenschaft Haupttabelle gibt die virtuelle Tabelle des Informationsregisters SliceFirst oder SliceLast an:
● Schlüssel zur Identifizierung einer Tabellenzeile: RecordKey.
● Die Eigenschaft „Dynamisches Lesen“ ist nicht anwendbar.
● Methode 2 wird verwendet (Beschreibung der Methoden siehe oben).

● Die Eigenschaft „Haupttabelle“ ist auf eine der virtuellen Registertabellen festgelegt, mit Ausnahme der oben aufgeführten:

● Die Eigenschaft „Dynamisches Lesen“ ist nicht anwendbar.

● Die Haupttabelleneigenschaft ist nicht angegeben, es wird eine beliebige Abfrage verwendet:
● Schlüssel zur Identifizierung einer Tabellenzeile: Nummer.
● Die Eigenschaft „Dynamisches Lesen“ ist nicht anwendbar.
● Methode 3 wird verwendet (Beschreibung der Methoden siehe oben).

Zur Anzeige werden die Daten in Portionen an den Client übertragen, deren Größe der Portionsgröße bei der 1. Methode zum Auslesen von Daten (beschrieben am Anfang dieses Abschnitts) ähnelt.
Wenn Sie ein Formular erstellen, das eine dynamische Liste enthält, werden zunächst 45 Datenelemente für jede sichtbare dynamische Liste an den Client übergeben (wenn die Liste mehr als 45 Elemente enthält). Wenn die dynamische Liste mehr als 45 Zeilen anzeigt, wird beim Öffnen des Formulars ein zusätzlicher Serveraufruf durchgeführt, um die fehlenden Datenelemente abzurufen.

4. Dynamische Listeneinstellungen

Eigenschaftenlisteneinstellungen – Durch Klicken auf den Hyperlink „Öffnen“ wird ein Formular zum Einrichten der Anzeige einer dynamischen Liste geöffnet. Das Einrichten einer Liste erfolgt auf die gleiche Weise wie ähnliche Vorgänge in einem Datenkompositionssystem.


Reis. 2. Bedingtes Styling einer dynamischen Liste

Beim Einrichten einer dynamischen Liste in der Konfiguration hat der Anwendungsentwickler die Möglichkeit, Folgendes zu tun:
● Legen Sie die Felder fest, nach denen Sie sortieren möchten.
● die Auswahl der Daten in der Liste beschreiben;
● bedingte Darstellungseinstellungen festlegen;
● Legen Sie die Felder fest, nach denen Sie die Daten gruppieren möchten.
Es ist sinnvoll, die Sortierung auf den Entwickler einzustellen, wenn Sie mit der vom System installierten Standardsortierung nicht zufrieden sind.

BERATUNG. Es ist zu bedenken, dass eine schlechte Auswahl der Sortierfelder (sowie die Auswahl und Gruppierung von Daten) die Effizienz der dynamischen Stichprobenentnahme negativ beeinflusst.
Aus Sicht eines Anwendungsentwicklers bestehen dynamische Listeneinstellungen aus mehreren Teilen, die miteinander verbunden sind. Die Haupteigenschaft, über die Sie die Einstellungen einer dynamischen Liste verwalten können, ist LinkerSettings. Dieses Objekt enthält drei Einstellungssätze, die bei der Systemausführung die endgültigen Einstellungen bestimmen, die auf die dynamische Liste angewendet werden:
● Einstellungen – im Konfiguratormodus erstellte Einstellungen. Die dynamische Listeneigenschaft Order stellt bereit schneller Zugriff zur Settings.Order-Eigenschaft des Builders für dynamische Listeneinstellungen, sodass die folgenden Konstrukte äquivalent sind:
List.Order und List.SettingsLinker.Settings.Order;
● Benutzereinstellungen – das sind Einstellungen, die vom Benutzer im 1C:Enterprise-Modus geändert werden;
● Feste Einstellungen – diese Einstellungen werden über die integrierte Sprache festgelegt. Diese Eigenschaft enthält auch Auswahlwerte, die über ihre Parameter an das Formular übergeben werden. Die dynamischen Listeneigenschaften „Auswahl“, „Optionen“ und „Bedingte Darstellung“ bieten schnellen Zugriff auf die festen Einstellungen des Builders für dynamische Listeneinstellungen. Mit anderen Worten, diese Aufrufe sind gleichwertig:
List.Settings Composer.FixedSettings.Selection und List.Selection.
Wenn Sie die endgültigen Einstellungen für eine dynamische Liste erstellen, Verschiedene Optionen Die Einstellungen werden wie folgt kombiniert:
● Wenn eine Art von Einstellungen vollständig als benutzerdefiniert markiert ist, umfassen die resultierenden Einstellungen die benutzerdefinierten Einstellungen
(List.ComposerSettings.UserSettings). Wenn außerdem Einstellungselemente als nicht verfügbar markiert sind, werden diese Einstellungen in die resultierenden Einstellungen der List.Settings Composer-Eigenschaft eingefügt. Einstellungen.
● Wenn eine Art von Einstellung nicht vollständig, sondern Element für Element als benutzerdefiniert markiert ist, gilt Folgendes:
● Als benutzerdefiniert markierte Elemente werden in die resultierenden Einstellungen der List.SettingsComposer.CustomSettings-Eigenschaft einbezogen.
● Als nicht verfügbar markierte Elemente werden in die resultierenden Einstellungen der List.SettingsComposer.Settings-Eigenschaft einbezogen.
● Feste Einstellungen (List.SettingsComposer.FixedSettings) werden den resultierenden Einstellungen „wie sie sind“ hinzugefügt. Gleichzeitig ist es nicht akzeptabel, dass die Fest- und Benutzereinstellungen Einstellungen mit demselben Namen enthalten, beispielsweise eine Auswahl mit demselben linken Wert in der Bedingung.

Wenn die Einstellungen der dynamischen Liste Einstellungen enthalten, die über Funktionsoptionen deaktiviert sind, werden diese Einstellungen aus der Liste der verfügbaren Einstellungen entfernt, wenn die Daten der dynamischen Liste abgerufen werden.
Die Steuerung, welche Einstellungen dem Benutzer zur Verfügung stehen und welche nicht, erfolgt im Fenster mit den dynamischen Listeneinstellungen.


Reis. 3. Kontrollieren Sie die Einbindung in die Benutzereinstellungen

Das Kontrollkästchen am unteren Rand des Fensters (siehe Abb. 3) ist dafür verantwortlich, die gesamte Art der Einstellungen in den Einstellungen (normal oder schnell) zu platzieren. Diese Funktion steht zur Auswahl, Sortierung, Gruppierung und Konditionalisierung zur Verfügung. Wenn Einstellungen im Bearbeitungsmodus angegeben werden Schnelle Auswahl, dann müssen Sie in der Eigenschaft „Benutzerdefinierte Einstellungsgruppe“ der Formulartabelle, die die dynamische Liste anzeigt, eine leere Formulargruppe angeben, in der sich Elemente befinden, die mit schnellen benutzerdefinierten Einstellungen der dynamischen Liste verknüpft sind. Wenn die Gruppe nicht angegeben ist, werden die Schnellbenutzereinstellungen nicht im Formular angezeigt. Es ist auch möglich, die Erstellung benutzerdefinierter Einstellungen mithilfe der integrierten Sprache mithilfe der Methode CreateCustomSettingsFormItems() der dynamischen Listenerweiterung explizit aufzurufen.
Es besteht auch die Möglichkeit zu wählen, ob bestimmte Einstellungselemente in den Benutzereinstellungen platziert werden sollen. Diese Funktion ist für Auswahl- und bedingte Designelemente verfügbar (siehe Abbildung 3).

Wenn beim Öffnen einer dynamischen Liste spezielle Einstellungen geladen werden müssen, gibt es zwei Möglichkeiten:
● Verwendung des dynamischen Listenformularparameters UserSettings. Die in diesem Parameter enthaltenen Daten werden in den dynamischen Listeneinstellungen des Benutzers platziert.
● Verwendung des dynamischen Listenformularparameters UserSettingsKey. Wenn Sie diesen Parameter beim Öffnen eines Formulars angeben, werden die Benutzereinstellungen, die sich im Einstellungsspeicher mit dem angegebenen Schlüssel befinden, in die dynamische Liste geladen, die das Hauptattribut des Formulars darstellt.

5. Suchen Sie in einer dynamischen Liste

Eine dynamische Liste auf dem Formular bietet die Möglichkeit, die angezeigten Daten interaktiv zu durchsuchen. Die Suche kann über folgende Tools durchgeführt werden: Suchleiste, Suchdialog, Suche nach dem aktuellen Wert, Nutzung des Suchverlaufs und Einstellung des Zeitraums (für dynamische Listen mit Dokumentenanzeige). Das Suchergebnis ist eine begrenzte Menge von Datensätzen
eine dynamische Liste (der für einen bestimmten Benutzer verfügbaren), die den Suchkriterien entspricht.
Um die Suchfunktionen einer dynamischen Liste zu steuern, gibt es drei Tabelleneigenschaften im verwalteten Formular, das die dynamische Liste anzeigt:
● Position der Suchzeichenfolge – bestimmt die Position der Suchzeichenfolge. Kann die folgenden Werte annehmen: Auto, Befehlsleiste, Keine, Oben, Unten.


Reis. 4. Suchzeichenfolge in einer dynamischen Liste

Wenn der Wert dieser Eigenschaft auf „Befehlsfeld“ festgelegt ist, wird die Suchzeichenfolge im Befehlsfeld des Formulars (wenn die dynamische Liste das Hauptformularattribut ist) oder im Befehlsfeld angezeigt, das der dynamischen Liste zugeordnet ist. Die in der Befehlsleiste platzierte Suchleiste wird immer an den rechten Rand der Befehlsleiste gedrückt (zusammen mit den Schaltflächen rechts neben der Suchleiste).
Wenn die Eigenschaft auf „Nein“ gesetzt ist, wird die Suchzeichenfolge weder im Formular noch bei Beginn der Eingabe angezeigt Suchbegriff Es öffnet sich ein Dialog.
Wenn die Eigenschaft auf „Oben“ gesetzt ist, befindet sich die Suchleiste zwischen der Listenbefehlsleiste und der Tabelle, in der die dynamische Liste angezeigt wird. Wenn die Eigenschaft auf „Bottom“ gesetzt ist, wird die Suchzeichenfolge direkt nach der Tabelle mit der dynamischen Liste platziert.


● Wenn die Eigenschaft „Kompatibilitätsmodus“ auf „Nicht verwenden“ oder älter als Version 8.3.4 eingestellt ist, lautet der Wert „Befehlsfeld“.
Gehen Sie wie folgt in die Suchzeile:
● Durch Drücken der Tastenkombination Strg+F;
● Maus;
● Wenn Sie mit der Eingabe einer dynamischen Liste beginnen (unter Berücksichtigung des Werts der SearchOnTyping-Eigenschaft der dynamischen Liste).
● Ansichtsstatusposition – beschreibt, wo der Ansichtsstatus angezeigt wird: welche Felder durchsucht wurden und welche Werte
in allen Bereichen gesucht. Kann die folgenden Werte annehmen: Auto, Keine, Oben, Unten


Reis. 5. Suchstatus in dynamischer Liste

Wenn die Eigenschaft auf „Nein“ gesetzt ist, ist der Ansichtsstatus nicht im Formular vorhanden. Dadurch lässt sich allein anhand der Verfügbarkeit der Schaltfläche „Suche abbrechen“ feststellen, ob die Suche abgeschlossen wurde oder nicht.
Wenn die Eigenschaft auf „Oben“ gesetzt ist, befindet sich der Ansichtsstatus zwischen der Listenbefehlsleiste und der Tabelle, in der die dynamische Liste angezeigt wird. Wenn die Eigenschaft auf „Bottom“ festgelegt ist, wird der Ansichtsstatus unmittelbar nach der Tabelle platziert, in der die dynamische Liste angezeigt wird.
Wenn das Formular in 1C:Enterprise Version 8.3.4 und früher erstellt wurde, ist die Eigenschaft auf Nein gesetzt. Wenn das Formular in 1C:Enterprise Version 8.3.5 und älter erstellt wurde, ist die Eigenschaft auf Auto gesetzt. Der tatsächliche Wert der Immobilie wird in diesem Fall wie folgt ermittelt:
● Wenn die Eigenschaft „Kompatibilitätsmodus“ auf Version 8.3.4 (und niedriger) eingestellt ist – Wert „Nein“;
● Wenn die Eigenschaft „Kompatibilitätsmodus“ auf „Nicht verwenden“ oder älter als Version 8.3.4 eingestellt ist – Wert „Oben“;
● Suchsteuerungsposition – Legt fest, wo die Suchsteuerungsschaltfläche angezeigt wird. Die Schaltfläche öffnet ein Menü, das die folgenden Informationen enthält: Befehle Nach aktuellem Wert suchen, Erweiterte Suche, Suche abbrechen, Zeitraum festlegen (für Dokument- und Journallisten) und Suchabfrageverlauf (letzte 5 Abfragen). Die Eigenschaft kann die folgenden Werte annehmen: Auto, Keine, Befehlsfeld.


Reis. 6. Verwalten der Suche in einer dynamischen Liste

Wenn die Eigenschaft auf „Nein“ gesetzt ist, befindet sich die Suchsteuerungsschaltfläche nicht im Formular (die Befehle sind jedoch über das Menü „Mehr“ verfügbar). Der Eigenschaftswert „Befehlsleiste“ platziert eine Schaltfläche in der Befehlsleiste, die einer Tabelle zugeordnet ist, die eine dynamische Liste anzeigt.
Wenn das Formular in 1C:Enterprise Version 8.3.4 und früher erstellt wurde, ist die Eigenschaft auf Nein gesetzt. Wenn das Formular in 1C:Enterprise Version 8.3.5 und älter erstellt wurde, ist die Eigenschaft auf Auto gesetzt. Der tatsächliche Wert der Immobilie wird in diesem Fall wie folgt ermittelt:
● Wenn die Eigenschaft „Kompatibilitätsmodus“ auf Version 8.3.4 (und niedriger) eingestellt ist – Wert „Nein“;
● Wenn die Eigenschaft „Kompatibilitätsmodus“ auf „Nicht verwenden“ oder älter als Version 8.3.4 eingestellt ist, lautet der Wert „Befehlsfeld“.
Wenn in einem Formular mehrere Befehlsfelder vorhanden sind, deren Befehlsquelle eine Tabelle des verwalteten Formulars ist (Anzeige dynamischer Listendaten), befinden sich die Suchzeile und die Schaltfläche zur Suchsteuerung nur in einem Befehlsfeld:
● Oder in der Befehlsleiste der dynamischen Liste selbst (sofern die automatische Vervollständigung aktiviert ist)
● Oder in einem der übrigen Befehlsfelder.

Schauen wir uns die Funktionen der Suche in einer dynamischen Liste an:
● Um die Suche komfortabel (auch hinsichtlich der Performance) zu gestalten, müssen Sie die Volltextsuche für alle Konfigurationsobjekte aktivieren, die als Haupttabelle der dynamischen Liste verwendet werden können. Außerdem sollte die Volltextsuche alle Details zu Konfigurationsobjekten umfassen, die möglicherweise in einer dynamischen Liste angezeigt werden und nach denen möglicherweise eine Suche erforderlich ist.
Wenn ein Objekt von der Volltextsuche ausgeschlossen wird, funktioniert der entsprechende Suchmechanismus zwar, die Leistung einer solchen Suche ist jedoch äußerst gering. Es wird nicht empfohlen, die Suche für Objekte zu verwenden, die nicht durch die Volltextsuche indiziert sind.
● Die Anwendungslösung muss über eine Routineaufgabe verfügen, die den Volltextsuchindex regelmäßig aktualisiert.

● Die Suche wird nicht in allen Spalten der dynamischen Liste (und des Konfigurationsobjekts) durchgeführt, sondern nur in den Spalten, die in der Tabelle angezeigt werden.
● Die Suche in einer dynamischen Liste nach Feldern von Referenztypen mit willkürlicher Darstellung erfolgt nach Feldern, die für verwendet werden
Repräsentationsbildung (siehe hier). Die in der Ansicht enthaltenen Felder werden unter Berücksichtigung des ViewFieldGettingProcessing()-Handlers des entsprechenden Objekts ermittelt.
● Bei dynamischen Listen mit einer angegebenen Haupttabelle wird die Volltextsuche in der Haupttabelle verwendet. Alle nicht indizierten Links aus der Haupttabelle werden zu den Ergebnissen der Volltextsuche hinzugefügt. Das Ergebnis einer Volltextsuche für die Haupttabelle wird als Auswahl anhand von Schlüsselfeldern verwendet. Eine Volltextsuche wird auch für in der Liste angezeigte Felder aus anderen Tabellen durchgeführt (sofern das Feld und das Konfigurationsobjekt die Volltextsuche verwenden). Ohne aktivierte Volltextsuche sind möglicherweise Daten vorhanden
gefunden, aber die Suche selbst wird sehr langsam sein.
Wenn beim Versuch, eine Volltextsuche durchzuführen, ein Fehler auftritt, wird die Suche ohne Anwendung der Volltextsuche durchgeführt.
Dies kann beispielsweise bei der Suche nach einem Buchstaben und passieren eine große Anzahl Zeilen hinein Informationsbasis, beginnend mit diesem Brief.
● Wenn für ein Feld in der Haupttabelle einer dynamischen Liste eine Auswahl mit dem Vergleichstyp Gleich verwendet wird, dann wird bei der Durchführung einer Volltextsuche nach Suchanfrage Der Auswahlwert wird aus dieser Tabelle hinzugefügt.
● Die Suchzeichenfolge wird in Wörter aufgeteilt. Diese Partitionierung erfolgt nach folgenden Regeln:
● Die Zeile wird mit Leerzeichen und Tabulatorzeichen als Trennzeichen umbrochen.
● Dann wird jedes resultierende Fragment verarbeitet:
● Wenn das Fragment eine Datumsdarstellung (mit oder ohne Zeit) basierend auf dem aktuellen Sitzungsgebietsschema ist, dann ist das Wort das Fragment.
● Andernfalls wird das Fragment weiter aufgeteilt, wobei die Zeichen „,.-/\“ als Trennzeichen verwendet werden. In diesem Fall wird jedes resultierende Fragment der Zeichenfolge als Wort betrachtet.

● Für jedes Wort wird ein eigener Satz von Bedingungen gebildet, die „durch ODER“ verknüpft werden. Dieser Satz von Bedingungen wird generiert, wenn eine Volltextsuche nach einem bestimmten Wort in der Tabelle, aus der dieses Feld abgerufen wurde, mindestens ein Objekt ergab oder für dieses Feld keine Volltextsuche verwendet wurde. Die Bedingungen werden wie folgt gebildet:
● Für ein Feld vom Typ String lautet die Bedingung FieldName LIKE %Word%.
● Für ein Feld vom Typ „Zahl“ hat die Bedingung die Form „Feldname=Wert“, wobei „Wert“ ein in den Typ „Zahl“ konvertiertes Wort ist. Wenn die Umwandlung nicht durchgeführt werden kann, wird die Feldsuche nicht durchgeführt.
● Das Wort wird als Teilzeichenfolge in der für die aktuelle Sitzung definierten booleschen Standarddarstellung nachgeschlagen. Wenn das Suchwort in einer Ansicht gefunden wird, wird nach dem Wert gesucht, der der Ansicht entspricht, in der das Wort gefunden wurde. In diesem Fall werden bei der Suche keine Ansichten verwendet, die über die Formularelementeigenschaft Format angegeben werden.
● Für ein Feld vom Typ „Datum“ sieht die Bedingung wie folgt aus: FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
Wird eine ein- oder zweistellige Zahl angegeben, wird das Jahr auf das aktuelle Jahrhundert reduziert und dieser Wert zur Suchbedingung hinzugefügt.
● Bei Referenzfeldern wird eine Suche nach den Feldern durchgeführt, die zur Bildung der Referenzansicht verwendet werden. Suchen Sie in jedem dieser Felder
nach den oben beschriebenen Regeln durchgeführt. Die Suche verwendet keine Felder, die zur Bildung einer benutzerdefinierten Datendarstellung verwendet werden.
Die Bedingungen für jedes Wort werden mit „UND“ verknüpft.
● Bei Werten mit führenden Nullen können Sie entweder nach der Zeichenfolge mit führenden Nullen oder nach der angegebenen Zeichenfolge ohne führende Nullen suchen.
● Wenn eine dynamische Liste eine Liste von Dokumenten oder einen Dokumentverlauf anzeigt, wird das von Ihnen angegebene Listenansichtsintervall auch in dem Bereich des Formulars angezeigt, der für die Anzeige des Ansichtsstatus für die gewünschte dynamische Liste reserviert ist.
● Der Befehl „Suche nach aktuellem Wert“ ist nicht verfügbar, wenn die Haupttabelle der dynamischen Liste das Auswahlkriterium ist.
● Gefundene Zeichenfolgenfragmente werden bei der Anzeige in der Tabelle hervorgehoben.
● Für eine Spalte wird nur eine Suchzeichenfolge unterstützt. Beim Hinzufügen einer neuen Suchabfrage für eine Spalte, die bereits durchsucht wird, wird der Suchausdruck ersetzt und nicht die beiden Suchabfragen addiert.
● Wenn das Formular nicht über einen Formularelementzusatz der Suchzeichenfolgenanzeige des Formulars verfügt, der mit der Tabelle verknüpft ist (Quelleigenschaft des Formularelementzusatzes), der eine dynamische Liste anzeigt, dann wird durch Drücken der Tastenkombination Strg+F der Suchdialog geöffnet.


Reis. 7. Suchdialog

Wenn das Formular einen Formularelementzusatz der Form Suchzeichenfolgenanzeige enthält, der mit einer Tabelle verknüpft ist (Quelleigenschaften des Formularelementzusatzes), die eine dynamische Liste anzeigt, sollten Sie zum Öffnen des Suchdialogs den Befehl „Erweiterte Suche“ verwenden.
● Beachten Sie bei der Verwendung des Suchdialogs folgende Punkte:
● Wenn Sie das Suchdialogfeld über eine Tastenkombination öffnen, wird der Wert der aktuellen Zelle in der Zeile „Was soll durchsucht“ angezeigt und der Wert des Schalters „Wie soll gesucht werden“ wird auf „Nach exakter Übereinstimmung“ gesetzt.

● Das Öffnen des Suchdialogs durch direktes Eingeben einer Suchzeichenfolge in die dynamische Liste führt dazu, dass der Wert des Schalters „Suchen“ auf den Wert „Nach Teil der Zeichenfolge“ gesetzt wird und der eingegebene Text im Feld „Was“ landet zum Suchfeld.

6. Anzeige der Daten durch eine dynamische Liste

Wenn Sie dynamische Listen verwenden, müssen Sie unter Berücksichtigung der angewendeten Auswahlen und Suchvorgänge möglicherweise verschiedene Aktionen für die aktuell von der dynamischen Liste angezeigten Daten ausführen. Zu diesen Aktionen gehören: Verarbeiten der angezeigten Informationen, beispielsweise das erneute Senden ausgewählter Dokumente oder das Festlegen einiger Details für ausgewählte Objekte, das Erstellen einer Liste verfügbarer Objekte (mit Design usw.), beispielsweise zum Drucken oder Speichern in einem Tabellenkalkulationsdokument.
Um Daten zu erhalten, die in einer dynamischen Liste angezeigt werden, sollten Sie GetExecutableDataCompositionSchema() und verwenden
GetExecutableDataCompositionSettings().
Beispiel für den Datenempfang:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Settings = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Schema, Einstellungen);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Das Einfügen von Daten in eine Wertesammlung (Tabelle oder Werteliste) erfolgt auf die gleiche Weise.
Das Erhalten dynamischer Listendaten auf diese Weise weist eine Reihe von Merkmalen auf, die bei der Entwicklung von Anwendungslösungen berücksichtigt werden müssen:
● Das folgende Tabellendesign wird nicht unterstützt:
● Abwechselnde Linienfarben;
● Headerbild;
● Bild des Kellers;
● Hintergrundfarbe der Fußzeile;
● Farbe des Fußzeilentextes;
● Fußzeilenschriftart;
● Horizontale Lage im Keller;
● Passwortmodus.
● Das für ein verwaltetes Formular angegebene bedingte Erscheinungsbild wird nicht unterstützt.
● Wenn Sie eine hierarchische Tabelle in aufsteigender Reihenfolge nach einem Feld vom Typ Link ordnen, werden Datensätze, die einen leeren Link enthalten, immer zuerst platziert.

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 Möglichkeiten einer dynamischen Liste zu demonstrieren, erstellen wir eine externe Verarbeitung und fügen 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 einen 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 der vorgenommenen Änderungen:



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 als Grundlage eine bestimmte Testkonfiguration von 1C: „Enterprise Accounting 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 beliebige Auswahlen für jedes Feld in der Anfrage 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) ; Ende des Verfahrens
gastroguru 2017