Heim / Arbeiten Sie im Internet / 1s-Server-Routineaufgaben. Universelle Ordnungsaufgabe. Hintergrundjobs im Dateimodus

1s-Server-Routineaufgaben. Universelle Ordnungsaufgabe. Hintergrundjobs im Dateimodus

1 Job-Engine
2 Hintergrundjobs
3 Geplante Aufgaben
4 Besonderheiten bei der Ausführung von Hintergrundaufgaben in Datei- und Client-Server-Versionen
5 Erstellung geplanter Job-Metadaten
6 Jobkonsole
7 Arbeiten mit geplanten Aufgaben
7.1 Auftragsobjekte
7.2 Abrufen einer Jobliste
7.3 Erstellung
7.4 Löschung
7.5 Erhalten eines Auftragsobjekts

Job-Mechanismus

Der Jobmechanismus ist so konzipiert, dass er jede Anwendung oder Funktionalität nach einem Zeitplan oder asynchron ausführt.

Der Jobmechanismus führt die folgenden Aufgaben aus:

  • Fähigkeit, Routineverfahren in der Phase der Systemkonfiguration zu bestimmen;
  • Ausführung bestimmter Aktionen gemäß Zeitplan;
  • Die Ausführung eines Aufrufs einer gegebenen Prozedur oder Funktion ist asynchron, d.h. ohne auf seine Fertigstellung zu warten;
  • Verfolgen des Fortschritts eines bestimmten Jobs und Abrufen seines Abschlussstatus (ein Wert, der den Erfolg oder Misserfolg seiner Ausführung angibt);
  • Abrufen einer Liste der aktuellen Aufgaben;
  • Fähigkeit, auf die Erledigung einer oder mehrerer Aufgaben zu warten;
  • Auftragsverwaltung (Möglichkeit zur Stornierung, Sperrung der Ausführung etc.).

Die Job-Engine besteht aus folgenden Komponenten:

  • Metadaten geplanter Aufgaben;
  • Geplante Aufgaben;
  • Hintergrundjobs;
  • Taskplaner.

Hintergrundjobs – entwickelt, um Anwendungsaufgaben asynchron auszuführen. Hintergrundjobs werden mit der eingebauten Sprache implementiert.

Geplante Aufgaben – entwickelt, um Anwendungsaufgaben nach einem Zeitplan auszuführen. Geplante Aufgaben werden in der Infobase gespeichert und basierend auf den in der Konfiguration definierten Metadaten erstellt. Geplante Job-Metadaten enthalten Informationen wie Name, Methode, Verwendung usw.

Ein geplanter Job hat einen Zeitplan, der festlegt, zu welchen Zeiten die dem geplanten Job zugeordnete Methode ausgeführt werden soll. Der Zeitplan wird in der Regel in der Infobase festgelegt, kann aber auch in der Konfigurationsphase festgelegt werden (z. B. für vordefinierte geplante Aufgaben).

Der Aufgabenplaner wird verwendet, um die Ausführung geplanter Aufgaben zu planen. Für jeden geplanten Job prüft der Scheduler periodisch, ob das aktuelle Datum und die aktuelle Uhrzeit mit dem Zeitplan des geplanten Jobs übereinstimmen. Wenn es übereinstimmt, plant der Scheduler die Ausführung dieses Jobs. Dazu erstellt der Scheduler gemäß dieser geplanten Aufgabe eine Hintergrundaufgabe, die die eigentliche Verarbeitung durchführt.

Hintergrundjobs

Hintergrundjobs sind nützlich, um komplexe Berechnungen durchzuführen, wenn das Ergebnis der Berechnung erst nach langer Zeit verfügbar ist. Die Job-Engine hat die Möglichkeit, solche Berechnungen asynchron durchzuführen.

Einem Hintergrundjob ist eine Methode zugeordnet, die aufgerufen wird, wenn der Hintergrundjob ausgeführt wird. Jede nicht globale Prozedur oder Funktion kann als Hintergrundjobmethode fungieren. gemeinsames Modul, die auf dem Server aufgerufen werden kann. Hintergrundjobparameter können beliebige Werte sein, die an den Server übergeben werden dürfen. Die Parameter eines Hintergrundjobs müssen genau mit den Parametern der Prozedur oder Funktion übereinstimmen, die er aufruft. Wenn die Methode des Hintergrundjobs eine Funktion ist, wird ihr Rückgabewert ignoriert.

Ein Hintergrundjob kann einen Schlüssel haben - einen beliebigen Anwendungswert. Der Schlüssel führt eine Einschränkung beim Start von Hintergrundjobs ein - es kann nur ein Hintergrundjob pro Zeiteinheit mit einem bestimmten Schlüsselwert und einem bestimmten Namen der Hintergrundjobmethode ausgeführt werden (der Methodenname besteht aus dem Modulnamen und dem Namen von das Verfahren oder die Funktion). Mit dem Schlüssel können Sie Hintergrundjobs mit gleichen Methoden nach einem bestimmten Anwendungsattribut gruppieren, sodass innerhalb einer Gruppe nicht mehr als ein Hintergrundjob ausgeführt wird.

Hintergrundjobs werden programmgesteuert von jeder Verbindung aus erstellt und verwaltet. Jeder Benutzer darf einen Hintergrundjob erstellen. Gleichzeitig wird es im Namen des Benutzers ausgeführt, der es erstellt hat. Ein Benutzer mit Administratorrechten oder der Benutzer, der diese Hintergrundaufgaben erstellt hat, darf von jeder Verbindung aus Aufgaben empfangen und auf deren Abschluss warten.

Der Hintergrundjob ist ein reines Sitzungsobjekt, gehört aber keiner Benutzersitzung an. Für jeden Job wird eine spezielle Systemsitzung erstellt, die im Namen des Benutzers ausgeführt wird, der den Anruf getätigt hat. Hintergrundjobs haben keinen dauerhaften Zustand.

Ein Hintergrundjob kann andere Hintergrundjobs erzeugen. In der Client-Server-Version können Sie damit komplexe Berechnungen über Cluster-Arbeitsprozesse hinweg parallelisieren, was den Berechnungsprozess insgesamt deutlich beschleunigen kann. Die Parallelisierung wird implementiert, indem mehrere untergeordnete Hintergrundjobs erstellt werden, die darauf warten, dass jeder von ihnen im Haupthintergrundjob abgeschlossen wird.

Erfolgreiche oder fehlgeschlagene Hintergrundjobs werden für 24 Stunden gespeichert und danach gelöscht. Wenn die Anzahl der laufenden Hintergrundjobs 1000 überschreitet, werden auch die ältesten Hintergrundjobs gelöscht.

Geplante Einsätze

Geplante Aufgaben werden verwendet, wenn Sie bestimmte periodische oder einmalige Aktionen gemäß dem Zeitplan ausführen müssen.

Geplante Aufgaben werden in der Infobase gespeichert und basierend auf den Metadaten der in der Konfiguration definierten geplanten Aufgabe erstellt. Metadaten definieren solche Parameter einer geplanten Aufgabe wie: aufgerufene Methode, Name, Schlüssel, Fähigkeit zur Verwendung, Zeichen der Vorbestimmung usw. ausgeführt werden Routineaufgabe, usw.

Die Erstellung und Verwaltung geplanter Aufgaben erfolgt programmgesteuert von jeder Verbindung aus und ist nur Benutzern mit Administratorrechten gestattet.

Notiz. Beim Arbeiten in der Dateiversion ist es möglich, geplante Aufgaben zu erstellen und zu bearbeiten, ohne den Aufgabenplaner zu starten.

Eine geplante Aufgabe ist einer Methode zugeordnet, die aufgerufen wird, wenn die geplante Aufgabe ausgeführt wird. Eine geplante Jobmethode kann eine beliebige Prozedur oder Funktion eines nicht globalen gemeinsam genutzten Moduls sein, das auf dem Server aufgerufen werden kann. Geplante Auftragsparameter können beliebige Werte sein, die an den Server übergeben werden dürfen. Die Parameter eines geplanten Jobs müssen exakt mit den Parametern der aufgerufenen Prozedur oder Funktion übereinstimmen. Wenn die geplante Jobmethode eine Funktion ist, wird ihr Rückgabewert ignoriert.

Eine geplante Aufgabe kann einen Schlüssel haben – jeden angewendeten Wert. Der Schlüssel führt eine Einschränkung für den Start geplanter Aufgaben ein, da pro Zeiteinheit kann unter den geplanten Aufgaben, die demselben Metadatenobjekt zugeordnet sind, nur eine geplante Aufgabe mit einem bestimmten Schlüsselwert ausgeführt werden. Mit dem Schlüssel können Sie geplante Aufgaben, die demselben Metadatenobjekt zugeordnet sind, gemäß einem bestimmten Anwendungsattribut gruppieren, sodass nicht mehr als eine geplante Aufgabe innerhalb einer Gruppe ausgeführt wird.

Während der Konfiguration können Sie vordefinierte geplante Jobs definieren. Vordefinierte geplante Jobs unterscheiden sich nicht von regulär geplanten Jobs, außer dass sie nicht explizit erstellt oder gelöscht werden können. Wenn die Metadaten der geplanten Aufgabe auf festgelegt sind Zeichen einer vordefinierten geplanten Aufgabe, dann wird beim Aktualisieren der Konfiguration automatisch eine vordefinierte geplante Aufgabe in der Infobase erstellt. Wenn das vordefinierte Kontrollkästchen deaktiviert ist, wird die vordefinierte geplante Aufgabe automatisch in der Infobase gelöscht, wenn die Konfiguration aktualisiert wird. Die Anfangswerte der Eigenschaften einer vordefinierten geplanten Aufgabe (z. B. Zeitplan) werden in den Metadaten festgelegt. Zukünftig, wenn die Anwendung läuft, können sie geändert werden. Vordefinierte geplante Jobs haben keine Parameter.

Der geplante Jobplan bestimmt, zu welchen Zeitpunkten der geplante Job gestartet werden soll. Mit dem Zeitplan können Sie Folgendes festlegen: Datum und Uhrzeit des Beginns und Endes der Aufgabe, Ausführungszeitraum, Wochentage und Monate, an denen die geplante Aufgabe ausgeführt werden soll usw. (siehe Beschreibung des integrierten in der Sprache).

Beispiele für geplante Aufgabenpläne:

Jede Stunde, nur einen Tag

Retry PeriodDays = 0, Retry PeriodDuringDay = 3600

Jeden Tag einmal am Tag

Retry PeriodDays = 1, Retry PeriodDuringDay = 0

Eines Tages, einmal

Wiederholungszeitraum Tage = 0

Jeden zweiten Tag einmal am Tag

Wiederholungszeitraum Tage = 2

Täglich stündlich von 01.00 bis 07.00 Uhr

Wiederholungszeitraum Tage = 1
Retry PeriodDuring the Day = 3600
Startzeit = 01.00
Endzeit = 07.00

Jeden Samstag und Sonntag um 09.00 Uhr

Wiederholungszeitraum Tage = 1
Wochentage = 6, 7
Startzeit = 09.00

Jeden Tag eine Woche, Wochenpass

Wiederholungszeitraum Tage = 1
ZeitraumWochen = 2

Einmal um 01.00 Uhr

Startzeit = 01.00

Letzter Tag im Monat um 9:00 Uhr.

Wiederholungszeitraum Tage = 1
TagInMonat = -1
Startzeit = 09.00

Fünfter jeden Monats um 9:00 Uhr

Wiederholungszeitraum Tage = 1
TagInMonat = 5
Startzeit = 09.00

Zweiter Mittwoch im Monat um 9:00 Uhr

Wiederholungszeitraum Tage = 1
Wochentag im Monat = 2
Wochentage = 3
Startzeit = 09.00

Sie können überprüfen, ob der Job für ausgeführt wird gegebenes Datum(Methode RequiredExecution des ScheduleRegularTasks-Objekts). Geplante Aufgaben werden immer auf den Namen eines bestimmten Benutzers ausgeführt. Wenn der Benutzer des geplanten Jobs nicht angegeben ist, erfolgt die Ausführung im Auftrag des Standardbenutzers mit Administratorrechten.

Geplante Jobs werden mit Hintergrundjobs ausgeführt. Wenn der Planer feststellt, dass eine geplante Aufgabe gestartet werden soll, wird basierend auf dieser geplanten Aufgabe automatisch eine Hintergrundaufgabe erstellt, die die gesamte weitere Verarbeitung durchführt. Wenn diese geplante Aufgabe bereits ausgeführt wird, wird sie unabhängig von ihrem Zeitplan nicht erneut ausgeführt.

Geplante Jobs können neu gestartet werden. Dies gilt insbesondere dann, wenn garantiert werden muss, dass die geplante Aufgabenmethode ausgeführt wird. Eine geplante Aufgabe wird neu gestartet, wenn sie abnormal beendet wurde oder wenn der Worker-Prozess (in der Client-Server-Version) oder der Client-Prozess (in der Dateiversion), auf dem die geplante Aufgabe ausgeführt wurde, abnormal beendet wurde. In einer geplanten Aufgabe können Sie angeben, wie oft sie neu gestartet werden muss, sowie das Intervall zwischen Neustarts. Bei der Implementierung der Methode eines neu startbaren geplanten Jobs sollte berücksichtigt werden, dass seine Ausführung bei einem Neustart von vorne beginnt und nicht von dem Moment an fortgesetzt wird, in dem er abgestürzt ist.

Es ist wichtig, sich daran zu erinnern Endzeit beendet den Hintergrundjob nicht unbedingt zum angegebenen Zeitpunkt. Einige Aussagen:
* Ein Hintergrundjob kann seinen automatischen Abbruch ignorieren, wenn er nicht hängen bleibt, aber aus diesem Grund weiter ausgeführt wird
dass nicht alle Plattformoperationen rückgängig gemacht werden können. Falls durchgeführt zyklischer Code eingebaute Sprache, dann brechen Sie den Auftrag ab
kann sonst nicht. Es hängt alles davon ab, was der Job macht.
* Endzeit - das Limit, innerhalb dessen eine Aufgabe beginnen und nicht enden kann?
* Beendigung erzwingen Job setzt die Änderungen zurück, die bis zu dem Zeitpunkt vorgenommen wurden, an dem die Transaktion gestartet wurde?

Besonderheiten bei der Durchführung von Hintergrundaufgaben in Datei- und Client-Server-Versionen

Mechanismen zum Ausführen von Hintergrundjobs in der Datei- und der Client-Server-Version sind unterschiedlich.

  • In der Dateiversion müssen Sie einen dedizierten Clientprozess erstellen, der Hintergrundaufgaben ausführt. Dazu muss im Client-Prozess periodisch die globale Kontextfunktion ExecuteJobProcessing aufgerufen werden. Nur ein Client-Prozess pro Infobase sollte Hintergrundjobs verarbeiten (und daher aufrufen diese Funktion). Wenn kein Client-Prozess zur Verarbeitung von Hintergrundjobs erstellt wurde, wird beim programmgesteuerten Zugriff auf die Job-Engine der Fehler „Job-Manager ist nicht aktiv“ generiert. Es wird nicht empfohlen, den Clientprozess zu verwenden, der Hintergrundjobs für andere Funktionen verarbeitet.

Nachdem der Client-Prozess, der die Hintergrundjobs verarbeitet, ausgeführt wird, erhalten andere Client-Prozesse die Gelegenheit dazu Programmzugriff zum Hintergrund-Job-Mechanismus, d.h. kann Hintergrundjobs ausführen und verwalten.

In der Client-Server-Version dient der Task-Scheduler zur Ausführung von Hintergrundjobs, der sich physikalisch im Cluster-Manager befindet. Der Planer für alle Hintergrundjobs in der Warteschlange ruft den am wenigsten belasteten Arbeitsprozess ab und verwendet ihn, um den entsprechenden Hintergrundjob auszuführen. Der Worker-Prozess führt den Job aus und benachrichtigt den Scheduler über die Ausführungsergebnisse.

In der Client-Server-Version ist es möglich, die Ausführung geplanter Aufgaben zu blockieren. Das Blockieren der Ausführung geplanter Aufgaben erfolgt in den folgenden Fällen:

  • Auf der Infobase wurde eine explizite Blockierung geplanter Aufgaben eingestellt. Die Sperre kann über die Kombikonsole gesetzt werden;
  • Auf der Infobase wurde eine Verbindungssperre gesetzt. Die Sperre kann über die Kombikonsole gesetzt werden;
  • Die SetExclusiveMode()-Methode wurde von der integrierten Sprache mit dem True-Parameter aufgerufen;
  • In einigen anderen Fällen (z. B. beim Aktualisieren der Datenbankkonfiguration).

Metadaten für geplante Jobs erstellen

Bevor Sie eine geplante Aufgabe programmgesteuert in der Infobase erstellen, müssen Sie ein Metadatenobjekt dafür erstellen.

Um ein Metadatenobjekt für geplante Jobs im Konfigurationsbaum in der Verzweigung Allgemein für die Verzweigung Geplante Jobs zu erstellen, führen Sie den Befehl Hinzufügen aus und füllen Sie die folgenden Eigenschaften des geplanten Jobs in der Eigenschaftenpalette aus:

Methodenname – Geben Sie den Namen der geplanten Jobmethode an.

Schlüssel - Geben Sie einen beliebigen Zeichenfolgenwert an, der als Schlüssel der geplanten Aufgabe verwendet wird.

Zeitplan - gibt den Zeitplan der geplanten Aufgabe an. Um einen Zeitplan zu erstellen, klicken Sie auf den Link "Öffnen" und stellen Sie die erforderlichen Werte in dem sich öffnenden Zeitplanformular ein.

Die Registerkarte Allgemein gibt das Start- und Enddatum der Aufgabe und den Wiederholungsmodus an.

Die Registerkarte „Täglich“ legt den Tagesplan für die Aufgabe fest.

Geben Sie den Zeitplan an:

  • Startzeit und Endzeit der Aufgabe;
  • die Endzeit der Aufgabe, nach der sie zwangsweise abgeschlossen wird;
  • Task-Wiederholungszeitraum;
  • die Dauer der Pause zwischen Wiederholungen;
  • Ausführungsdauer.

Eine beliebige Kombination von Bedingungen ist zulässig.

Der wöchentliche Zeitplan der Aufgabe wird auf der Registerkarte Wöchentlich angegeben.

Aktivieren Sie die Kontrollkästchen für die Wochentage, an denen die Aufgabe ausgeführt wird. Wenn Sie den Job wiederholen möchten, geben Sie das Wiederholungsintervall in Wochen an. Beispiel: Die Aufgabe wird in 2 Wochen ausgeführt, der Wiederholungswert ist 2.

Auf der Registerkarte "Monatlich" wird der monatliche Zeitplan der Aufgabe angezeigt.

Aktivieren Sie die Kontrollkästchen für die Monate, in denen die Aufgabe ausgeführt wird. Bei Bedarf können Sie einen bestimmten Tag (Monat oder Woche) der Ausführung von Anfang des Monats/Woche oder Ende angeben.

Verwendung - Wenn gesetzt, wird die Aufgabe gemäß dem Zeitplan ausgeführt.

Vordefiniert – wenn gesetzt, ist der Job ein vordefinierter Job.

Anzahl der Wiederholungen bei Absturz – Gibt die Anzahl der Wiederholungen bei einem Absturz an.

Wiederholungsintervall bei Absturz – Gibt das Wiederholungsintervall bei Absturz an. Beispiele

Erstellen eines Hintergrundjobs „Aktualisierung des Index der Volltextsuche“:

BackgroundJobs.Run("UpdatingFullTextSearchIndex");

Erstellen einer geplanten Aufgabe "Wiederherstellen von Sequenzen":

Schedule = New ScheduleRegulationTask;
Schedule.RepeatPeriodDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

Task = ScheduledTasks.Create ScheduledTask("RestoringSequences");
Task.Schedule = Zeitplan;
Task.Write();

Job-Konsole

Verarbeitung mit ITS, verwaltet geplante Tasks: Task Console.epf

Arbeiten Sie mit geplanten Aufgaben

Job-Objekte

Jobobjekte werden nicht referenziert, sondern in der Datenbank in einem speziellen Speicher gespeichert.

Wenn in den Metadaten das Flag „Vordefiniert“ aktiviert ist, wird ein solches Objekt beim Start von 1C:Enterprise automatisch erstellt und existiert immer in genau einer Instanz. Ein solches Objekt kann nicht gelöscht werden.

Wenn das Flag "Vordefiniert" nicht gesetzt ist, werden die Objekte einer solchen Aufgabe programmgesteuert erstellt und gelöscht, wobei der Zeitplan und die Parameter angegeben werden.

Abrufen einer Aufgabenliste

Die Liste der Aufgaben kann durch das Verfahren erhalten werden GetRegularAssignments globaler Jobmanager Geplante Aufgaben

Manager für geplante Jobs

GetScheduledJobs (GetScheduledJobs)

Syntax:

Holen Sie sich regelmäßige Aufgaben (<Отбор>)

Optionen:

<Отбор>(Optional)

Typ: Struktur. Die Struktur, die die Auswahl definiert. Strukturwerte können sein: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Wenn die Auswahl nicht festgelegt ist, werden alle geplanten Aufgaben abgerufen.

Wenn Sie nach Metadaten filtern, können Sie entweder das Metadatenobjekt des geplanten Jobs oder seinen Namen als Metadatenwert angeben.

Rückgabewert:

Typ: Array.

Beschreibung:

Ruft ein Array geplanter Aufgaben für die angegebene Auswahl ab. Der Empfang geplanter Aufgaben ist nur für den Administrator möglich.

Verfügbarkeit:

Für jede Regulierung des Regulierungszyklus
NewLine = ListRegulationTasks.Hinzufügen();
NewString.Metadata = Scheduled.Metadata.View();
NewLine.Name = Scheduled.Name;
NewString.Key = Scheduled.Key;
NewString.Schedule = Geplant.Schedule;
NewString.User = Regular.Benutzername;
NewString.Predefined = Scheduled.Predefined;
NewString.Usage = Regulatory.Usage;
NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Scheduled.LastTask;
Wenn LastJob undefiniert ist, dann
NewString.Running = LastTask.Start;
NewString.Status = LastJob.Status;
EndIf;
EndCycle;

Schaffung

Erstellt von der CreateRegularTask-Methode des geplanten Task-Managers:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Geplanter Task.Name = Name;
ScheduledTask.Key = Schlüssel;
ScheduledTask.Use = Verwenden;
ScheduledTask.UserName = Benutzerauswahl;
ScheduledTask.Number of RepetitionsWhen Crashing = Number of RetriesWhen Crashing;
ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident;
ScheduledTask.Schedule = Zeitplan;
ScheduledTask.Write();

TaskObject = ScheduledTasks.Create ScheduledTask("ExecuteExchange");

TaskObject.Name = Name;
JobObject.Use = true;

Das Job-Objekt hat ein "Parameters"-Feld, in dem die Methodenparameter eingestellt werden:

Geplanter Job

Parameter

Verwendungszweck:

Lesen und Schreiben.

Beschreibung:

Typ: Array. Ein Array von Parametern für geplante Aufgaben. Anzahl und Zusammensetzung der Parameter müssen den Parametern des Scheduled-Task-Verfahrens entsprechen.

Verfügbarkeit:

Server, Fat-Client, äußere Verbindung.

Notiz:

Die Lese- und Schreibberechtigung steht nur dem Administrator zur Verfügung.

Entfernung

Gelöscht durch die Delete()-Methode des Job-Objekts:

ScheduledTask.Delete();

Abrufen eines Job-Objekts

  • Liste über die Methode GetRegularTasks:
    Scheduled = ScheduledTasks.Get ScheduledTasks(Selection);
  • über die Methode FindByUniqueID des Jobmanagers:
    Task = ScheduledTasks.FindBy UniqueIdentifier (UID);

[Sie müssen sich registrieren, um den Link anzuzeigen]

Erstellen Sie eine geplante Aufgabe

Lassen Sie uns eine geplante Aufgabe "Verarbeitung durchführen" erstellen.

Deaktivieren Sie die Verwendung einer geplanten Aufgabe, damit sie nicht automatisch gestartet wird, wenn die Konfiguration aktualisiert wird.

Weisen Sie eine Prozedur zu, die ausgelöst wird, wenn eine geplante Aufgabe gestartet wird:Geplante Tasks-Modul Geplante TaskPerformingProcessing.

Das Verfahren selbst sieht so aus:

Prozedur ScheduledTaskPerformanceProcessing(Key) Export

Parameter geplanter Tasks.PerformProcessing with Parameters(Key);

EndProzedur

Wir erstellen ein Verzeichnis für Routineaufgaben

Unser geplanter Job kann viele Hintergrundprozesse erzeugen – einen für jede Verarbeitung. Jede Aufgabe in der 1C8-Plattform hat einen Schlüssel. Aber die geplante Jobmethode kennt den Hintergrundjobschlüssel nicht, also müssen Sie die Hintergrundjobparameter verwenden. Infolgedessen können wir die Hintergrundaufgabe in der Aufgabenkonsole sehen, aber wir können von dieser Konsole aus keine Hintergrundaufgabe manuell erstellen, weil Jobs mit manuellen Parametern werden nicht erstellt.

Verzeichnis "Parameter geplanter Aufgaben" :

Voraussetzungen :

· CodeBeforeLaunch- unbegrenzte Zeichenfolge - Code in 1C-Sprache, der vor dem Start ausgeführt werden muss.

· Verarbeitung von Konfiguration – Zeichenfolge (100) – ID der Verarbeitung von Konfiguration

· Bearbeitung aus dem Verzeichnis - Zeile (100) - Link zum Verzeichniselement "Externe Bearbeitung", falls in der Konfiguration vorhanden

· Durch die 1C-Anwendung ausführen - boolesch - wird erstellt gesonderte Bewerbung 1C und eine geplante Aufgabe wird darin gestartet. Erstellt für 8.1, wo nicht alle Anwendungsmethoden auf dem Server verfügbar sind, auf dem der geplante Job ausgeführt wird.

· LaunchCode- - unbegrenzte Zeichenfolge - Code in 1C-Sprache, der ausgeführt wird, wenn die geplante Aufgabe gestartet wird.

Erstellen Sie eine Elementform :

Durch Klicken auf den Button „Reg. task" erstellt programmgesteuert eine geplante Aufgabe mit einem Schlüsselcode:

Prozedur MainActionsFormsCreateReglTask(Button)

Variablenreferenz;

Schlüssel = ShortLP(Code);

Task = ScheduledTasks.Create ScheduledTask("PerformingProcessing");

Aufgabe.Name = Schlüssel;

Job.Schlüssel = Schlüssel;

Parameter = Neues Array();

Optionen.Hinzufügen(Schlüssel);

Aufgabe.Parameter = Parameter;

Task.Write();

EndProzedur

Starten eines geplanten Jobs

Jede von uns erstellte geplante Aufgabe hat einen Schlüssel:

Dieser Schlüssel entspricht dem Code des Verzeichnisses "Parameter geplanter Aufgaben", es wird beim Start der Aufgabe gesucht. Wenn das Wörterbuchelement nicht gefunden wird, wird die Aufgabe nicht ausgeführt.

Außerdem, wenn der Code angegeben istCodeBeforeLaunch dann wird dieser Code ausgeführt. Außerdem, wenn die Variable Erfüllen zu false ausgewertet wird, wird die Aufgabe nicht ausgeführt. In der Analyse verfügbare Variable Optionen, wo ein Link zum gefundenen Element des Verzeichnisses "Parameter der geplanten Aufgaben" gespeichert ist.

Abhängig von den ausgewählten Werten der Details wird entweder der Code in der 1C-Sprache gestartet oder die Verarbeitung beginnt mit der Konfiguration oder die Verarbeitung beginnt mit dem Standard-Nachschlagewerk "Externe Verarbeitung".

Für 1C81 wird die Ausführung in einer neuen Anwendung bereitgestellt, sodass Sie Code verwenden können, der nur auf dem Client verfügbar ist, einschließlich der Verwendung externer Verarbeitung. Aktivieren Sie dazu das Kontrollkästchen "Anwendung 1C durchlaufen". Andernfalls wird die geplante Aufgabe auf dem Server ausgeführt.

Ich empfehle, den Benutzer im Feld "Benutzer" der neu erstellten geplanten Aufgabe so einzustellen, dass die Aufgabe unter bestimmten Rechten ausgeführt wird. Ich empfehle, diesem Benutzer volle Rechte zu geben. Ich habe Benutzer "Roboter».

Der Zeitplan der geplanten Aufgabe wird durch den Hyperlink „Zeitplan“ aus dem Formular der geplanten Aufgabe erstellt. Sie können die Verarbeitung "Konsole der geplanten Aufgaben" verwenden.

Regelmäßige Bereinigung von Registern (z. B. das Informationsregister "Objektversionen" in der SCP-Konfiguration), Durchführung von Berechnungen nach Zeitplan, Veröffentlichung von Dokumenten zu einem bestimmten Zeitpunkt - das ist weit davon entfernt volle Liste Aktionen, die mit Routineaufgaben 1C umgesetzt werden können.

Erstellen Sie eine Aufgabe

Wir beabsichtigen nicht, den Code des ausführbaren Moduls zu beschreiben, wir werden es zeigen allgemeine Grundsätze Funktionsweise und Erstellung einer Verfahrensaufgabe.

Die Regelungsaufgabe ist unabdingbar:

  1. Wenn in der als eine der Bedingungen festgelegten Aufgabe die Notwendigkeit besteht, einen bestimmten Algorithmus regelmäßig auszuführen;
  2. Wenn der Code unabhängig von den Aktionen von Betreibern und Benutzern der Datenbank ausgeführt werden muss;
  3. Wenn der Start der ausführbaren Prozedur nicht von externen Ereignissen abhängt, die bei Objekten auftreten Informationsbasis.

Um es zu erstellen, müssen Sie im Modus "Konfigurator" zur Infobase gehen. Als nächstes finden wir den Zweig „Regelmäßige Aufgaben“ im Konfigurationsbaum, sie befinden sich auf der Registerkarte „Allgemein“ und klicken auf die Schaltfläche „Hinzufügen“ (Abb. 1).

Schauen wir uns das Eigenschaftsfenster genauer an (Abb. 2):
Abb.2

  1. Name, Synonym und Kommentar - die Regeln und Prinzipien zum Ausfüllen dieser Felder sind für alle Konfigurationsobjekte ähnlich und müssen nicht erneut beschrieben werden;
  2. Methodenname ist eine Prozedur eines allgemeinen Moduls, die den gewünschten Algorithmus möglichst genau beschreibt (Betätigung der Auswahltaste öffnet die verfügbaren Prozeduren, deren Darstellung aus dem Namen des allgemeinen Moduls und dem Namen der Prozedur in verschiedenen Spalten besteht Die Tabelle);
  3. Schlüssel - bestimmt nicht so sehr die Eindeutigkeit der prozeduralen Aufgabe, sondern die Eindeutigkeit Hintergrundprozess, das auf der Grundlage eines Jobs gestartet wird, hat eine Längenbegrenzung;
  4. Zeitplan - Wir werden der Beschreibung dieses Elements einen separaten Absatz unseres Artikels widmen;
  5. Verwendung - das Aktivieren dieses Kontrollkästchens bestimmt die Aktivität der Aufgabe, WAHR bedeutet, dass die Aufgabe gemäß dem Zeitplan gestartet und ausgeführt wird;
  6. Vordefiniert – wenn das Element dieses Kontrollkästchen hat, können diese Aufgaben nicht gelöscht werden, sie werden automatisch erstellt, wenn die Konfiguration in der Datenbank gespeichert wird;
  7. Anzahl der Wiederholungen - wenn während der Ausführung eine Ausnahme auftritt, wird sie neu gestartet, damit keine Endlosschleife auftritt, das Programm begrenzt die Anzahl der Neustarts;
  8. Wiederholungsintervall – Zeit in Sekunden zwischen Neustarts abgestürzter Jobs.

Schauen wir uns den Zeitplan genauer an.

Zeitplan der geplanten Aufgabe

Abb. 3

Zunächst sollten Sie auf den unteren Rand des Fensters achten, dort befindet sich die genaue Information mit einer Aufschlüsselung, wie oft und zu welcher Zeit die Aufgabe ausgeführt wird.

Registerkarte Allgemein:

  • Startdatum der Aufgabe;
  • Enddatum der Verarbeitung;
  • Häufigkeit der Wiederholung der Aufgabe.

Wenn auf dieser Registerkarte keine Daten angegeben sind, wird für die Aufgabe kein Zeitlimit festgelegt.

Lesezeichen „Täglich“ (Abb. 4)
Abb.4

Es enthält neben Eingabefeldern für die Start- und Endzeit der Aufgabe und die Häufigkeit ihres Starts im Laufe des Tages tabellarischer Teil zum detaillierte Einstellungen Ausführungshäufigkeit.

Die Registerkarten „Täglich“ und „Wöchentlich“ enthalten Informationen für die jeweiligen Zeiträume.

Funktionsmerkmale

In der Client-Server-Version des Betriebs wird die Ausführung geplanter Tasks von den Server-Tools bestimmt. Von der Verwaltungskonsole aus können Sie die Möglichkeit zum Ausführen von Jobs für eine bestimmte Datenbank aktivieren und deaktivieren.

Bei der Dateiversion der Arbeit ist die Situation viel komplizierter. Vor einer bestimmten Version der Plattform wurde die Ausführung von Hintergrund- und geplanten Prozeduren nur durchgeführt, wenn die Methode ExecuteJobProcessing() beim Systemstart unter einem bestimmten Benutzer aktiviert wurde. In diesem Fall wurden die Algorithmen periodisch gestartet, solange der Benutzer, der die Methode initiiert hatte, im Programm war.

Derzeit wird die Arbeit von Hintergrundjobs in der Dateiversion der Arbeit gleichmäßig auf die in der Datenbank autorisierten Benutzer verteilt, wenn das Programm mit gestartet wurde zusätzlicher Parameter AllowExecuteSheduledJobs, ist es dieser Prozess, der für die routinemäßige Wartung verantwortlich ist.

Sie können die Ausführung von Hintergrund- und Wartungsarbeiten in einer im Dateimodus betriebenen Datenbank vollständig deaktivieren, indem Sie die Datei DoNotCopy.txt im Ordner mit der Datenbank löschen oder umbenennen. Das Vorhandensein dieser Datei teilt der Plattform mit, dass die Arbeit im Original und nicht in einer Kopie der Datenbank erfolgt.

Darüber hinaus wurde es bei Standard-1C-Lieferungen möglich, geplante Arbeiten direkt aus dem Programm heraus zu verwalten, ohne zum "Konfigurator" zu gehen. In der „ZUP“-Konfiguration, Version 3.1.3.223, können Sie das Kontrollformular aus dem Menü Administration->Wartung->Geplante Operationen->Geplante und Hintergrundaufgaben öffnen (Abb. 5)
Abb.5

Das geöffnete Formular hat eine intuitive Benutzeroberfläche und ermöglicht Ihnen Folgendes:


Sie können die Aufgabenausführung auch direkt aus dem Formular heraus starten.

Die Frage, die wir im Titel des Artikels gestellt haben, ist für viele Systemadministratoren relevant, die mit diesem Produkt arbeiten. Wir versuchen so weit wie möglich über die Parameter zu sprechen, die die Leistung von 1C beeinflussen, und populäre Mythen zu entlarven. Heute möchten wir Sie am Beispiel eines aktuellen Falls über einen weiteren Aspekt informieren, der die Leistung ernsthaft beeinträchtigen kann – geplante Aufgaben.

Beginnen wir mit einem echten Fall. Vor nicht allzu langer Zeit kontaktierte uns einer unserer Kunden mit einer Beschwerde über die "Bremsen" 1C von einem seiner Mitarbeiter. Die Symptome drückten sich darin aus, dass die Konfiguration von Trade Management 10 nach einer gewissen Zeit stark langsamer wurde, oder mit anderen Worten, für eine Weile hängen blieb.

Bei einer genaueren Analyse der Situation stellte sich heraus, dass dies nur für einen Mitarbeiter und an jedem Arbeitsplatz für lange Zeit passiert, aber wenn früher die "Bremsen" etwa eine Sekunde gedauert haben, jetzt nach dem Update, Sie können bis zu 15-20 Sekunden andauern, was die Arbeit äußerst unangenehm macht.

Im Prinzip reichen bereits die ersten Daten, um erste Schlüsse zu ziehen. Nehmen wir sie noch einmal:

  • "Bremsen" treten ständig mit einer bestimmten Häufigkeit auf
  • "Verlangsamt" nur für einen Benutzer
  • „Bremst“ an jedem Arbeitsplatz

Um unsere Vermutungen zu bestätigen, schauen wir uns an Buchhaltungseinstellungen:

Tatsächlich wird der "Problem"-Benutzer als ein Benutzer aufgeführt, der Routineaufgaben durchführt. Wie sich herausstellte, funktionierte die RIB-Auto-Exchange-Aufgabe einmal im Namen dieses Benutzers. Es bleibt abzuwarten, was genau die Ursache für das episodische „Bremsen“ war. Auch das geht ganz einfach:

Und hier ist der „Held des Tages“ – die Aufgabe, den Volltextsuchindex zu aktualisieren, der alle 2,5 Minuten einmal gestartet wurde. In diesem Fall wurde das Problem vollständig gelöst, indem die Ausführung geplanter Aufgaben unter diesem Benutzer deaktiviert wurde. Dies ist jedoch nicht immer möglich oder ratsam. Daher werden wir im Folgenden betrachten, wie geplante Aufgaben verwaltet werden können und wie sichergestellt werden kann, dass sie keine haben negativen Einfluss auf die Leistung.

Allgemeine Anwendung

In Konfigurationen basierend regelmäßige Anwendung Es gibt kein einzelnes Toolkit für die Verwaltung von Routineaufgaben. Dies liegt vor allem daran, dass zum Zeitpunkt ihrer ursprünglichen Entwicklung das Konzept der prozeduralen Aufgaben selbst eher schlecht entwickelt war.

Viele geplante Tasks werden durch die Konfiguration von ihnen zugeordneten Subsystemen verwaltet. Beispielsweise sollten Einstellungen für Routineaufgaben im Zusammenhang mit dem Datenaustausch in den Austauscheinstellungen im Zusammenhang mit dem Unified State Automated Information System in den Einstellungen für den Alkoholhandel usw. gesucht werden.

Auf den ersten Blick ist alles ganz logisch, aber das Fehlen eines einzigen Tools macht es schwierig, die konfigurierten geplanten Aufgaben und die Optimalität ihrer Einstellungen zu kontrollieren. Nun, wenn es eine oder zwei Aufgaben gibt und wenn es mehr davon gibt oder, wie in unserem Fall, der Verdacht auf eine der geplanten Aufgaben besteht, Sie aber keine Ahnung haben, wer und was in dieser Datenbank eingerichtet ist.

In diesem Fall sollten Sie verwenden externe Verarbeitung Konsolenquests (JobsConsole), die im Satz der Standardverarbeitung auf der ITS-Platte enthalten ist. Processing bietet eine einzige Schnittstelle für alle Jobs und ermöglicht Ihnen, diese zentral zu konfigurieren sowie aktuell laufende Jobs zu steuern.

Diese Liste sollten sorgfältig studiert werden, alle unnötigen Aufgaben sollten ausgeschaltet werden und die notwendigen sollten in Übereinstimmung mit dringenden Bedürfnissen und gesundem Menschenverstand geplant werden. In unserem Fall ist es beispielsweise nicht erforderlich, EGAIS-Antworten einmal alle 30 Sekunden zu verarbeiten (diese Einstellung wird zu Testzwecken vorgenommen), und im Betriebsmodus reicht es aus, dies beispielsweise einmal alle halbe Stunde zu tun.

Verwaltete Anwendung

In Konfigurationen, die auf einer verwalteten Anwendung basieren, spielen geplante Aufgaben eine wichtigere Rolle, sie können verwendet werden, um verschiedene Aufgaben auszuführen, um die Infobase zu warten und auf dem neuesten Stand zu halten, aber gleichzeitig sind es geplante Aufgaben, die am häufigsten " Bremsen“.

Zur Bewältigung von Routineaufgaben gibt es im Menü einen Hoteleintrag Verwaltung - Support und Wartung.

Es ist sofort festzustellen, dass die Aufgaben erheblich zugenommen haben (z. B. haben wir dieselbe Konfiguration genommen - Einzelhandel) und ihre kompetente Konfiguration kann die Leistung der Infobase erheblich verbessern. Die Standardeinstellungen werden von 1C basierend auf den Bedürfnissen einer durchschnittlichen Kugelfirma im Vakuum vorgenommen und sind nicht einmal annähernd optimal.

Zunächst deaktivieren wir, was eindeutig unnötig ist, womit Sie nicht arbeiten. Dann optimieren wir den Zeitplan selten genutzter Funktionen, z. B. kann die Aktualisierung des Bankenklassifikators im Einzelhandel sowie die Überprüfung der Gegenparteien einmal pro Woche außerhalb der Arbeitszeit oder am Ende (Beginn) des Arbeitstages erfolgen.

Besonderes Augenmerk sollte auf alles, was damit zusammenhängt, gelegt werden Suchindex. Volltextsuche sicherlich eine bequeme Sache, aber die Arbeit mit seinem Index ist eine sehr, sehr ressourcenintensive Aufgabe. Daher sollten Sie nicht zu Extremen gehen und es aufgeben, aber Sie sollten seine Parameter ernsthaft überprüfen und anpassen.

Lass uns beginnen mit Textextraktion, dieser Vorgang ermöglicht es Ihnen, den Inhalt der angehängten Dateien zu durchsuchen. Wenn Sie sie also nicht verwenden, suchen Sie nicht danach, oder Sie haben dort nur Bilder diese Operation kann auf jeden Fall deaktiviert werden, um es einmal alle 85 Sekunden auszuführen - eine offensichtliche Aufzählung.

Aktualisierung des PPA-Index- einer der ressourcenintensivsten Vorgänge, der standardmäßig einmal pro Minute ausgeführt wird.

Lassen Sie uns nun darüber nachdenken, wie oft Informationen in der Datenbank hinzugefügt oder aktualisiert werden, nach der Sie am häufigsten suchen. Offensichtlich nicht jede Minute, daher reicht es aus, den Index viel seltener zu aktualisieren: einmal pro Stunde, einmal am Tag oder sogar einmal pro Woche.

Gleiches gilt für Fusion des PPD-Index Wenn Sie den Index einmal am Tag aktualisieren, sollten Sie die Zusammenführung so einstellen, dass sie einmal pro Woche ausgeführt wird, und dabei die am wenigsten störende Zeit als Beginn des Jobs wählen.

Diese einfachen Operationen ermöglichen es Ihnen, ohne große Beeinträchtigung der Funktionalität der Konfiguration, den Arbeitskomfort zu erhöhen Neues level indem sie sich weigern, häufig eher ressourcenintensive Operationen durchzuführen. Übertreiben Sie es nicht, sondern beurteilen Sie richtig, wie sehr Sie bestimmte Funktionen benötigen und wie oft Sie die damit verbundenen Aufgaben erledigen sollten.

  • Stichworte:

Bitte aktivieren Sie JavaScript, um die anzuzeigen

Benutzer beschweren sich häufig darüber, dass „1C 8.3 langsamer wird“: Dokumentformulare werden langsam geöffnet, Dokumente werden lange veröffentlicht, das Programm wird gestartet, Berichte werden lange generiert und so weiter.

Darüber hinaus können solche "Störungen" in verschiedenen Programmen auftreten:

Die Gründe können unterschiedlich sein. Es ist nicht restauriert und hält Papiere, schwacher Rechner oder der Server, der 1C-Server ist falsch konfiguriert.

In diesem Artikel möchte ich einen der einfachsten und häufigsten Gründe betrachten langsame Arbeit Programme - . Diese Anweisung wird für Benutzer von Dateidatenbanken für 1-2 Benutzer relevant sein, bei denen es keine Konkurrenz um Ressourcen gibt.

Wenn Sie an einer ernsthafteren Optimierung der Client-Server-Optionen für das System interessiert sind, besuchen Sie den Abschnitt der Website.

Wo sind die geplanten Aufgaben in 1C 8.3

Bevor ich Zeit hatte, das Programm zu laden, wurden viele Hintergrundaufgaben in 1C erledigt. Sie können sie anzeigen, indem Sie zum Menü "Verwaltung" und dann zu "Support und Wartung" gehen:

Erhalten Sie 267 kostenlose 1C-Videolektionen:

So sieht das Fenster mit erledigten Aufgaben aus:

Und hier ist eine vollständige Liste aller geplanten Aufgaben, die ausgeführt werden:

Unter diesen Aufgaben sind sichtbar wie "", Laden verschiedener Klassifikatoren, Überprüfen der Relevanz der Programmversion und so weiter. Ich brauche zum Beispiel fast alle diese Aufgaben nicht. Ich führe keine Währungsaufzeichnungen, ich kontrolliere die Versionen selbst, ich lade Klassifikatoren nach Bedarf hoch.

Dementsprechend ist es in meinem (und in den meisten Fällen in Ihrem) Interesse, unnötige Tasks zu deaktivieren.

Deaktivieren geplanter und Hintergrundaufgaben in 1C 8.3