ACS ist nicht nur für Berichte gedacht – die Implementierung universeller Auswahlen. Verwendung von Selektionen in SKD SKD-Übertragung von Werten in Selektionen

Abfragesprachenerweiterung für Datenkompositionssystem

Die Erweiterung der Abfragesprache für das Datenkompositionssystem erfolgt über spezielle syntaktische Anweisungen, die in geschweifte Klammern eingeschlossen und direkt im Abfragetext platziert werden.

Syntaktische Elemente der Abfragesprachenerweiterung des Datenkompositionssystems

WÄHLEN

Dieser Satz beschreibt die Felder, die der Benutzer für die Ausgabe auswählen kann. Nach diesem Schlüsselwort werden Aliase von Feldern aus der Auswahlliste der Hauptabfrage, die für die Konfiguration verfügbar sind, durch Kommas getrennt aufgelistet.

Zum Beispiel:

(Artikel auswählen, Lager)

Nach dem Feldalias kann eine Zeichenkombination „.*“ stehen, die auf die Möglichkeit hinweist, untergeordnete Felder aus diesem Feld zu verwenden.

Beispielsweise weist der Eintrag Nomenclature.* auf die Möglichkeit hin, untergeordnete Felder des Felds „Nomenclature“ zu verwenden (z. B. das Feld „Nomenclature.Code“). Das SELECT-Element kann nur in der ersten Join-Abfrage erscheinen.

WO

Die Felder, auf die der Benutzer eine Auswahl anwenden kann, werden beschrieben. Dieser Vorschlag verwendet Tabellenfelder. Die Verwendung von Aliasnamen für Auswahllistenfelder ist nicht zulässig. Jeder Teil der Union kann sein eigenes WHERE-Element enthalten.

(WHERE-Nomenklatur.*, Lager)

Ein einfaches Beispiel

Es ist notwendig, Verkäufe für den Zeitraum zu erhalten und den gesamten Artikel anzuzeigen, unabhängig davon, ob es Verkäufe gab oder nicht. Das heißt, Sie müssen Daten aus der Umsatztabelle des Verkaufsregisters und Daten aus dem Nomenklaturverzeichnis auswählen. Überspringen wir die Frage, warum wir die ganze Nomenklatur brauchen.

Um das Problem zu lösen, können Sie eine Abfrage erstellen, die den Artikel und die Umsatztabelle „Sales“ mit einem Links-Join verbindet. Als Ergebnis erhalten wir für den Artikel, der im ausgewählten Zeitraum nicht verkauft wurde, die Feldwerte Gegenpartei, Vereinbarung, Menge, Summe= Null. Diese Anfrage:

SELECT ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.Counterparty Agreement, SalesTurnover.QuantityTurnover AS Quantity, SalesTurnover.CostTurnover AS Cost FROM Reference.Nomenclature AS ReferenceNomenclature LEFT CONNECTION RegisterAccumulations.Sales.Turnover AS SalesTurnover PO SprNomenclature.Link = SalesTurnover.Nomenclature

Hier ist das Ergebnis:

Gegenpartei Vereinbarung Nomenklatur Menge Summe
Null Null _Test1 Null Null
LLC „Hörner und Hufe“ Vereinbarung1 Hausschuhe 10 1200
„Gazprom“ Cooler Vertrag Stiefel 5 13000
Null Null Galoschen Null Null
Null Null Schiefertafeln Null Null

In diesem Beispiel gab es keine Verkäufe der Artikel: „Überschuhe“ und „Hausschuhe“

Und alles wäre in Ordnung, wenn wir die Stichprobe nach Gegenpartei gruppieren, dann fallen alle nicht verkauften Artikel in eine separate Gruppe, wobei Gegenpartei = Null, aber der Kunde möchte im Bericht eine zufällige Auswahl nach dem Feld Gegenpartei haben (dies ist natürlich der Fall). bezeichnet die Gegenpartei aus dem Verkaufsregister). Was soll ich machen? Tatsächlich müssen wir nur die Tabelle filtern Verkäufe. Wenn wir im ACS-Konstruktor die automatische Vervollständigung verwenden, enthalten die verfügbaren Auswahlfelder das Feld Gegenpartei, alles scheint in Ordnung zu sein, aber wenn wir einen Bericht mit Auswahl nach Gegenpartei ausführen, verlieren wir alle Datensätze aus der Verbindung mit dem Artikel. Legen wir zum Beispiel die Auswahl fest: Gegenpartei = LLC „Hörner und Hufe“. Das Ergebnis wird so aussehen:

Überhaupt nicht das, was wir brauchen, oder?

Um das Problem zu lösen, können Sie der Abfrage natürlich einen Parameter hinzufügen, beispielsweise zu den Parametern einer virtuellen Tabelle Umsatz, aber gleichzeitig geht die Flexibilität bei der Einstellung der Vergleichsart verloren.

Es gibt eine Lösung: dafür in Abfrage Ersteller auf der Registerkarte Datenzusammensetzung => Tische Fügen Sie den virtuellen Tabellenbedingungen ein Bedingungsfeld hinzu Umsatz und ändere seinen Spitznamen in Gegenparteiauswahl

Um den Benutzer nicht mit Auswahlfeldern zu verwirren, deaktivieren wir das Bedingungsfeld Gegenpartei und ändern Sie den Titel für das Feld Gegenparteiauswahl


Als Ergebnis der Ausführung dieses Schemas mit aktivierter Auswahl durch das Feld „Kontrahent“ hat die resultierende Abfrage die Form:

SELECT SprNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty AS Counterparty, SalesTurnover.Counterparty Agreement AS Counterparty Agreement, SalesTurnover.QuantityTurnover AS >Quantity, SalesTurnover.CostTurnover AS Cost, PRESENTATIONLINK(SalesTurnover.Counterparty Agreement) AS ContractCounterparty aPresentation, PRESENTATIONLINK(SalesTurnover.Counterparty ) AS CounterpartyPresentation, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature LEFT CONNECTION Register Accumulations.Sales.Turnover(&P , , , Counterparty = &P3 ) AS SalesTurnover BY SprNomenclature.Link = SalesTurnover.Nomenclature

Und dementsprechend das Ergebnis:

Gegenpartei Vereinbarung Nomenklatur Menge Summe
Null Null _Test1 Null Null
LLC „Hörner und Hufe“ Vereinbarung1 Hausschuhe 10 1200
Null Null Stiefel Null Null
Null Null Galoschen Null Null
Null Null Schiefertafeln Null Null

Test1 ist eine Gruppe im Nomenklaturverzeichnis, in der sich alles befindet

Der Veröffentlichung ist das XML-Schema des in der Veröffentlichung verwendeten Berichts beigefügt. Ich habe die Schaltung in Integrated Automation erstellt, aber ich denke, dass sowohl in UPP als auch in UT 10 alles gut funktionieren wird

Zusammenfassend

Dieses Beispiel zeigt, wie Sie Ihre eigenen Auswahleinstellungen im Zugangskontrollsystem erstellen und die automatisch erstellten deaktivieren, wenn Sie einen Schaltkreis mit aktiviertem Flag entwerfen Automatische Vervollständigung.

Wenn Sie genug Erfahrung haben, um Schaltkreise ohne Verwendung zu erstellen Automatisch ausfüllen- dann macht dieser Rat keinen Sinn.

Verwendete Software

  • Screenshot-Programm SnimOK!
  • XML-Dateieditor

Wofür kann SKD verwendet werden?

Die etablierte Meinung dient der Berichterstattung.

Tatsächlich Die ACS-Funktionen gehen über die Erstellung universeller Berichte hinaus.

Und heute zeigen wir wie Mithilfe des Zutrittskontrollsystems kann der Benutzer eine flexible Datenauswahl konfigurieren. Darüber hinaus wird diese Auswahl bei der Erhebung und Verarbeitung von Daten verwendet.

Für welche Aufgaben wird dies nützlich sein?

Geben wir Beispiele typischer Konfigurationen:

  • Verarbeitung „Hochladen von Daten auf die Website“
  • Erstellung einer Preisliste
  • Hochladen von Daten zum TSD (Datenerfassungsterminal)
  • Segmentierung von Produkten, Partnern
  • Bedarfsgerechte Auftragsbildung (Kunden, Lieferanten).
  • Reparaturplanung in 1C:ERP.

Das heißt, das Tool kommt überall dort zum Einsatz, wo es darauf ankommt, dem Anwender umfangreiche Auswahlmöglichkeiten zu bieten.

Erstellen einer zufälligen Auswahl in kontrollierter Form mithilfe von ACS

Die Lektion behandelt die Arbeit mit Einstellungs-Builder Datenlayoutschemata:

  • Auswahlausgabe auf dem Formular
  • Softwareverbindung zwischen dem Settings Builder und dem Layoutdiagramm
  • Erstellen von Standardauswahlen im Zutrittskontrollsystem.

Empfangen von Daten aus der Datenbank mit Filterung nach ACS-Auswahl

Das Video zeigt, wie Sie Daten mithilfe der zuvor festgelegten Auswahl im Settings Builder auswählen können.

Ein „gruseliger“ Gegenstand wird verwendet – ProcessorOutputResultCompositionDataIntoValueCollection.

Tatsächlich ist nicht alles so kompliziert – in 8 Minuten lösen wir das Problem.

Speichern von SKD-Auswahlen in der Informationsbasis

In der Lektion werden wir schauen Speichern der ACS-Builder-Einstellungenüber den Value Store.

Lassen Sie uns herausfinden, wie Sie dieses Problem in der Konfiguration „1C: Manufacturing Enterprise Management 1.3“ lösen können.

Genieße das Zusehen! :) :)

Im Allgemeinen bietet ACS viele Möglichkeiten.

Hier sind ein paar „Tricks“, die wir auf der Kursseite nicht einmal beschreiben konnten.

Wenn Sie sammeln müssen Daten aus verschiedenen Quellen, es gibt drei Möglichkeiten.

Sie können versuchen, eine „universelle“ Abfrage für alle Daten zu erstellen (lang), Sie können die Daten mehrerer Abfragen in einer Schleife anzeigen (starre, unflexible Struktur) – oder Sie können einfach verwenden ACS und Anbindung von Datensätzen statt einer einzigen Anfrage.

Gleichzeitig ist es wichtig, korrekte Ergebnisse zu erhalten – das hat seine Besonderheiten, wenn mehrere Quellen vorliegen

Mit Hilfe von SKD können Sie einfach Erhalten Sie für jedes Datum im Bericht einen aktuellen Schnappschuss.

Oder, der Klarheit halber, - Erhalten Sie den Produktpreis für jedes Verkaufsdatum.

Mit Hilfe von ACS können Sie organisieren Anzeige aller Daten für den Zeitraum im Bericht, und nicht nur diejenigen, für die Daten im Bericht vorhanden waren (Hinzufügen von Daten ohne Programmierung, nur mit den Möglichkeiten des Zutrittskontrollsystems)

Mit ACS können Sie verschachtelte Gruppierungen unter Hinzufügung von Zeiträumen (Jahr/Quartal/Monat usw.) organisieren.

Ordnen Sie den Bericht wie gewünscht an, z. B. zeigen Sie die Spaltenüberschrift vertikal und die Daten in dieser Spalte horizontal an.

Ermöglichen Sie dem Benutzer, die Häufigkeit auszuwählen, mit der Daten im Bericht angezeigt werden (nach Jahr, nach Quartal, nach Monat) – ausschließlich durch Einstellungen, ohne das Berichtsmodul zu bearbeiten.

Wie kombiniere ich mehrere Bedingungen mittels ODER in einem Bericht? Diese Option ist beispielsweise im Report Builder nicht verfügbar, wohl aber im ACS

Wenn Sie zusammenfassende Daten in Form eines Diagramms anzeigen, müssen Sie deren Aussehen genau steuern können: die Sichtbarkeit von Markierungen für eine Reihe, wechselnde Farben von Diagrammreihen, die Trennung vergangener Daten von zukünftigen Daten in einem Diagramm durch eine vertikale Linie , usw.

Natürlich gibt es Nuancen, auf die geachtet werden muss.

Beim Erstellen des Berichts hat der Entwickler den Abfragetext debuggt, aber wenn diese Abfrage in einem Bericht zum Zutrittskontrollsystem verwendet wird, liefert das System ein falsches Ergebnis.

Daher ist es wichtig, die Abfrage abzurufen, die das System tatsächlich ausführt, um Daten aus der Datenbank abzurufen, und eine solche Abfrage zu debuggen.

Beim Hinzufügen von Details zu einem Dokument-Recorder zu einem Bericht erzeugt das System manchmal „falsche“ Eröffnungs- und Schlusssalden.

Daher ist es wichtig, die Felder im Bericht des Zutrittskontrollsystems korrekt zu konfigurieren, damit die Salden sowohl mit als auch ohne Details zum Dokument korrekt angezeigt werden.

Das Berichtsergebnis kann sich ändern, je nachdem, wo die Auswahl nach Ressourcenwert konfiguriert ist – auf Berichtsebene und auf der Ebene einer einzelnen Gruppe müssen Sie dies überwachen.

Wenn Sie wollen ACS professionell beherrschen und täglich in Ihrer Arbeit anwenden, melden Sie sich für den Kurs an:

Unterstützung - 2 Monate. Kursumfang – 34 Unterrichtsstunden.

Verzögern Sie Ihr Studium nicht!

Um die Verarbeitung zu schreiben, mussten Programmierer häufig Abfragen verwenden, um Daten abzurufen und diese dann zu verarbeiten. Die Daten wiederum wurden aus der Anfrage gewonnen. Nun, eine Anfrage ohne Auswahl oder Filter kommt selten vor. Lassen Sie uns anhand der Beispielanfrage über Auswahlmöglichkeiten in solchen Anfragen sprechen:

Um die Auswahl nach Gegenpartei für den Benutzer in einem regulären Formular zu organisieren, musste der Programmierer drei Elemente auf dem Formular platzieren, die etwa so aussahen:

Wie viel Aufwand ist für einen Programmierer erforderlich, um verschiedene Arten von Vergleichen (gleich, ungleich, in einer Liste, in einer Gruppe ...) zu beschreiben und auf der Grundlage dieser Vergleichsarten seine endgültige Anfrage zur Datenbeschaffung zu verfeinern?

Schauen wir uns an, wie dies mit ACS erreicht werden kann. Lassen Sie uns in unserer Verarbeitung ein Layout mit dem Typ „Data Composition Scheme“ erstellen und es mit unserer Anfrage füllen:

Auf der Registerkarte „Einstellungen“ werden wir eine neue Gruppierung ohne Details und in unserem Beispiel das Feld „Konto“ hinzufügen, da wir am Ende alles in die Wertetabelle bekommen:

Fügen Sie auf der Registerkarte „Auswahl“ die Gegenpartei zur Auswahl hinzu:

Beginnen wir nun mit der Erstellung des Formulars. Lassen Sie uns auf dem Formular der Verarbeitung selbst die Auswahl anzeigen, mit der der Benutzer arbeiten wird. Wir werden ein Element vom Typ Table Field auf dem Formular anzeigen und ihm den Namen Selection mit dem Datentyp Composer.Settings.Selection geben:

Lassen Sie uns nun Ereignishandler für das OnOpen-Formular und einen Handler für das Klicken auf die Schaltfläche „Ausführen“ erstellen. Der Code ist unten dargestellt:

Perem-Layout; Prozedur ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Ausgabeprozessor = Neuer Ausgabeprozessor des Ergebnisses der Zusammenstellung von Daten zu einer Wertesammlung; OutputProcessor.SetObject(Result); OutputProcessor.Output(CompositionProcessor); Wenn FormElements.Result.Columns.Quantity() = 0, dann ist FormElements.Result.CreateColumns(); endIf; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = New SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Ende des Verfahrens

Die Verarbeitung ist fertig, nachdem Sie sie gestartet haben, können Sie in unserer Auswahl sofort die Gegenpartei sehen, die in unserer Auswahl erschienen ist, aus der Sie jede Art von Vergleich auswählen und zusätzliche Auswahlzeilen hinzufügen können, indem Sie die Details des Kontrahentenverzeichnisses verwenden:

Das ist alles. Ich hoffe, dieser Artikel wird Ihnen dabei helfen, die Auswahlflexibilität in Ihrer Verarbeitung zu verbessern.

Kononow Sergej