Maison / Travailler sur Internet / 1s tâches de routine du serveur. Tâche réglementaire universelle. Travaux d'arrière-plan en mode fichier

1s tâches de routine du serveur. Tâche réglementaire universelle. Travaux d'arrière-plan en mode fichier

1 moteur de travail
2 tâches d'arrière-plan
3 Tâches planifiées
4 Particularités de l'exécution de tâches en arrière-plan dans les versions fichier et client-serveur
5 Création de métadonnées de tâche planifiée
6 Console de tâches
7 Travailler avec des tâches planifiées
7.1 Objets de tâche
7.2 Obtenir une liste de tâches
7.3 Création
7.4 Suppression
7.5 Obtenir un objet de tâche

Mécanisme de travail

Le mécanisme de travail est conçu pour exécuter n'importe quelle application ou fonctionnalité selon un calendrier ou de manière asynchrone.

Le mécanisme de travail effectue les tâches suivantes :

  • Capacité à déterminer les procédures de routine au stade de la configuration du système ;
  • Exécution des actions spécifiées selon le calendrier ;
  • L'exécution d'un appel à une procédure ou une fonction donnée est asynchrone, c'est-à-dire sans attendre son achèvement ;
  • Suivre la progression d'un travail spécifique et obtenir son état d'achèvement (une valeur indiquant le succès ou l'échec de son exécution) ;
  • Obtenir une liste des tâches en cours ;
  • Capacité d'attendre la réalisation d'une ou plusieurs tâches;
  • Gestion des jobs (possibilité d'annulation, blocage d'exécution, etc.).

Le moteur de tâche comprend les composants suivants :

  • Métadonnées des tâches planifiées ;
  • Missions programmées ;
  • Travaux d'arrière-plan ;
  • Planificateur de tâches.

Travaux d'arrière-plan - conçus pour effectuer des tâches d'application de manière asynchrone. Les travaux d'arrière-plan sont implémentés à l'aide du langage intégré.

Tâches planifiées - conçues pour effectuer des tâches d'application selon un calendrier. Les tâches planifiées sont stockées dans l'infobase et sont créées en fonction des métadonnées définies dans la configuration. Les métadonnées de la tâche planifiée contiennent des informations telles que le nom, la méthode, l'utilisation, etc.

Une tâche planifiée a une planification qui détermine à quel moment la méthode associée à la tâche planifiée doit être exécutée. Le calendrier, en règle générale, est défini dans l'infobase, mais peut également être défini au stade de la configuration (par exemple, pour des tâches planifiées prédéfinies).

Le planificateur de tâches est utilisé pour planifier l'exécution des tâches planifiées. Pour chaque tâche planifiée, le planificateur vérifie périodiquement si la date et l'heure actuelles correspondent à la planification de la tâche planifiée. S'il correspond, le planificateur planifie l'exécution de ce travail. Pour ce faire, en fonction de cette tâche planifiée, le planificateur crée une tâche en arrière-plan qui effectue le traitement proprement dit.

Tâches d'arrière-plan

Les travaux d'arrière-plan sont utiles pour effectuer des calculs complexes, lorsque le résultat du calcul peut être obtenu après une longue période. Le moteur de travail a les moyens d'effectuer de tels calculs de manière asynchrone.

Une tâche en arrière-plan a une méthode associée qui est appelée lors de l'exécution de la tâche en arrière-plan. Toute procédure ou fonction non globale peut agir comme une méthode de travail en arrière-plan. module commun, qui peut être appelée sur le serveur. Les paramètres de travail en arrière-plan peuvent être toutes les valeurs autorisées à être transmises au serveur. Les paramètres d'un travail d'arrière-plan doivent correspondre exactement aux paramètres de la procédure ou de la fonction qu'il appelle. Si la méthode du travail d'arrière-plan est une fonction, sa valeur de retour est ignorée.

Un travail d'arrière-plan peut avoir une clé - n'importe quelle valeur d'application. La clé introduit une restriction sur le lancement des tâches d'arrière-plan - une seule tâche d'arrière-plan peut être exécutée par unité de temps avec une valeur de clé spécifique et un nom spécifié de la méthode de tâche d'arrière-plan (le nom de la méthode se compose du nom du module et du nom du procédure ou fonction). La clé vous permet de regrouper les travaux d'arrière-plan qui ont les mêmes méthodes en fonction d'un certain attribut d'application afin qu'un seul travail d'arrière-plan soit exécuté dans un groupe.

Les tâches d'arrière-plan sont créées et gérées par programmation à partir de n'importe quelle connexion. Tout utilisateur est autorisé à créer une tâche en arrière-plan. En même temps, il est exécuté au nom de l'utilisateur qui l'a créé. Un utilisateur disposant de droits d'administrateur, ou l'utilisateur qui a créé ces tâches en arrière-plan, est autorisé à recevoir des tâches, ainsi qu'à attendre leur achèvement, à partir de n'importe quelle connexion.

Le travail d'arrière-plan est purement un objet de session, mais n'appartient à aucune session utilisateur. Pour chaque tâche, une session système spéciale est créée, s'exécutant au nom de l'utilisateur qui a effectué l'appel. Les travaux d'arrière-plan n'ont pas d'état persistant.

Une tâche d'arrière-plan peut générer d'autres tâches d'arrière-plan. Dans la version client-serveur, cela vous permet de paralléliser les calculs complexes sur les processus de travail du cluster, ce qui peut considérablement accélérer le processus de calcul dans son ensemble. La parallélisation est implémentée en créant plusieurs tâches d'arrière-plan enfants, en attendant que chacune d'elles se termine dans la tâche d'arrière-plan principale.

Les travaux d'arrière-plan réussis ou échoués sont stockés pendant 24 heures, puis supprimés. Si le nombre de tâches d'arrière-plan en cours d'exécution dépasse 1 000, les tâches d'arrière-plan les plus anciennes sont également supprimées.

Devoirs planifiés

Les tâches planifiées sont utilisées lorsque vous devez effectuer certaines actions périodiques ou ponctuelles conformément à la planification.

Les tâches planifiées sont stockées dans l'infobase et sont créées en fonction des métadonnées de la tâche planifiée définies dans la configuration. Les métadonnées définissent les paramètres d'une tâche planifiée tels que : méthode appelée, nom, clé, capacité d'utilisation, signe de prédétermination, etc. être effectuée tâche routinière, et etc.

La création et la gestion des tâches planifiées sont effectuées par programmation à partir de n'importe quelle connexion et ne sont autorisées qu'aux utilisateurs disposant de droits d'administration.

Noter. Lorsque vous travaillez dans la version fichier, il est possible de créer et de modifier des tâches planifiées sans démarrer le planificateur de tâches.

Une tâche planifiée est associée à une méthode appelée lors de l'exécution de la tâche planifiée. Une méthode de tâche planifiée peut être n'importe quelle procédure ou fonction d'un module partagé non global qui peut être appelée sur le serveur. Les paramètres de tâche planifiée peuvent être toutes les valeurs autorisées à être transmises au serveur. Les paramètres d'un travail planifié doivent correspondre exactement aux paramètres de la procédure ou de la fonction qu'il appelle. Si la méthode de tâche planifiée est une fonction, sa valeur de retour est ignorée.

Une tâche planifiée peut avoir une clé - n'importe quelle valeur appliquée. La clé introduit une restriction sur le lancement des tâches planifiées, puisque par unité de temps, parmi les tâches planifiées associées au même objet de métadonnées, une seule tâche planifiée avec une valeur de clé spécifique peut être exécutée. La clé vous permet de regrouper les tâches planifiées associées au même objet de métadonnées en fonction d'un certain attribut d'application afin qu'une seule tâche planifiée soit exécutée dans un groupe.

Lors de la configuration, vous pouvez définir des tâches planifiées prédéfinies. Les tâches planifiées prédéfinies ne sont pas différentes des tâches planifiées régulières, sauf qu'elles ne peuvent pas être explicitement créées ou supprimées. Si les métadonnées de la tâche planifiée sont définies sur signe d'une tâche planifiée prédéfinie, lors de la mise à jour de la configuration, une tâche planifiée prédéfinie sera automatiquement créée dans l'infobase. Si la case prédéfinie est décochée, la tâche planifiée prédéfinie sera automatiquement supprimée de l'infobase lors de la mise à jour de la configuration. Les valeurs initiales des propriétés d'une tâche planifiée prédéfinie (par exemple, planification) sont définies dans les métadonnées. À l'avenir, lorsque l'application sera en cours d'exécution, ils pourront être modifiés. Les tâches planifiées prédéfinies n'ont pas de paramètres.

La planification de la tâche planifiée détermine à quel moment la tâche planifiée doit être lancée. Le planning permet de définir : la date et l'heure de début et de fin de la tâche, la période d'exécution, les jours de la semaine et des mois où la tâche programmée doit être exécutée, etc. (voir la description du en langue).

Exemples d'horaires de tâches planifiées :

Chaque heure, juste un jour

Retry PeriodDays = 0, Retry PeriodDuringDay = 3600

Tous les jours une fois par jour

Retry PeriodDays = 1, Retry PeriodDuringDay = 0

Un jour, une fois

Jours de période de nouvelle tentative = 0

Tous les deux jours une fois par jour

Jours de période de nouvelle tentative = 2

Toutes les heures de 01h00 à 07h00 tous les jours

Jours de période de nouvelle tentative = 1
Période de nouvelle tentative Pendant la journée = 3600
Heure de début = 01.00
Heure de fin = 07h00

Tous les samedis et dimanches à 09h00

Jours de période de nouvelle tentative = 1
Jours de la semaine = 6, 7
Heure de début = 09h00

Tous les jours une semaine, pass semaine

Jours de période de nouvelle tentative = 1
PériodeSemaines = 2

À 01h00 une fois

Heure de début = 01.00

Dernier jour de chaque mois à 9h00.

Jours de période de nouvelle tentative = 1
JourDansMois = -1
Heure de début = 09h00

Le cinquième de chaque mois à 9h00

Jours de période de nouvelle tentative = 1
JourDansMois = 5
Heure de début = 09h00

Le deuxième mercredi de chaque mois à 9h00

Jours de période de nouvelle tentative = 1
Jour de la semaine dans le mois = 2
Jours de la semaine = 3
Heure de début = 09h00

Vous pouvez vérifier si une tâche est en cours d'exécution à une date donnée (méthode RequiredExecution de l'objet ScheduledTasks Schedule). Les tâches planifiées sont toujours exécutées au nom d'un utilisateur spécifique. Si l'utilisateur du travail planifié n'est pas spécifié, l'exécution se produit au nom de l'utilisateur par défaut avec des droits d'administration.

Les tâches planifiées sont exécutées à l'aide de tâches en arrière-plan. Lorsque le planificateur détermine qu'une tâche planifiée doit être lancée, une tâche d'arrière-plan est automatiquement créée sur la base de cette tâche planifiée, qui effectue tous les traitements ultérieurs. Si cette tâche planifiée est déjà en cours d'exécution, elle ne sera pas réexécutée, quelle que soit sa planification.

Les tâches planifiées ont la possibilité de redémarrer. Cela est particulièrement vrai lorsque l'exécution de la méthode de tâche planifiée doit être garantie. Une tâche planifiée est redémarrée lorsqu'elle s'est terminée de manière anormale, ou lorsque le processus de travail (dans la version client/serveur) ou le processus client (dans la version fichier) sur lequel la tâche planifiée s'exécutait s'est terminé de manière anormale. Dans une tâche planifiée, vous pouvez spécifier combien de fois elle doit être redémarrée, ainsi que l'intervalle entre les redémarrages. Lors de la mise en œuvre de la méthode d'un travail planifié redémarrable, il convient de tenir compte du fait que lorsqu'il est redémarré, son exécution commencera depuis le début et ne continuera pas à partir du moment où il s'est écrasé.

Il est important de rappeler que heure de fin ne terminera pas nécessairement le travail d'arrière-plan à l'heure spécifiée. Quelques déclarations :
* Une tâche d'arrière-plan peut ignorer son annulation automatique si elle n'est pas bloquée mais continue de s'exécuter pour la raison
que toutes les opérations de la plateforme ne peuvent pas être annulées. Si effectué code cyclique langage intégré, puis annulez le travail
peut autrement pas. Tout dépend de ce que fait le travail.
* Heure de fin - la limite dans laquelle une tâche peut commencer et ne pas se terminer ?
* Forcer la résiliation travail annule les modifications apportées au moment où la transaction a commencé ?

Particularités de l'exécution de tâches en arrière-plan dans les versions fichier et client-serveur

Les mécanismes d'exécution des tâches en arrière-plan dans les versions fichier et client-serveur sont différents.

  • Dans la version fichier, vous devez créer un processus client dédié qui effectuera des tâches en arrière-plan. Pour ce faire, la fonction contextuelle globale ExecuteJobProcessing doit être appelée périodiquement dans le processus client. Un seul processus client par infobase doit traiter les travaux d'arrière-plan (et donc appeler cette fonction). Si aucun processus client n'a été créé pour traiter les tâches en arrière-plan, lors de l'accès par programmation au moteur de tâches, l'erreur "Le gestionnaire de tâches n'est pas actif" sera générée. Il n'est pas recommandé d'utiliser le processus client qui traite les travaux d'arrière-plan pour d'autres fonctions.

Une fois que le processus client qui gère les travaux d'arrière-plan est en cours d'exécution, d'autres processus clients ont la possibilité de accès au programme au mécanisme de tâche d'arrière-plan, c'est-à-dire peut exécuter et gérer des tâches en arrière-plan.

Dans la version client-serveur, le planificateur de tâches est utilisé pour exécuter des jobs en arrière-plan, qui est physiquement situé dans le gestionnaire de cluster. Le planificateur de toutes les tâches d'arrière-plan mises en file d'attente obtient le processus de travail le moins chargé et l'utilise pour exécuter la tâche d'arrière-plan correspondante. Le processus de travail exécute le travail et informe le planificateur des résultats de l'exécution.

Dans la version client-serveur, il est possible de bloquer l'exécution des tâches planifiées. Le blocage de l'exécution des tâches planifiées se produit dans les cas suivants :

  • Un blocage explicite des tâches planifiées a été défini sur l'infobase. Le verrou peut être défini via la console du cluster ;
  • Un blocage de connexion a été défini sur l'infobase. Le verrou peut être défini via la console du cluster ;
  • La méthode SetExclusiveMode() a été appelée à partir du langage intégré avec le paramètre True ;
  • Dans certains autres cas (par exemple, lors de la mise à jour de la configuration de la base de données).

Création de métadonnées de tâche planifiée

Avant de créer par programmation une tâche planifiée dans l'infobase, vous devez créer un objet de métadonnées pour celle-ci.

Pour créer un objet de métadonnées de tâche planifiée dans l'arborescence de configuration de la branche Général de la branche Tâches planifiées, exécutez la commande Ajouter et renseignez les propriétés suivantes de la tâche planifiée dans la palette des propriétés :

Nom de la méthode - Spécifiez le nom de la méthode de tâche planifiée.

Clé - spécifiez une valeur de chaîne arbitraire qui sera utilisée comme clé de la tâche planifiée.

Planification - spécifie la planification de la tâche planifiée. Pour générer un horaire, cliquez sur le lien "Ouvrir" et définissez les valeurs requises dans le formulaire d'horaire qui s'ouvre.

L'onglet Général spécifie la date de début et de fin de la tâche et le mode de répétition.

L'onglet "Quotidien" précise le planning journalier de la tâche.

Précisez l'horaire :

  • heure de début et heure de fin de la tâche ;
  • l'heure de fin de la tâche, après laquelle elle sera exécutée avec force ;
  • période de répétition des tâches ;
  • la durée de la pause entre les répétitions ;
  • durée d'exécution.

Une combinaison arbitraire de conditions est autorisée.

La planification hebdomadaire de la tâche est spécifiée dans l'onglet Hebdomadaire.

Cochez les cases des jours de la semaine pendant lesquels la tâche sera exécutée. Si vous souhaitez répéter le travail, spécifiez l'intervalle de relance en semaines. Par exemple, la tâche s'exécute en 2 semaines, la valeur de répétition est 2.

Sur l'onglet "Mensuel" le planning mensuel de la tâche est indiqué.

Cochez les cases des mois au cours desquels la tâche sera exécutée. Si nécessaire, vous pouvez spécifier un jour précis (mois ou semaine) d'exécution à partir du début du mois/de la semaine ou de la fin.

Utilisation - si elle est définie, la tâche sera exécutée selon le calendrier.

Prédéfini - s'il est défini, le travail est un travail prédéfini.

Retry count on crash - Spécifie le nombre de tentatives en cas de crash.

Intervalle de relance en cas de plantage - Spécifie l'intervalle de relance en cas de plantage. Exemples

Création d'un job en arrière-plan "Mise à jour de l'index de recherche plein texte" :

BackgroundJobs.Run("UpdatingFullTextSearchIndex");

Création d'une tâche planifiée "Restauration des séquences" :

Planification = Nouvelle tâche de régulation de planification ;
Schedule.RepeatPeriodDays = 1 ;
Schedule.RepeatPeriodDuringDay = 0 ;

Tâche = ScheduledTasks.Create ScheduledTask("RestoringSequences");
Task.Schedule = Planifier ;
Tâche.Write();

Console de tâches

Traitement avec ITS, gère les tâches planifiées : Task Console.epf

Travailler avec des tâches planifiées

Objets de travail

Les objets de travail ne sont pas référencés, mais sont stockés dans la base de données dans un stockage spécial.

Si l'indicateur "Prédéfini" est activé dans les métadonnées, un tel objet est créé automatiquement au démarrage de 1C:Enterprise et existe toujours dans exactement une instance. Un tel objet ne peut pas être supprimé.

Si l'indicateur "Prédéfini" n'est pas défini, les objets d'une telle tâche sont créés et supprimés par programme, en spécifiant le calendrier et les paramètres.

Obtenir une liste de tâches

La liste des tâches peut être obtenue par la méthode GetRegularAssignments gestionnaire de poste mondial Tâches planifiées

Gestionnaire de tâches planifiées

GetScheduledJobs (GetScheduledJobs)

Syntaxe:

Obtenir des tâches régulières(<Отбор>)

Option :

<Отбор>(optionnel)

Genre : Ouvrage. La structure qui définit la sélection. Les valeurs de structure peuvent être : UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Si la sélection n'est pas définie, toutes les tâches planifiées sont obtenues.

Si vous filtrez par métadonnées, vous pouvez spécifier soit l'objet de métadonnées de la tâche planifiée, soit son nom comme valeur de métadonnées.

Valeur de retour :

Type : tableau.

La description:

Obtient un tableau de tâches planifiées pour la sélection spécifiée. La réception de tâches planifiées n'est possible que pour l'administrateur.

Disponibilité:

Pour chaque réglementation du cycle réglementaire
NouvelleLigne = ListRegulationTasks.Add();
NewString.Metadata = Scheduled.Metadata.View();
NewLine.Name = Scheduled.Name ;
NewString.Key = Scheduled.Key ;
NewString.Schedule = Scheduled.Schedule ;
NewString.User = Regular.UserName ;
NewString.Predefined = Programmé.Prédéfini ;
NewString.Usage = Regulatory.Usage ;
NewString.Identifier = Scheduled.UniqueIdentifier ;

LastTask = Scheduled.LastTask ;
Si LastJob n'est pas défini alors
NewString.Running = DernièreTâche.Démarrer ;
NewString.Status = LastJob.Status ;
Fin si;
FinCycle ;

Création

Créé par la méthode CreateRegularTask du gestionnaire de tâches planifiées :

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Tâche planifiée.Nom = Nom ;
ScheduledTask.Key = Clé ;
ScheduledTask.Use = Utiliser ;
ScheduledTask.UserName = UsersChoice ;
ScheduledTask.Number of RepetitionsWhen Crashing = Nombre de RetriesWhen Crashing ;
ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident ;
ScheduledTask.Schedule = Planifier ;
ScheduledTask.Write();

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

TaskObject.Name = Nom ;
JobObject.Use = vrai;

L'objet de travail possède un champ "Paramètres" dans lequel les paramètres de la méthode sont définis :

Travail planifié

Paramètres

Usage:

Lire et écrire.

La description:

Type : tableau. Un tableau de paramètres de tâche planifiée. Le nombre et la composition des paramètres doivent correspondre aux paramètres de la méthode de tâche planifiée.

Disponibilité:

Serveur, gros client, jointure externe.

Noter:

La capacité de lecture et d'écriture n'est disponible que pour l'administrateur.

Suppression

Supprimé par la méthode Delete() de l'objet job :

ScheduledTask.Delete();

Obtenir un objet de travail

  • list via la méthode GetRegularTasks :
    Planifié = ScheduledTasks.Get ScheduledTasks (Sélection);
  • via la méthode FindByUniqueID du gestionnaire de travaux :
    Tâche = ScheduledTasks.FindBy UniqueIdentifier(UID);

[vous devez vous inscrire pour voir le lien]

Créer une tâche planifiée

Créons une tâche planifiée "Traitement en cours".

Désactiver l'utilisation d'une tâche planifiée afin qu'elle ne démarre pas automatiquement lors de la mise à jour de la configuration.

Attribuez une procédure qui se déclenchera au lancement d'une tâche planifiée :Module Tâches planifiées..

La procédure elle-même ressemble à :

Exportation de la procédure ScheduledTaskPerformanceProcessing(Key)

Paramètres des tâches planifiées.PerformProcessing with Parameters(Key);

FinProcédure

Nous créons un répertoire pour les tâches de routine

Notre tâche planifiée peut générer de nombreux processus d'arrière-plan - un pour chaque traitement. Chaque tâche de la plate-forme 1C8 a une clé. Mais la méthode de travail planifié ne connaît pas la clé du travail en arrière-plan, vous devez donc utiliser les paramètres du travail en arrière-plan. Par conséquent, nous pouvons voir la tâche en arrière-plan dans la console des tâches, mais nous ne pouvons pas créer manuellement une tâche en arrière-plan à partir de cette console, car les travaux avec des paramètres manuels ne sont pas créés.

Répertoire "Paramètres des tâches planifiées" :

Conditions requises :

· CodeBeforeLaunch- chaîne illimitée - code en langage 1C, qui doit être exécuté avant de commencer.

· Traitement à partir de la configuration - chaîne (100) - ID du traitement à partir de la configuration

· Traitement depuis le répertoire - ligne (100) - lien vers l'élément répertoire "Traitement externe", s'il y en a un dans la configuration

· Exécuter via l'application 1C - booléen - sera créé demande distincte 1C et une tâche planifiée y sera lancée. Créé pour 8.1 où toutes les méthodes d'application ne sont pas disponibles sur le serveur sur lequel la tâche planifiée est en cours d'exécution.

· Code de lancement- - chaîne illimitée - code en langage 1C, qui sera exécuté au démarrage de la tâche planifiée.

Créer une forme d'élément :

En cliquant sur "Créer Reg. task" crée par programme une tâche planifiée avec un code clé :

Procédure MainActionsFormsCreateReglTask(Button)

Référence variable ;

Clé = ShortLP(Code);

Tâche = ScheduledTasks.Create ScheduledTask("PerformingProcessing");

Task.Name = Clé ;

Job.Key = Clé ;

Paramètres = Nouveau tableau();

Options.Add(Clé);

Task.Parameters = Paramètres ;

Tâche.Write();

FinProcédure

Démarrage d'une tâche planifiée

Chaque tâche planifiée que nous avons créée a une clé :

Cette clé correspond au code du répertoire "Paramètres des tâches planifiées", elle est recherchée au démarrage de la tâche. Si l'élément du dictionnaire n'est pas trouvé, la tâche n'est pas exécutée.

De plus, si le code est donnéCodeBeforeLaunch alors ce code sera exécuté. De plus, si la variable Remplir vaut faux, la tâche ne sera pas exécutée. Variable disponible dans l'analyse Choix, où un lien vers l'élément trouvé du répertoire "Paramètres des tâches planifiées" est stocké.

En fonction des valeurs sélectionnées des détails, soit le code en langage 1C démarrera, soit le traitement démarrera à partir de la configuration, soit le traitement démarrera à partir de l'ouvrage de référence standard "Traitement externe".

Pour 1C81, l'exécution est fournie dans une nouvelle application - afin que vous puissiez utiliser du code disponible uniquement sur le client, y compris l'utilisation d'un traitement externe. Pour ce faire, cochez la case "Parcourir l'application 1C". Sinon, la tâche planifiée sera exécutée sur le serveur.

Je recommande de définir l'utilisateur dans le champ "Utilisateur" de la tâche planifiée nouvellement créée afin que la tâche soit exécutée avec certains droits. Je recommande de donner à cet utilisateur tous les droits. j'ai l'utilisateur "robot».

Le planning de la tâche planifiée est créé par le lien hypertexte "Planification" du formulaire de la tâche planifiée. Vous pouvez utiliser le traitement "Console des tâches planifiées".

Nettoyage périodique des registres (par exemple, le registre d'informations «Versions d'objets» dans la configuration SCP), effectuer des calculs selon un calendrier, publier des documents à un certain moment - c'est loin d'être liste complète actions pouvant être mises en œuvre à l'aide des tâches de routine 1C.

Créer une tâche

Nous n'avons pas pour but de décrire le code du module exécutable, nous montrerons principes généraux fonctionnement et création d'une tâche procédurale.

La tâche de régulation est indispensable :

  1. Si dans la tâche définie comme l'une des conditions, il est nécessaire d'exécuter périodiquement un certain algorithme ;
  2. Si le code doit être exécuté quelles que soient les actions des opérateurs et utilisateurs de la base de données ;
  3. Si le lancement de la procédure exécutable ne dépend pas d'événements extérieurs survenant avec les objets base d'informations.

Pour le créer, vous devez vous rendre dans l'infobase en mode "Configurateur". Ensuite, nous trouvons la branche "Tâches régulières" dans l'arborescence de configuration, elles sont situées sur l'onglet "Général" et cliquez sur le bouton "Ajouter" (Fig. 1)

Examinons de plus près sa fenêtre de propriétés (Fig. 2):
Fig.2

  1. Nom, synonyme et commentaire - les règles et principes de remplissage de ces champs sont similaires pour tous les objets de configuration et il n'est pas nécessaire de les décrire à nouveau ;
  2. Le nom de la méthode est une procédure générale du module qui décrit le plus précisément possible l'algorithme requis (un appui sur le bouton de sélection ouvre les procédures disponibles dont la représentation est constituée du nom du module général et du nom de la procédure dans différentes colonnes du tableau );
  3. Clé - détermine non pas tant l'unicité de la tâche procédurale, mais l'unicité processus d'arrière-plan, lancé sur la base d'un job, a une durée limite ;
  4. Annexe - nous consacrerons un paragraphe séparé de notre article à la description de cet élément ;
  5. Utilisation - cocher cette case détermine l'activité de la tâche, TRUE signifie que la tâche sera lancée et exécutée selon le calendrier ;
  6. Prédéfini – si l'élément a cette case à cocher, ces tâches ne peuvent pas être supprimées, elles sont créées automatiquement lorsque la configuration est enregistrée dans la base de données ;
  7. Le nombre de répétitions - si une exception survient lors de l'exécution, elle sera redémarrée afin qu'une boucle sans fin ne se produise, le programme limite le nombre de redémarrages ;
  8. Intervalle de relance - temps en secondes entre les redémarrages des travaux en panne.

Regardons de plus près le calendrier.

Planification de la tâche planifiée

Fig.3

Tout d'abord, il faut faire attention au bas de la fenêtre, c'est là que le des informations détaillées avec une ventilation de la fréquence et de l'heure à laquelle la tâche sera effectuée.

Onglet général :

  • Date de début de la tâche ;
  • Date de fin de traitement ;
  • Fréquence de répétition de la tâche.

Si aucune date n'est spécifiée dans cet onglet, aucune limite de temps ne sera définie pour la tâche.

Signet "Quotidien" (Fig. 4)
Fig.4

En plus des champs de saisie pour l'heure de début et de fin de la tâche et la fréquence de son lancement dans la journée, il contient partie tabulaire pour paramètres détaillés fréquence d'exécution.

Les onglets "Quotidien" et "Hebdomadaire" contiennent des informations pour les périodes respectives.

Caractéristiques de fonctionnement

Dans la version client-serveur du fonctionnement, l'exécution des tâches planifiées est déterminée par les outils du serveur. À partir de la console d'administration, vous pouvez activer et désactiver la possibilité d'exécuter des travaux pour une base de données particulière.

La situation est beaucoup plus compliquée avec la version du fichier de travail. Avant une certaine version de la plateforme, l'exécution des procédures d'arrière-plan et planifiées n'était effectuée que si la méthode ExecuteJobProcessing() était activée au démarrage du système sous un certain utilisateur. Dans ce cas, les algorithmes étaient périodiquement lancés tant que l'utilisateur qui avait initié la méthode était dans le programme.

Actuellement, le travail des travaux d'arrière-plan dans la version de fichier de travail est réparti uniformément entre les utilisateurs autorisés dans la base de données, si le programme a été lancé avec paramètre supplémentaire AllowExecuteSheduledJobs, c'est ce processus qui se chargera de la maintenance courante.

Vous pouvez désactiver complètement l'exécution des travaux d'arrière-plan et de maintenance dans une base de données fonctionnant en mode fichier en supprimant ou en renommant le fichier DoNotCopy.txt dans le dossier avec la base de données. La présence de ce fichier indique à la plateforme que le travail est effectué dans l'original, et non dans une copie de la base de données.

De plus, dans les livraisons 1C standard, il est devenu possible de gérer les travaux planifiés directement depuis le programme sans passer par le "Configurateur". Dans la configuration « ZUP », version 3.1.3.223, vous pouvez ouvrir le formulaire de contrôle depuis le menu Administration->Maintenance->Opérations planifiées->Tâches planifiées et en arrière-plan (Fig. 5)
Fig.5

Le formulaire ouvert a une interface intuitive et vous permet de :


Vous pouvez également démarrer l'exécution de la tâche directement depuis le formulaire.

La question que nous avons soulevée dans le titre de l'article est pertinente pour de nombreux administrateurs système travaillant avec ce produit. Dans la mesure du possible, nous essayons de parler des paramètres qui affectent les performances de 1C et de démystifier les mythes populaires. Aujourd'hui, en utilisant l'exemple d'un cas récent, nous voulons vous parler d'un autre aspect qui peut sérieusement affecter les performances - les tâches planifiées.

Commençons par un cas réel. Il n'y a pas si longtemps, un de nos clients nous a contacté avec une plainte concernant les "freins" 1C d'un de ses employés. Les symptômes se sont exprimés dans le fait qu'après un certain temps, la configuration de Trade Management 10 a commencé à beaucoup ralentir, ou, en d'autres termes, à se bloquer pendant un certain temps.

Avec une analyse plus détaillée de la situation, il s'est avéré que cela ne se produit que pour un seul employé, et sur n'importe quel lieu de travail, cela dure longtemps, mais si auparavant les "freins" duraient environ une seconde, maintenant, après la mise à jour, ils peuvent durer jusqu'à 15-20 secondes, ce qui rend le travail extrêmement inconfortable.

En principe, les premières données suffisent déjà pour tirer les premières conclusions. Reprenons-les :

  • Les "freins" se produisent constamment, avec une certaine fréquence
  • "Ralentit" uniquement pour un utilisateur
  • "Ralentit" sur n'importe quel lieu de travail

Pour confirmer nos suppositions, regardons Paramètres de comptabilité:

En effet, l'utilisateur "problème" est répertorié comme un utilisateur devant effectuer des tâches de routine. Il s'est avéré qu'il était une fois pour le compte de cet utilisateur, la tâche d'échange automatique RIB a fonctionné. Il reste à savoir quelle était exactement la cause du "freinage" épisodique. C'est aussi facile à faire :

Et voici le "héros de l'occasion" - la tâche de mettre à jour l'index de recherche en texte intégral, qui a été lancé une fois toutes les 2,5 minutes. Dans ce cas, le problème a été complètement résolu en désactivant l'exécution des tâches planifiées sous cet utilisateur, cependant, cela n'est pas toujours possible ou conseillé, donc ci-dessous, nous examinerons comment les tâches planifiées peuvent être gérées et comment s'assurer qu'elles n'ont pas un impact négatif sur les performances.

Application générale

Dans les configurations basées application régulière il n'existe pas de boîte à outils unique pour gérer les tâches de routine. Cela est dû en grande partie au fait qu'au moment de leur développement initial, le concept même de tâches procédurales était plutôt mal développé.

De nombreuses tâches planifiées sont gérées via la configuration des sous-systèmes qui leur sont associés. Par exemple, les paramètres des tâches de routine liées à l'échange de données doivent être recherchés dans les paramètres d'échange liés à EGAIS dans les paramètres du commerce de l'alcool, etc.

À première vue, tout est assez logique, mais l'absence d'un outil unique rend difficile le contrôle des tâches planifiées configurées et l'optimalité de leurs paramètres. Eh bien, s'il y a une ou deux tâches, et s'il y en a plusieurs ou, comme dans notre cas, s'il y a un soupçon sur l'une des tâches planifiées, mais vous n'avez aucune idée de qui et quoi mis en place dans cette base de données.

Dans ce cas, vous devez utiliser traitement externe Quêtes de la console (JobsConsole), qui est inclus dans l'ensemble de traitement standard sur le disque ITS. Le traitement fournit une interface unique pour tous les travaux et vous permet de les configurer de manière centralisée, ainsi que de contrôler ceux qui s'exécutent dans heure actuelle Tâches.

Cette liste doivent être soigneusement étudiés, toutes les tâches inutiles doivent être désactivées et les tâches nécessaires doivent être planifiées en fonction des besoins urgents et du bon sens. Par exemple, dans notre cas, il n'est pas nécessaire de traiter les réponses EGAIS toutes les 30 secondes (ce réglage a été fait pour les tests) et en mode de fonctionnement, il suffira de le faire, disons, une fois toutes les demi-heures.

Application gérée

Dans les configurations basées sur une application gérée, les tâches planifiées jouent un rôle plus important, elles peuvent être utilisées pour effectuer diverses tâches pour maintenir l'infobase et la maintenir à jour, mais en même temps, ce sont les tâches planifiées qui provoquent le plus souvent " freins".

Pour gérer les tâches de routine, il y a un élément hôtel dans le menu Administration - Assistance et maintenance.

On peut immédiatement noter que les tâches ont considérablement augmenté (par exemple, nous avons pris la même configuration - Retail) et leur configuration compétente peut améliorer considérablement les performances de l'infobase. Les réglages par défaut sont effectués par 1C en fonction des besoins d'une entreprise sphérique moyenne dans le vide et ne sont même pas proches de l'optimum.

Tout d'abord, nous désactivons ce qui est clairement inutile, avec lequel vous ne travaillez pas. Ensuite, nous optimisons le calendrier des fonctions rarement utilisées, par exemple, la mise à jour du classificateur des banques dans Retail, ainsi que la vérification des contreparties, peuvent être effectuées une fois par semaine en dehors des heures de travail ou en fin (début) de la journée de travail .

Une attention particulière doit être portée à tout ce qui concerne index de recherche. Recherche en texte intégral certainement une chose pratique, mais travailler avec son index est une tâche très gourmande en ressources. Par conséquent, vous ne devez pas aller à l'extrême et l'abandonner, mais vous devez sérieusement revoir et ajuster ses paramètres.

Commençons avec extraction de texte, cette opération vous permet de rechercher le contenu des fichiers joints, donc si vous ne les utilisez pas, ne les recherchez pas, ou que vous n'y avez que des images, alors cette opération peut être désactivé, dans tous les cas, pour l'exécuter une fois toutes les 85 secondes - une énumération évidente.

Mise à jour de l'indice PPA- l'une des opérations les plus gourmandes en ressources, par défaut elle est effectuée une fois par minute.

Et maintenant, réfléchissons à la fréquence à laquelle les informations sont ajoutées ou mises à jour dans la base de données, selon laquelle vous recherchez le plus souvent ? Évidemment pas toutes les minutes, il suffira donc de mettre à jour l'index beaucoup moins souvent : une fois par heure, une fois par jour, voire une fois par semaine.

de même pour fusion de l'indice PPD, si vous mettez à jour l'index une fois par jour, vous devez configurer la fusion pour qu'elle s'exécute une fois par semaine, tout en choisissant l'heure la moins perturbatrice comme début de la tâche.

Ces opérations simples vous permettront, sans trop endommager la fonctionnalité de configuration, d'augmenter le confort de travail sur nouveau niveau en refusant d'effectuer fréquemment des opérations plutôt gourmandes en ressources. N'allez pas dans les extrêmes, jugez intelligemment à quel point vous avez besoin de certaines fonctionnalités et à quelle fréquence vous devez accomplir les tâches qui leur sont associées.

  • Mots clés:

Veuillez activer JavaScript pour afficher le

Souvent, les utilisateurs se plaignent que « 1C 8.3 ralentit » : les formulaires de document s'ouvrent lentement, les documents sont affichés pendant une longue période, le programme démarre, les rapports sont générés pendant une longue période, etc.

De plus, de tels "problèmes" peuvent survenir dans différents programmes :

Les raisons peuvent être différentes. Il n'est pas restauré en tenant des papiers, ordinateur faible ou le serveur, le serveur 1C est mal configuré.

Dans cet article, je veux considérer l'une des raisons les plus simples et les plus courantes travail lent programmes - . Cette instruction sera pertinent pour les utilisateurs de bases de données de fichiers pour 1-2 utilisateurs, où il n'y a pas de concurrence pour les ressources.

Si vous êtes intéressé par une optimisation plus sérieuse des options client-serveur du système, visitez la section du site.

Où sont les tâches planifiées dans 1C 8.3

Avant que j'aie eu le temps de charger le programme, de nombreuses tâches en arrière-plan ont été effectuées en 1C. Vous pouvez les consulter en allant dans le menu « Administration », puis - « Support et maintenance » :

Obtenez gratuitement 267 leçons vidéo 1C :

Voici à quoi ressemble la fenêtre avec les tâches terminées :

Et voici une liste complète de toutes les tâches planifiées qui s'exécutent :

Parmi ces tâches sont visibles telles que "", chargement de divers classificateurs, vérification de la pertinence de la version du programme, etc. Par exemple, je n'ai pas besoin de presque toutes ces tâches. Je ne tiens pas de registre des devises, je contrôle moi-même les versions, je télécharge des classificateurs au besoin.

Par conséquent, il est dans mon intérêt (et dans la plupart des cas dans le vôtre) de désactiver les tâches inutiles.

Désactivation des tâches planifiées et en arrière-plan dans 1C 8.3