Debuggen von 1C- ein sehr leistungsfähiger und funktionaler Mechanismus der 1C 8.3-Plattform, der es Ihnen ermöglicht, Fehler im Programmcode schnell zu finden (in anderen Programmiersprachen wird dies „Debug“ genannt, vom englischen „Debug“).
Im Folgenden betrachten wir die wichtigsten Methoden zur Verwendung des Debugging-Mechanismus in Form praktischer Anweisungen anhand eines konkreten Beispiels.
Aufmerksamkeit! Wenn Sie den Client-Server-Modus (auf dem Server) verwenden, benötigen Sie.
Der einfachste Weg, das Debuggen in 1C zu starten, besteht darin, 1C im Modus zu öffnen und von dort aus den Debugging-Modus im gewünschten Betriebsmodus (dünn/dick, verwaltet/normal) zu starten:
Um Hintergrundjobs debuggen zu können, müssen Sie in das Menü „Debugging – Verbindung“ gehen. Klicken Sie im sich öffnenden Fenster auf die Schaltfläche „Automatische Verbindung“:
In diesem Fenster können Sie das entsprechende Flag setzen.
Zusätzlich zu Hintergrundjobs können Sie in diesem Fenster das Debuggen externer Verbindungen, http und . aktivieren.
Der zweite Schritt beim Debuggen ist das Setzen eines Haltepunkts (in anderen Programmiersprachen – Haltepunkt).
Zum Beispiel habe ich zum Debuggen den Handler „Bei Änderung“ im Dokumentformular ausgewählt:
Um einen Haltepunkt zu setzen, müssen Sie den gewünschten Programmcode finden und auf das Feld links neben dem Code-Eingabefeld doppelklicken (oder die F9-Taste drücken):
Um eine Liste aller installierten zu sehen, müssen Sie zum Debug-Menü gehen – Liste der Haltepunkte (Alt + F9):
Holen Sie sich 267 Videolektionen zu 1C kostenlos:
Zusätzlich zum üblichen Haltepunkt in 1C gibt es eine andere Art von Haltepunkt – mit einer Bedingung. Grafisch wird ein solcher Punkt blau dargestellt. Dieser Haltepunkt ist sehr nützlich, wenn Sie beim Durchlaufen einer Schleife eine bestimmte Iteration abfangen müssen. Das Debuggen wird aktiviert, wenn eine bestimmte Bedingung erfüllt ist.
Stoppen wir die Schleife beispielsweise bei Zeile 25:
Ein grauer Haltepunkt bedeutet, dass er nicht aktiv ist und das System an diesem Haltepunkt nicht anhält. Sie können es inaktiv machen, indem Sie auf die spezielle Schaltfläche im Bereich „Haltepunkt deaktivieren“ klicken (Umschalt+Strg+F9):
Das System kann aufgrund eines Fehlers stoppen; dazu müssen Sie im Menü Debug - Stopp bei Fehler das entsprechende Flag setzen:
Außerdem verfügt ein Fehlerstopp über ähnliche Funktionen wie ein bedingter Haltepunkt – er ermöglicht Ihnen das Filtern von Ausnahmen mit einem bestimmten Fehlertext.
Nachdem Sie einen Haltepunkt gesetzt haben, müssen Sie die Ausführung des gewünschten Programmcodes veranlassen, damit das System in die schrittweise Codeausführung übergeht. Die Anzeige eines Pfeils zeigt den Beginn des Schritt-für-Schritt-Codeausführungsmodus an:
Um einen Schritt zur nächsten Zeile zu machen, müssen Sie die Taste „F11“ (Einsteigen) drücken.
Wenn Sie durch Programmcodezeilen gehen und sich in der Zeile eine Prozedur oder Funktion befindet, „fallen“ Sie in diese Prozedur (oder Funktion).
Um nicht zu „scheitern“, genügt es, statt F11 (Step into) mit der Taste F10 (Step through) durch die Zeilen zu springen;
Um von der aktuellen Cursorposition zur gewünschten zu gelangen und dabei Zwischenzeilen des Codes zu umgehen, müssen Sie den Cursor auf der gewünschten Zeile platzieren und Umschalt + F10 (Gehe zum Cursor) drücken.
Sie können die Werte bestimmter Werte auf unterschiedliche Weise anzeigen:
Wenn Sie mit der Maus über eine Variable fahren, „hebt“ das System die Werte der Variablen hervor:
Diese beiden Analysemethoden sind sehr ähnlich, die Hauptunterschiede liegen in der Schnittstelle. Es ist bequemer, ein Scoreboard für eine Gruppe von Indikatoren und Ausdrücke für einzelne Indikatoren zu verwenden.
Diese Methoden sind sehr einfach anzuwenden. Es reicht aus, den Namen der gewünschten Variablen in die Tabelle einzutragen. Ein großer Vorteil beliebiger Berechnungen besteht darin, dass Sie dem Ausdruck Ihre eigenen Daten hinzufügen können.
Zum Beispiel:
Es ist sehr nützlich, die Ausdrucksauswertung zu verwenden und eine Abfrage auszuführen, sie in eine Wertetabelle hochzuladen und sie anzusehen.
Sehr oft müssen Sie verstehen, woher eine bestimmte Prozedur oder Funktion aufgerufen wurde und mit welchen Parametern. Zu diesem Zweck stellt 1C eine spezielle Funktion zur Verfügung – „Call Stack“. Um den Call Stack zu starten, müssen Sie die Hotkeys Strg + Alt + C oder über das Menü (Debugging – Call Stack) drücken.
Damit können Sie im Detail herausfinden, von wo und mit welchen Parametern die Prozedur aufgerufen wurde:
Wenn Sie daran interessiert sind, die Leistung während des Debuggens zu bewerten – .
Sehen Sie sich auch ein Übersichtsvideo zum Debuggen in 1C an:
Wahrscheinlich kommt keine einzige ernsthafte Konfiguration auf 1C 8.3 oder 8.2 ohne den Einsatz von Routine- und Hintergrundaufgaben aus. Sie sind sehr praktisch, da sie nach einem klar definierten Zeitplan ohne Eingreifen des Benutzers oder Programmierers ausgeführt werden.
Beispielsweise müssen Sie einmal täglich Daten mit einem anderen Programm austauschen. Mithilfe von Routine- und Hintergrundaufgaben kann 1C diese Aktionen beispielsweise außerhalb der Arbeitszeit selbstständig durchführen. Diese Methode beeinträchtigt das Benutzererlebnis in keiner Weise und hilft, Zeit zu sparen.
Lassen Sie uns zunächst herausfinden, was sie bedeuten und was ihr Unterschied ist:
Nehmen wir an, dass unser Unternehmen etwas verkauft und über eine eigene Website verfügt, auf der die Preise aufgeführt sind. Wir möchten sie einmal täglich hochladen, um die Relevanz aufrechtzuerhalten.
Öffnen Sie die Konfiguration und fügen Sie eine geplante Aufgabe hinzu.
Schauen wir uns die wichtigsten Parameter an, die in seinen Eigenschaften ausgefüllt werden müssen.
Der letzte Schritt besteht darin, über den entsprechenden Hyperlink in der Eigenschaftenpalette einen Zeitplan für unseren Upload auf die Website einzurichten.
Eine typische Zeitplaneinstellung sehen Sie in 1C 8.3. Hier gibt es nichts Kompliziertes. In diesem Beispiel haben wir den Start des Hochladens von Preisen auf die Website jeden Tag von fünf bis sieben Uhr morgens eingerichtet. Falls die geplante Aufgabe nicht vor 7:00 Uhr abgeschlossen werden kann, wird sie bereits am nächsten Tag erledigt.
Führen Sie das Standarddienstprogramm „Verwaltung von 1C Enterprise-Servern“ aus und öffnen Sie die Eigenschaften der Infobase, in der Sie die Routineaufgabe erstellt haben (für Client-Server-Versionen von 1C).
Überprüfen Sie im sich öffnenden Fenster (nach Eingabe Ihres Benutzernamens und Passworts für den Zugriff auf die Informationssicherheit), dass das Kontrollkästchen „Blockierung von Routineaufgaben aktiviert“ nicht aktiviert ist. Wenn Sie auf eine Situation stoßen, in der die Aufgabe nicht funktioniert, überprüfen Sie zunächst diese Einstellung.
Ebenso können Sie Routineaufgaben in 1C 8.3 komplett deaktivieren. Um bestimmte Hintergrundjobs zu deaktivieren, können Sie die in den neuesten Versionen integrierte „Background Job Console“-Verarbeitung verwenden.
In diesem Modus ist das Einrichten und Starten dieser Aufgaben viel schwieriger zu organisieren. Meistens wird ein zusätzliches Konto erstellt, dessen Sitzung immer geöffnet ist.
In diesem Fall werden Routineaufgaben über die Methode „RunTaskProcessing()“ aktiviert.
Sie können auch die folgende Konstruktion verwenden:
Als Prozedurname müssen Sie den Namen der Client-Prozedur angeben, die ausgeführt werden soll. Das Intervall gibt an, wie viele Sekunden später die Ausführung stattfinden wird. Der Parameter „Einmalig“ ist nicht erforderlich. Es spiegelt wider, ob dieser Vorgang einmal oder mehrmals durchgeführt wird.
Sie können den Fortschritt von Hintergrundjobs sowie das Vorhandensein möglicher Fehler im Protokoll einsehen. Wählen Sie im Filter die Anwendung „Hintergrundjob“ aus und wählen Sie ggf. die Wichtigkeit aus, die Sie interessiert, zum Beispiel nur „Fehler“.
Das Protokoll zeigt alle Einträge, die Ihrer Auswahl entsprechen, zusammen mit einem Kommentar, der Ihnen hilft, die Ursache des Fehlers zu verstehen.
Manchmal besteht die Notwendigkeit, einen Hintergrundjob (Routine) zu debuggen. Genau hier entsteht häufig das Problem.
Manchmal besteht die Notwendigkeit, einen Hintergrundjob (Routine) zu debuggen. Genau hier entsteht häufig das Problem. Und dieses Problem besteht darin, dass der Debugger keine Verbindung zu dem Prozess herstellen kann, der auf der Serverseite ausgeführt wird.
Um dieses Problem zu lösen, müssen wir zwei Probleme lösen:
1. Aktivieren Sie das Debuggen auf dem 1C-Server. Standardmäßig ist das Debuggen auf dem Server deaktiviert. Um es zu aktivieren, müssen Sie Folgendes tun: Starten Sie die Windows-Registrierung, indem Sie Folgendes eingeben: Ausführen" Befehl REGEDIT. Linie finden
„C:\Programme\1cv81\bin\ragent.exe“ -srvc -agent
(aus den Startparametern des 1C:Enterprise 8.1 Server Agent-Dienstes entnommen). (Dies gilt für Plattformversion 8.1)
Fügen Sie den Schlüssel am Ende hinzu -debuggen (Vergessen Sie nicht, vor dem Schlüssel -debug ein Leerzeichen einzufügen)
Beispiel
. „ImagePath“= War "C:\Programme\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Programme\1cv81\server" setzen „C:\Programme\1cv81\bin\ragent.exe“ -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debuggen-d „C:\Programme\1cv81\server“
Starten Sie den Serveragenten neu. Bereit. Jetzt können wir Serverausführungsthreads debuggen.
2. Die Groß-/Kleinschreibung der Buchstaben des Servernamens und des Datenbanknamens in der Client-Verbindung zum 1C-Server muss genau übereinstimmen.
Richtiger Anschluss:Falsche Verbindung:
Hintergrundjob Klient - Srvr="SERVER-NAME";Ref="Base_Name";
Wie können Sie herausfinden, mit welchen Parametern der Hintergrundjob eine Verbindung zur Datenbank herstellt? Sie können sich verschiedene Möglichkeiten vorstellen. Eine davon besteht darin, diese Parameter zu protokollieren, während ein Hintergrundjob ausgeführt wird.
Der Code lautet wie folgt:
Verfahren WriteConnectionWithBase() Export
JournaleintragRegistrierung(,InformationBaseConnectionString());
EndProzedur
Während ein Hintergrundjob ausgeführt wird, wird eine Zeile mit den vom Hintergrundjob verwendeten Datenbankverbindungsparametern in das Protokoll geschrieben.
Jetzt legen wir die automatische Verbindung zu Hintergrundjobs fest.
Nachdem Sie solche Manipulationen durchgeführt haben, können Sie Hintergrundjobs debuggen.
Hast du es noch nicht gelesen? Du könntest interessiert sein...