Heim / Windows-Übersicht / Konsole 1s 8.3 verwaltete Formulare anfordern. Arbeiten mit der Abfragekonsole

Konsole 1s 8.3 verwaltete Formulare anfordern. Arbeiten mit der Abfragekonsole

Die Abfragekonsole ist sehr bequem zu verwenden, wenn Sie einige komplexe debuggen oder schnell eine Auswahl bestimmter Daten abrufen müssen.

Im Internet finden Sie viele verschiedene Konsolen. Bei regulären und verwalteten Formularen sind dies normalerweise völlig unterschiedliche Konsolen. Dementsprechend können Sie die universelle Abfragekonsole 1C 8.3 und 8.2 herunterladen, die in beiden Fällen funktioniert. Denken Sie daran, dass die Konsole eingeschaltet ist verwaltete Schnittstelle Sie werden nur in einem dicken Client geöffnet.

Arbeiten mit der Abfragekonsole

Im 1C-Programm öffnet sich die Abfragekonsole wie jede externe Verarbeitung: das Menü "Datei" - "Öffnen" oder die Tastenkombination "Strg + O". Bei häufiger Anwendung kann es zu einer externen Verarbeitung kommen Informationsbasis.

Die Liste Ihrer Anfragen wird auf der linken Seite der Anfragekonsole angezeigt. So können Sie nicht nur eine Anfrage speichern, sondern gleich mehrere. Der Abfragebaum hat eine hierarchische Struktur, was sehr praktisch ist, um sie zu gruppieren.

Durch Klicken auf die Schaltfläche "Hinzufügen" können Sie eine neue Anfrage hinzufügen, indem Sie ihr selbst einen Namen geben. Außerdem können Sie mit der integrierten Funktionalität Abfragen mit Kopieren erstellen, die Liste nach oben oder unten verschieben und vieles mehr.

Der Anfragetext selbst wird auf der rechten Seite des Bearbeitungsformulars angezeigt. Sie kann manuell oder mit dem Abfragegenerator geschrieben werden. Der Query Builder funktioniert nur im Thick Client.

Rechts neben der Konstruktor-Schaltfläche befindet sich die Schaltfläche "Abfrageoperatoren einfügen". Es wird sofort eine leere Abfragestruktur mit Bedingung, Gruppierung, Reihenfolge und Summen hinzugefügt.

Auf der rechten Seite befinden sich sehr nützliche Schaltflächen, die Ihnen helfen, wenn Sie diese Abfrage bei der Entwicklung von Lösungen für 1C verwenden.

Mit der Schaltfläche können Sie die von Ihnen geschriebene Abfrage in Text umwandeln. In unserem Fall sieht es wie im Bild unten aus.

Sie können Anforderungen in einer Datei speichern oder daraus laden. Dies ist sehr praktisch für die zukünftige Verwendung.

Bevor Sie die Abfrage direkt ausführen, müssen Sie ihre Eingabeparameter (falls vorhanden) festlegen und dann auf die Schaltfläche "Abfrage ausführen" klicken. Auch hier ist es möglich, Anfragen nicht vollständig auszuführen, sondern jedes Paket separat auszuführen.

Der Ansichtsmodus bestimmt, wie das Abfrageergebnis angezeigt wird: eine Liste, eine hierarchische Liste oder eine Baumstruktur.

Das Ergebnis der Ausführung wird ganz unten in der Anforderungskonsole angezeigt. Es zeigt auch die Anzahl der empfangenen Zeilen und die Ausführungszeit an. Bei Bedarf können Sie die Zeilen des Abfrageergebnisses verschieben.

Sehr oft werden Benutzer gebeten, einige Daten auszuwählen und in Excel zu speichern. Möglicherweise benötigen Sie dies auch. Um die Aufgabe abzuschließen, müssen Sie nur den Punkt „Liste anzeigen“ im Menü „Mehr“ auswählen. Das Programm fordert Sie auf, die erforderlichen Spalten zu markieren.

Neben der Festlegung der Spaltenliste für die Ausgabe können Sie hier auch bestimmte Zeilen angeben. Dies geschieht durch Hervorheben von Zeilen in der Abfrage selbst. Außerdem reicht es im Spaltenauswahlformular aus, das Flag in der Einstellung „Nur ausgewählt“ zu setzen.

In unserem Beispiel haben wir alle Abfrageergebnisdaten angezeigt. Sie können sie in einer externen Datei speichern, indem Sie sie aus dem geöffneten Tabellenkalkulationsdokument kopieren oder die Tastenkombination Strg+O verwenden. Es gibt viele Optionen zum Speichern von Formaten, wir haben "*. xlsxx".

Wie Sie sehen, ist das Arbeiten in der Abfragekonsole sehr komfortabel und nützlich, daher empfehlen wir dringend, sie herunterzuladen und in die Praxis umzusetzen.

Abfragekonsole 1s- ein praktisches Tool zum Erstellen und Debuggen von Abfragen im Unternehmensmodus 1s. Verwenden der Abfragekonsole Sie können eine Anfrage an die 1s-Datenbank ausführen und das Ergebnis der Anfrage direkt auf dem Bildschirm in 1s enterprise sehen. In diesem Artikel betrachten wir zwei Konsolen, eine für 1s 8.2 (normale Formen) und die zweite kann sowohl in normalen als auch in verwalteten Formen 1s 8.3 funktionieren.

Abfragekonsole 1s herunterladen

Um mit der Verarbeitung zu arbeiten, müssen Sie zunächst Abfragekonsole 1s herunterladen, unten geben wir Download-Links, aber lassen Sie uns zunächst die Tatsache beachten, dass die 1s-Anforderungskonsole in einen der folgenden Typen klassifiziert und klassifiziert werden kann:

  1. Für reguläre Formen (1s 8.2)
  2. Für verwaltete Formulare (1s 8.3)
  3. Gemischt (funktioniert sowohl auf 1s 8.2 als auch auf 1s 8.3)

In unserem Artikel werden wir zwei Konsolen betrachten, die erste funktioniert nur auf 1s 8.2 (reguläre Formen) und die zweite auf 1s 8.3 ( verwaltete Formulare). Sie unterscheiden sich geringfügig voneinander, wir werden später auf die Unterschiede eingehen, aber im Moment stellen wir fest, dass die Konsole in verwalteten Anwendungen nur im Startmodus "Thick Client" ordnungsgemäß funktioniert.

Laden Sie die 1s-Anfragekonsole für eine reguläre Anwendung herunter 1s 8.2

Unten ist ein Screenshot der Verarbeitung, Sie können die 1s-Anforderungskonsole für eine reguläre 1s 8.2-Anwendung herunterladen

Laden Sie die 1s-Anforderungskonsole für die verwaltete Anwendung 1s 8.3 herunter

Und dies ist die zweite Konsole, deren Screenshot Sie auch auf dem Bildschirm unten sehen können. Über den Link können Sie die 1s-Anforderungskonsole für die verwaltete Anwendung 1s 8.3 herunterladen

Beschreibung des Funktionsprinzips und der Hauptfunktionalität der 1s-Anforderungskonsole für eine reguläre Anwendung 1s 8.2


Das Abfragekonsole 1s 8.2 für eine normale Anwendung einfach zu bedienen und erfordert vom Benutzer keine besonderen Kenntnisse. Auf dem Screenshot sehen Sie ein Testfeld zum Schreiben einer Abfrage, in das Sie sowohl manuell als auch mit dem Konstruktor eine Abfrage schreiben können. Unter der Nummer 1 in der Abbildung sehen Sie die Schaltfläche "Parameter". Wenn Sie darauf klicken, sehen wir ein Formular zum Ersetzen von Parametern in der Anfrage, wir werden später darauf zurückkommen. Unter der Nummer 2 sehen Sie den Arbeitsbereich und die Aktionsleiste mit der Anfrage selbst, hier können wir Anfragen hinzufügen, löschen und auch in einer separaten Datei auf der Festplatte speichern. Unter der Nummer 3 in Abfragekonsole 1s 8.2 Es gibt eine Einstellung für die Ergebnisausgabe, sie kann in Form einer Tabelle oder hierarchisch in Form eines Baums angezeigt werden. Die zweite Option wird verwendet, wenn wir die Hierarchie als Ergebnis der Abfrage sehen müssen. Punkt 4 zeigt uns, ob es temporäre Tabellen in der Abfrage gibt, wenn ja, dann können wir sie debuggen und das Ergebnis der Ausführung sehen, das in einer temporären Tabelle abgelegt wird.

Betrachten wir nun einige einzelne Punkte in Abfragekonsole 1s.

Oben sehen Sie ein Fenster, in dem Parameter in die Anfrage eingesetzt werden. Durch Klick auf die Schaltfläche „Aus Anfrage“ erhalten wir die Parameter, die in der Anfrage angegeben sind, jetzt müssen wir nur noch die gewünschten Werte einstellen und das Formular schließen. Übrigens, wenn Sie eine Anfrage bearbeiten und Ihre zuvor hinzugefügten Parameter im Formular nicht mehr verwendet werden, werden sie grau hinterlegt. Wenn viele solcher Parameter vorhanden sind, können sie mit der Schaltfläche "Unbenutzte löschen" aus dem Fenster entfernt werden.

Wenn Ihre Abfrage temporäre Tabellen enthält, können Sie diese in separaten Unterabfragen debuggen und das Ergebnis der Ausführung dieser Unterabfrage anzeigen. Wenn wir im Hauptfenster der 1c-Abfragekonsole sehen, dass temporäre Tabellen vorhanden sind, klicken Sie auf die Schaltfläche „Temporary Tabellen" (Punkt 4 im Hauptfenster der Konsole). Nach dem Klicken erscheint das Fenster, das wir oben gesehen haben, es zeigt alle temporären Tabellen der Abfrage, klicken Sie auf „Debuggen“ und wir sehen das folgende Fenster.

Kurzbeschreibung der Funktionalität der 1s-Anforderungskonsole für eine verwaltete Anwendung 1s 8.3

Wir haben uns mit den Hauptfunktionen vertraut gemacht Abfragekonsole 1s 8.2, jetzt ist es an der Zeit, darüber nachzudenken Abfragekonsole 1s 8.3. Diese Verarbeitung Wir werden es nicht so detailliert betrachten wie das vorherige, sondern kurz auf die wichtigsten Parameter und Einstellungen eingehen.

Und schnelle Informationen. In diesem Artikel werde ich versuchen, die Verwendung der Abfragekonsole zu beschreiben und einen Link zum Herunterladen der Abfragekonsole bereitzustellen.

Schauen wir uns dieses Tool genauer an.

Download-Anforderungskonsole 1C

Um mit der Abfragekonsole zu beginnen, müssen Sie sie zunächst von irgendwo herunterladen. Die Verarbeitung wird normalerweise in zwei Arten unterteilt - verwaltete Formen und reguläre (manchmal auch als 8.1 und 8.2 / 8.3 bezeichnet).

Ich habe versucht, diese beiden Ansichten in einer Bearbeitung zu vereinen - im gewünschten Betriebsmodus öffnet sich das gewünschte Formular ( Im verwalteten Modus funktioniert die Konsole nur im Thick-Modus).

Sie können die 1C 8.3 (8.2)-Anforderungskonsole für verwaltete und reguläre Formulare unter dem Link herunterladen:.

Beschreibung der 1C-Abfragekonsole

Wenn Sie daran interessiert sind, wie Abfragen im 1C-System geschrieben werden, empfehle ich Ihnen, den Artikel und zu lesen.

Beginnen wir unsere Betrachtung der Abfragekonsole mit einer Beschreibung des Hauptverarbeitungsfensters:

In der Kopfzeile der Abfragekonsole sehen Sie die Ausführungszeit der letzten Abfrage mit einer Genauigkeit von Millisekunden, dies ermöglicht Ihnen, verschiedene Designs in Bezug auf die Leistung zu vergleichen.

Die erste Gruppe von Schaltflächen in der Befehlsleiste ist für das Speichern der aktuellen Abfragen in einer externen Datei verantwortlich. Dies ist sehr praktisch, Sie können jederzeit zum Schreiben einer komplexen Abfrage zurückkehren. Oder hinterlegen Sie beispielsweise eine Liste mit typischen Beispielen bestimmter Konstruktionen.

Links im Feld Anfrage können Sie neue Anfragen erstellen und in einer Baumstruktur speichern. Die zweite Schaltflächengruppe ist nur für die Verwaltung der Anforderungsliste zuständig. Damit können Sie eine Anfrage erstellen, kopieren, löschen und verschieben.

Erhalten Sie 267 kostenlose 1C-Videolektionen:

  • Anfrage ausführen- einfache Ausführung und Erzielung des Ergebnisses;
  • Paket ausführen- ermöglicht es Ihnen, alle Zwischenanfragen in anzuzeigen
  • Anzeigen temporärer Tabellen- Ermöglicht es Ihnen, das Ergebnis anzuzeigen, das temporäre Abfragen in der Tabelle zurückgeben.

Anforderungsparameter:

Hier können Sie die aktuellen Parameter für die Anfrage festlegen.

Im Abfrageparameterfenster ist folgendes interessant:

  • Taste Holen Sie sich von der Anfrage findet automatisch alle Parameter in der Anfrage, für die Bequemlichkeit des Entwicklers.
  • Flagge Einzelne Parameter für alle Anfragen- Wenn installiert, löscht seine Verarbeitung die Parameter nicht, wenn in der allgemeinen Liste der Anfragen von Anfrage zu Anfrage gewechselt wird.

Legen Sie einen Parameter als Werteliste fest sehr einfach, wenn Sie einen Parameterwert auswählen, genügt es, auf die Schaltfläche zum Löschen des Werts (Kreuz) zu klicken. Das System fordert Sie auf, den Datentyp auszuwählen, in dem Sie "Werteliste" auswählen müssen:

Ebenfalls im oberen Bereich befindet sich eine Schaltfläche zum Aufrufen der Einstellungen der Abfragekonsole:

Hier können Sie Optionen zum automatischen Speichern und Ausführen von Abfragen angeben.

Der Anfragetext wird in das Anfragefeld der Konsole eingetragen. Dies kann mit einem einfachen Abfragetestsatz oder durch Aufrufen eines speziellen Tools - des Abfragekonstruktors - erfolgen.

Aufruf aus dem Kontextmenü (rechte Maustaste) bei Klick auf das Eingabefeld:

Auch auf dieser Speisekarte sind nützliche Funktionen, wie das Bereinigen oder Hinzufügen von Bindestrichen ("|") zur Anfrage oder das Abrufen des Anfragecodes in dieser praktischen Form:

Anfrage = Neue Anfrage; Anfrage. Text = " |SELECT | Währungen.Referenz |VON | Handbuch Währungen AS Währungen"; Anfrageergebnis = Anfrage. Ausführen() ;

Das untere Feld der Abfragekonsole zeigt das Abfrageergebnisfeld an, für das diese Verarbeitung erstellt wurde:

Außerdem kann die Abfragekonsole zusätzlich zur Liste Daten in Form eines Baums für Abfragen anzeigen, die Summen enthalten.

Beginnen wir also mit einem einfachen: Erstellen Sie im Konfigurator eine neue Verarbeitung, nennen Sie sie nach Belieben Abfragekonsole oder Abfragegenerator.

Wir können den "Daten" sofort eine Tabelle für zukünftige Parameter hinzufügen, die wir benötigen, damit wir in unserer Konsole nicht die primitivste Anfrage ausführen, sondern mit Parametern und Links zum Beispiel für unsere Arbeit eine Anfrage an periodische Register erstellen , aber hier ohne Angabe von Parameter=&Date nirgendwo.

Um unsere Parametertabelle zu erstellen, fügen Sie auf der Registerkarte „Daten“ in ihrem „tabellarischen Teil“ eine neue Tabelle hinzu, nennen wir sie Abfrageparameter, hier fügen wir die Spalten dieser Tabelle hinzu: 1) ParameterName, Zeichenfolgentyp = 25 Zeichen; ParameterValue, hier ist ein zusammengesetzter Datentyp, siehe Abb:

Wählen Sie daher, wie im Bild gezeigt, den zusammengesetzten Typ für die Spalte ParameterValue aus: Aktivieren Sie im sich öffnenden Menü "Typen" das Kontrollkästchen "Zusammengesetzter Typ", wählen Sie die Zahl, die Zeichenfolge (geben Sie 20 Zeichen an), das Datum, den booleschen Wert und setzen Sie die Das unterste Häkchen - AnyReference - bedeutet, dass wir bei der Angabe der Parameter unserer Anfrage auf jedes Objekt unserer Konfiguration verweisen können, z. B. Verzeichnisse oder Dokumente.

Jetzt müssen wir das Formular unserer zukünftigen Abfragekonsole erstellen. Gehen Sie in der Bearbeitung auf die Registerkarte "Formulare" und fügen Sie eine neue hinzu. Wir geben diese Form ein und schon gibt es ein unbegrenztes Feld für Kreativität - Sie können die beiden soeben erstellten Attribute und die Platte mit den Parametern so anordnen, wie Sie möchten! Dafür können Sie Standard-Formularelemente wie Gruppieren oder Seite mit Seiten verwenden (wenn Sie lieber umblättern.

Das Wichtigste dabei ist eines: Ziehen Sie das Attribut „TextValues“ in das linke Eingabefeld des Formulars – stellen Sie sicher, dass in dessen Eigenschaften „Ansicht“ = Feld des Textdokuments eingestellt ist, siehe Abbildung:

In den Eigenschaften des Attributs "QueryTable" können Sie optional - "Display Grid" und "Display Headers" angeben.

Gehen Sie als nächstes im rechten Formularbearbeitungsfenster zur Registerkarte "Befehle" und fügen Sie eine neue Schaltfläche hinzu. Wenn Sie darauf klicken, führt unsere Konsole eine bestimmte Aktion aus. Lassen Sie uns einen "Abfragekonstruktor"-Button erstellen, Sie können dem Button ein Symbol hinzufügen, wenn Sie möchten, die Hauptsache ist, den Button selbst in das linke Formularbearbeitungsfenster zu verschieben - damit wir ihn sehen können. Dann in das rechte Formular Bearbeitungsfenster, klicken Sie mit der rechten Maustaste auf unsere Schaltfläche und wählen Sie Eigenschaften - in den Eigenschaften klicken Sie auf den Punkt "Aktion", es erscheint ein modales Fenster mit der Frage - wo genau wird unser Programmcode ausgeführt, den wir der Schaltfläche zuweisen - „Auf dem Client“ auswählen.

Das Formularmodul wird mit einer vorgefertigten leeren Prozedur "Procedure Request Constructor (Command)" geöffnet. Innerhalb dieser Prozedur beschreiben wir den Aufruf des Standard-Abfragegenerators 1c8. Es ist sehr leicht: Konstruktor=Neuer Abfragekonstruktor; Aber hier gibt es Fallstricke - der in die Plattform eingebaute Abfragekonstruktor funktioniert im Benutzermodus NUR unter einem dicken Client! Daher werden wir die Bedingung der Präprozessoranweisung #If einfügen, aber hier entscheiden Sie selbst, basierend auf Ihrer Plattform, oder Sie haben gewöhnliche Formulare, dann wählen Sie " ThickClientOrdinaryApplication" oder Sie haben eine Plattform für verwaltete Formulare, dann " ThickClientManagedApplication". siehe Abb.

Nun muss dieser Prozedur noch eine Bedingung zum Schreiben des Anfragetextes hinzugefügt werden, die der Query Builder für uns in unserem Attribut des Formulars „Text Request“ generiert:

Wenn Constructor.OpenModally()=True Then Object.QueryText=Constructor.Text; EndIf;

Aber wir können im Text der Anfrage (im Benutzermodus - im Props-Fenster "QueryText") manuell etwas ändern, damit unsere Änderungen beim erneuten Aufruf in den QueryConstructor gelangen - fügen wir hier eine einfache Bedingung hinzu:

Wenn nicht EmptyString(Object.QueryText) Then Constructor.Text=Object.QueryText; EndIf;

Das ist es, wir haben den in die 1c8-Plattform integrierten Abfragekonstruktor verbunden, schauen wir uns unsere Arbeit an. Führen Sie dazu 1C:Enterprise im Thick-Client-Modus mit einer der folgenden Methoden aus: 1) Hauptmenü des Konfigurators - Debugging - StartDebugging - ThickClient; 2) oder wenn Sie diese Tasten auf dem Bedienfeld im Konfigurator haben - drücken Sie einfach die Taste mit einem gelben Kreis mit einem dicken Punkt, siehe Abbildung:

Der 1sEnterprise8-Benutzermodus wird gestartet, wir finden unsere Verarbeitung, starten sie, klicken auf unsere Schaltfläche „Query Constructor“ und sehen, wie sich der in die Plattform integrierte Konstruktor öffnet. siehe Abb.

Der Abfragekonstruktor startet also, wir können bereits damit beginnen, unsere zukünftige Anfrage darin einzufügen, aber wir sind gespannt, wie die von uns erstellte Anfrage funktionieren wird! Und dafür müssen wir im Konfigurator in der Form unserer Konsole einen weiteren Button erstellen, nennen wir ihn "Run Request". Wir klicken in den Eigenschaften des „Run Request“-Buttons auf „Action“, das Menü fällt wieder heraus, in dem wir gefragt werden – wo unser Programmcode verarbeitet werden soll dieser Fall Wählen Sie "Sowohl auf dem Client als auch auf dem Server", wieder gelangen wir in die ModuleForms.

In die ExecuteRequest()-Prozedur, die wir auf dem Client haben, schreiben wir eine Bedingung, wenn der Benutzer den Anfragetext nicht eingegeben hat, aber darum bittet, ihn auszuführen:

If EmptyString(Object.QueryText) Then report("Geben Sie den Abfragetext ein!"); EndIf;

Das System hat uns bereits automatisch einen Link auf die Prozedur ExecuteRequestOnServer() generiert; - das ist gut, gehen wir zu dieser Prozedur, die auf dem Server ausgeführt wird, und schreiben Sie hier den Code für die Ausführung unserer eingegebenen Anfrage.

Hier gibt es Optionen: Sie können alle Ausdrücke im Zusammenhang mit der Konstruktion von Abfragen selbst schreiben, d. manuell, aber es gibt eine noch einfachere Option – klicken Sie innerhalb der Prozedur mit der rechten Maustaste und wählen Sie im Dropdown-Menü „Query Builder mit Ergebnisverarbeitung, siehe Abbildung“ aus:

Wenn Sie auf das Element "Abfragegenerator mit Ergebnisverarbeitung" geklickt haben, wird ein modales Fenster "Abfragetext nicht gefunden. Neuen erstellen?" eingeblendet, klicken Sie auf "Ja. Ergebnis umgehen". Das war's, wir brauchen nichts weiter von diesem Konstruktor, klicken Sie auf die Schaltfläche "OK" - es öffnet sich ein modales Fenster "In der Anfrage wurden keine Felder ausgewählt, klicken Sie auf "OK".

Danach erscheint in unserer Prozedur ExecuteRequestOnServer() das folgende fertige Leerzeichen:

Kommen wir zu dem vom Konstruktor erstellten Ausdruck:

Request.Text = "";

Anfrage.Text =Objekt.AbfrageText;

Es ist so einfach, unser "Antrag ausführen"-Button auf dem Bearbeitungsformular ist bereits praktisch funktionsfähig, bisher kann er nur bearbeiten einfache Anfragen ohne Parameter, aber Hauptsache es geht! Es bleibt nur noch, die Ergebnisse unserer Anfrage in der Requisite "Wertetabelle" auf dem Verarbeitungsformular visuell anzuzeigen. Ich möchte Sie daran erinnern, dass unser Attribut "Wertetabelle" den Typ "Tabellenkalkulationsdokument" hat, da wir sonst unsere Ergebnisse im Benutzermodus nicht sehen. Der Benutzer gibt immer tabellarische Daten aus, entweder durch ein Tabellenkalkulationsdokument oder ein Layout. Ich würde wirklich gerne Daten über eine Wertetabelle anzeigen können - da es sehr einfach zu bedienen und vertraut ist, aber leider eine Tabelle von Werten ist nur ein Werkzeug, das ein Entwickler benötigt, Sie können damit keine Daten auf dem Bildschirm anzeigen ...

Schauen wir uns genauer an, was ein Tabellenkalkulationsdokument ist – es ist wie eine Excel-Tabelle – Sie können nur mit den Tabellenzellen zu einem Datensatz in einer bestimmten Zelle gelangen, hier werden sie als Bereich bezeichnet, aber wir selbst können den Bereich davon auswählen Bereich in eine bestimmte Zelle:

Also haben wir herausgefunden, was ein Tabellenkalkulationsdokument ist, und für uns selbst festgestellt, dass wir die Daten aus unserer Abfrage in einer bestimmten Zelle dieses Tabellenkalkulationsdokuments bestimmen müssen. Aber denken wir mal: Was ist das „RequestResult“, das uns der Konstruktor so schnell generiert hat? Öffnen der Hilfe - Das Abfrageergebnis ist eine Tabelle mit den entsprechenden Eigenschaften! siehe Abb.

Und wenn wir jetzt nach dem Ausdruck QueryResult = Query.Execute(); (erzeugt vom Konstruktor) schreiben, ist hier so eine einfache Schleife für Collections:

Für jeden ColumnName From QueryResult.Columns Loop report(ColumnName.Name); EndCycle;

Überprüfen Sie nach dieser Schleife vorerst alle Ausdrücke, die automatisch vom Konstruktor erstellt wurden. Und führen Sie 1C:Enterprise8 unter einem dicken Client aus Erstellen Sie eine beliebige einfache Anfrage (Sie können den Query Builder verwenden - er funktioniert bereits für uns) und klicken Sie auf die Schaltfläche "Anfrage ausführen":

Dann sehen Sie unten im Fenster in den Meldungen, dass die Tabelle QueryResult die Namen der Felder speichert, die wir gerade ausgewählt haben, indem wir eine einfache Abfrage erstellt haben.

Lassen Sie uns nun diese Namen der Felder unseres Leidens in einem Tabellenkalkulationsdokument anzeigen:

Für jeden ColumnName From QueryResult.Columns Loop Cell=Object.QueryTable.Scope(1,QueryResult.Columns.Index(ColumnName)+1); Zelle.Text=Spaltenname.Name; EndCycle;

Um die Details zu den Abfragedaten anzuzeigen, lassen Sie uns die automatisch vom Konstruktor erstellten Ausdrücke entpacken und innerhalb der „SelectionDetailedRecords“-Schleife der Abfrage selbst genau dieselbe Schleife einfügen, die wir zum Anzeigen der Spaltennamen verwendet haben, nur müssen wir jetzt übertragen zum Text der Zelle, nicht zu den Daten der Tabelle "QueryResult", und zu den Daten der Auswahl selbst, sehen wir uns in der Hilfe an, wie Sie auf das Feld der detaillierten Auswahl der Abfrage zugreifen können:

SamplingDetailRecords = QueryResult.Select(); Während SelectionDetailedRecords.Next() Loop //in der ersten Zeile bereits die Namen der Tabellenspalten haben, laden wir die Daten unterhalb der ersten ZeileDocumentLineNumber=Object.QueryTable.TableHeight+1; Für jeden ColumnName From QueryResult.Columns Loop Cell=Object.QueryTable.Region(DocumentRowNumber,QueryResult.Columns.Index(ColumnName)+1); Cell.Text=SelectionDetailRecords[Spaltenname.Name]; EndCycle; EndCycle;

Das ist alles, wir können überprüfen, das Unternehmen unter einem dicken Client laden, eine einfache Anfrage ohne Parameter eingeben, auf die Schaltfläche "Run Request" klicken, siehe Abbildung:

Hurra, alles funktioniert!!!

Sehr praktisch ist es, wenn beim Öffnen / Schließen unserer Query Console unser Abfragetext, mit dem wir vor dem Schließen der Konsole gearbeitet haben, wieder in das Feld „QueryText“ geschrieben wird. Dazu müssen Sie nur die Formulareigenschaft = Autosave aktivieren, siehe Bild:

Alles, unsere Konsole funktioniert. Damit wir komplexere Abfragen mit darin angegebenen Parametern schreiben können, müssen wir eine weitere „FindParameters“-Schaltfläche sowie den Code für die „RunQuery“-Schaltfläche erstellen – der Code für die „FindParameters“-Schaltfläche wird auf der ausgeführt Client und auf dem Server. Außerdem starten wir in der Serverprozedur die Anfrage auf die gleiche Weise mit dem Text, der ihr aus dem „QueryText“-Fenster übergeben wird, indem wir den „Query.FindParameters()“-Ausdruck verwenden, wir finden die übergebenen Parameter und geben sie einfach in die ein tabellarischen Abschnitt des Formulars "QueryParameters" in einer Schleife. Vergessen Sie nicht, sie später aus der ausgefüllten Parametertabelle an die "Execute Request"-Prozedur zu übergeben.

Sie können unserer Konsole auch ein paar Schaltflächen hinzufügen, die das Parameterfenster und das Abfragetextfenster im Benutzermodus löschen.

Unsere Abfragekonsole ist einsatzbereit, wünschen Ihnen erfolgreiche kreative Lösungen mit Hilfe eines so einfachen und leistungsstarken Tools wie der Abfragekonsole!

Diese Verarbeitung ist auf der 1s8.3-Plattform (verwaltete Formulare) geschrieben, sie läuft unter einem dicken Client. Es kann auch wie folgt auf der 1s8.2-Plattform geschrieben werden herkömmliche Formen, und unter Kontrolle.

Der Download enthält ein Beispiel der gerade erstellten Abfragekonsole.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Upgrade der Abfragekonsole:

1) Jetzt läuft unsere hausgemachte Abfragekonsole mit integriertem Abfragegenerator unter jedem Client: unter dem Thick-Client von normalen und verwalteten Formularen und unter dem Thin- und Web-Client.

ps Die Form und das Aussehen des eingebauten Query Builder ist unterschiedlich - je nachdem, unter welchem ​​Client wir unsere Konsole gestartet haben (Mir persönlich ist das Query Builder-Formular unter einem Thick-Client vertrauter und bequemer)

&AtClient Procedure Query Constructor(Command) //Aufruf des Standard Query Constructor nur unter Thick Client möglich #If ThickClientManagedApplication oder ThickClientRegularApplication Then Constructor=New Query Constructor; Wenn nicht EmptyString(Object.QueryText) Then Constructor.Text=Object.QueryText; EndIf; Wenn Constructor.OpenModally()=True Then Object.QueryText=Constructor.Text; EndIf; // #Andernfalls // Report("Der Query Builder kann nur unter einem Thick Client aufgerufen werden"); // Zurückkehren; //# EndIf #Else Report("Sie führen den Query Builder unter einem Thin Client aus - er unterscheidet sich geringfügig in seiner Form und Leistungsgeschwindigkeit!"); Konstruktor = Neuer Anforderungskonstruktor(); Wenn nicht EmptyString(Object.QueryText) Then Constructor.Text=Object.QueryText; EndIf; AlertConstructor = New AlertDescription("RunAfterClosingConstructor", ThisForm); Constructor.Show(ConstructorAlert); # EndIf EndProcedure &AtClient Procedure ExecuteAfterClosingConstructor(Result, Constructor Parameters) Export //Result=Text wenn Concer durch OK-Button geschlossen wurde Object.QueryText = ShortLP(Result); //funktioniert!!! EndProzedur

2)Fähigkeit zu unserer einfachen Abfragekonsole hinzugefügt, komplexe Abfragen mit der an die Parameter übergebenen temporären Tabelle einzugeben!!! Der Mechanismus erwies sich als sehr einfach und elegant - ohne die Verwendung von XML-Code, wie sie in professionellen Konsolen verwendet werden.

Sie können den Code selbst und die Prozeduren für den Mechanismus zum Übertragen auf die Parameter temporärer Tabellen in der zweiten angehängten Datei sehen. Wie Sie mit der Entwicklung Ihrer eigenen Version von temporären Tabellen in den Parametern beginnen können, erfahren Sie unter diesem Link https://forum.site/forum9/topic183700/

Nun, wie Sie die Konsole mit einer komplexen Abfrage verwenden, wenn eine temporäre Tabelle an ihre Parameter übergeben wird. Sie können zum Beispiel den Code dieser Anfrage nehmen;

SELECT ExternalData.Product, ExternalData.Quantity PUT ExternalData FROM &ExternalData AS ExternalData; ////////////////////////////////////////////////// / ////////////////////////////// SELECT ExternalData.Item, ExternalData.Quantity, ISNULL(ItemsRemainsRemains.QuantityRemains, 0) AS Field1 , IS NULL(Warenreste. Restmenge, 0) - Externe Daten Restmenge AS FROM Externe Daten AS Externe Daten LEFT JOIN Akkumulationsregister Produkt

Ähnlich wie beim obigen Abfragecode können Sie Ihre eigene komplexe Abfrage unter Berücksichtigung Ihrer Datenobjekte erstellen.

Im Abfragekonstruktor haben wir also die obige Abfrage erstellt, indem wir den Konstruktor geschlossen haben - der Abfragetext fällt in unser Feld der Konsole "Abfragetext", klicken Sie auf die Schaltfläche "Parameter suchen", wir sehen, dass die Zeichenfolge = "External Data", Werttyp \u003d "Value Table" erschien in der Parametertabelle , siehe Abb.

Geben Sie in dieser Parametertabelle den Datumsparameter ein, z. B. das heutige Datum, und klicken Sie dann auf unseren Parameter der temporären Tabelle "ExternalData", um die Bearbeitung zu versuchen. Klicken Sie auf drei Punkte im Feld mit "Value Table" - eine Auswahl von Typen erscheint, klicken Sie auf die Zeile, unser Mechanismus blättert für uns die Seite im Formular um, wo wir diese sehr temporäre Tabelle manuell eingeben müssen.

Beachten Sie hier, dass in diesem Fall auf der Seite "TempTables" unten im Feld "Name der temporären Tabelle in Parametern" der Name unserer temporären Tabelle angezeigt wird (er wird aus der Parametertabelle kopiert).

Bisher sehen wir auf der Seite "TempTables" nur eine leere Tabelle - dies ist die Tabelle der Typen unserer zukünftigen temporären Tabelle. Mit der Schaltfläche "Hinzufügen" fügen wir den Namen des Attributs und den Typ der zukünftigen Tabelle hinzu . Seien Sie vorsichtig - Name und Typ müssen mit dem übereinstimmen, was wir in der Anfrage für &ExternalData angegeben haben:

Jetzt drücken wir die Schaltfläche "UpdateTemporaryTable" - und wir werden hier eine zweite Tabelle haben - wir werden sie direkt mit den Daten der temporären Tabelle über die Schaltfläche "Hinzufügen" füllen.

Das ist alles, wir können uns noch einmal selbst vergewissern, ob wir in der Parametertabelle auf der 1. Verarbeitungsseite die primitiven Daten der Abfrageparameter eingetragen haben, und auf den Button „Execute Request“ klicken – alles zählt, selektiert entsprechend mit der Einschränkung auf die Daten, die im Parameter unserer temporären Tabelle übermittelt werden

ps Wenn Sie bei der Eingabe der Namen der Details und ihrer Typen (in der ersten Tabelle) einen Fehler gemacht haben - schließen Sie einfach die Konsole und öffnen Sie sie erneut - die temporäre Datentabelle wird gelöscht - und die Typentabelle kann erneut bearbeitet werden und a neue Datentabelle kann wieder erstellt werden.

Das ist alles, wir können mit unseren eigenen Händen ein sehr leistungsfähiges Arbeitstool erstellen, außerdem ist unsere Konsole im Vergleich zu professionellen immer noch sehr flink - und das ist ein sehr großes Plus für Entwickler! Und natürlich funktioniert unsere Konsole jetzt unter jedem Client! Viel Glück mit Ihren kreativen Entwicklungen!!!

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Ich arbeite ständig mit meiner Abfragekonsole und bin kürzlich auf eine sehr interessante Abfrage gestoßen, bei der temporäre Tabellen nicht in der ersten enthalten waren Anforderungspaket und in den nächsten - und hier wurde meine Konsole ein wenig verrückt ... Sie musste ein weiteres Upgrade durchführen.

Der Manager für temporäre Tabellen in der Abfrage versteht also nicht immer, dass er damit arbeitet)) Daher müssen Sie genau diesen Manager für temporäre Tabellen explizit festlegen:

&OnServer-Prozedur ExecuteQueryOnServer() //upgrade2 - explizite Definition des TemporaryTable-Managers! VTManager=NeuerTempTableManager; Anfrage = Neue Anfrage; //upgrade2 - explizite Definition des TemporaryTable-Managers! Query.TempTableManager = VTManager; Anfrage.Text = Objekt.AbfrageText;

Diese Version der Konsole befindet sich im dritten Boot.

Eines der leistungsstärksten Tools von 1C Enterprise 8 ist ohne Zweifel der Query Builder. Der Konstruktor ist ein visuelles Werkzeug zum Arbeiten mit Abfragen in der 1C-Sprache. Aber der Konstruktor hat einen großen Nachteil – er zeigt nicht das Ergebnis der Abfrageausführung. Dieser Nachteil wird besonders von unerfahrenen Entwicklern von Anwendungslösungen auf der 1C:Enterprise 8.3- und 8.2-Plattform empfunden.

Darüber hinaus stoßen selbst erfahrene 1C-Programmierer häufig auf Situationen, in denen eine „einmalige“ Analyse der Informationsbasisdaten in verschiedenen Abschnitten erforderlich ist, Sie jedoch keinen vollständigen Bericht schreiben möchten eine solche „einmalige Schlussfolgerung“.

Für all diese und viele weitere Fälle bieten wir Ihnen gerne an externe Verarbeitung Abfragekonsole mit der Fähigkeit, Ergebnisse für 1C 8.3 und 1C 8.2 zu verarbeiten!


Hauptmerkmale der Abfragekonsole für 1C 8.3 und 1C 8.2:

Universelle Verarbeitung, läuft auf jeder Konfiguration von 1C-Plattformen: Enterprise 8.1 - 8.3;
- läuft im 1C:Enterprise-Modus;
- Die Abfrage kann manuell geschrieben werden, oder Sie können den Abfrage-Generator aufrufen;
- zeigt das Ergebnis der Anfrage;
- Sie können Berichtsparameter direkt in der Abfragekonsole angeben;
- kann Anforderungsdateien speichern und laden.

Um die Abfragekonsole zu starten, müssen Sie Ihre Konfiguration im 1C:Enterprise-Modus ausführen und die externe Verarbeitung der Abfragekonsole wie jede andere auf der Festplatte gespeicherte Datei öffnen. Eine solche Verarbeitung funktioniert genau so, als wäre sie Teil der angewendeten Lösung.


Die externe Verarbeitung der Abfragekonsole wiederholt die vertraute Oberfläche und die meisten Funktionalität Standard-Toolkit zum Kompilieren von Abfragen des 1C: Enterprise 8.3- und 8.2-Systems. Es ermöglicht Ihnen auch, die Ergebnisse von Abfragen, Stapelabfragen und temporären Tabellen abzurufen.

Die Abfragekonsole wird sowohl im Client-Server- als auch im File-Server-Betriebsmodus des Systems ausgeführt, sowohl unter Thick- als auch unter Thin-Clients! Die Query Console integriert den Standard Query Builder, aufgerufen via Kontextmenü im Feld Anfragetext.

WICHTIG! Abfragekonstruktor in Dünner Kunde nicht funktioniert, ist dieser Menüpunkt zum Öffnen des Konstruktors nicht verfügbar. Im Thick Client ist der Query Builder verfügbar!


Im Thin Client können wir Anfragen nur von Hand schreiben, alle anderen Funktionen funktionieren ohne Änderungen.