Tâches en arrière-plan : fonctionnalités, capacités, paramètres. Exécution d'une tâche en arrière-plan par programmation 1s formulaires gérés configuration d'un fichier de tâche en arrière-plan

Probablement, chaque programmeur 1C 8.3 devait tôt ou tard configurer l'exécution de certaines tâches selon un calendrier. Ci-dessous je donnerai Description détaillée ces mécanismes, j'espère que ce sera informations utiles pour les programmeurs novices 1C. C'est très pratique, car cela ne nécessite aucune action humaine, la tâche planifiée est configurée une fois et fonctionne selon votre horaire.

Des instructions détaillées avec un exemple se trouvent ci-dessous.

Quelles sont les tâches planifiées et en arrière-plan dans 1C

  • Devoirs programmés est un mécanisme spécial 1C Enterprise 8.3 conçu pour effectuer une action spécifique selon un calendrier donné.
  • Travail en arrière-plan- objets générés par une tâche planifiée qui exécute directement l'action inhérente sans la participation de l'utilisateur ou du programmeur 1C 8.2.

Le mécanisme des jobs planifiés et en tâche de fond fonctionne en mode de fonctionnement client-serveur (SQL), grâce aux fonctionnalités du SGBD. Si vous avez une base de données de fichiers, la tâche peut également être configurée, mais d'une manière légèrement différente.

Configuration des tâches en arrière-plan dans le mode de fonctionnement client-serveur 1C

Pour commencer, créons un nouvel objet de métadonnées - une tâche planifiée. Je nommerai ma tâche "LoadingCurrency Rates". Considérez la palette de propriétés de cet objet de configuration :

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

  • Nom de la méthode— chemin vers la procédure qui sera exécutée en tâche de fond selon le planning spécifié. La procédure doit être dans un module partagé. Il est recommandé de ne pas utiliser de standards, mais de créer les vôtres. N'oubliez pas que les tâches en arrière-plan s'exécutent sur le serveur !
  • Usage- un signe de l'utilisation d'une tâche planifiée.
  • prédéterminé Indique si la tâche planifiée est prédéfinie. Si vous souhaitez que la tâche planifiée fonctionne immédiatement après avoir été placée dans la base de données, spécifiez cet attribut. Sinon, vous devrez utiliser le traitement "Job Console" ou appeler le travail pour qu'il s'exécute par programmation.
  • Nombre de tentatives lorsqu'une tâche plante— combien de fois le travail d'arrière-plan a été redémarré s'il a été exécuté avec une erreur.
  • Intervalle entre les tentatives d'abandon de tâche- la fréquence à laquelle la tâche en arrière-plan sera redémarrée si elle s'est terminée avec une erreur.

Et le cadre le plus intéressant - Programme:

Ici, vous pouvez définir l'intervalle de démarrage de la procédure spécifié dans le champ "Nom de la méthode". Laisse-moi mettre en place

Attention! N'oubliez pas de désactiver le blocage des jobs planifiés et d'arrière-plan au niveau du SGBD !

Cela peut se faire dans l'utilitaire d'administration de la version client-serveur ou lors de la création d'une nouvelle base de données :

Configuration des tâches planifiées en mode fichier de fonctionnement 1C

En mode fichier, la configuration de telles tâches est un peu plus difficile. Pour une telle tâche, une session distincte du programme 1C doit être lancée. Souvent, cela est résolu par l'institution de l'utilisateur "technique", dont la session est toujours en cours d'exécution.

En mode fichier, l'initialisation du job planifié se produit au lancement de la méthode "ExecuteJobProcessing()".

Pour un utilisateur spécifique, il est possible de configurer cette méthode pour qu'elle s'exécute à l'aide d'une autre méthode −

ConnectWaitingHandler( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Nom de la procédure— le nom de la procédure connectée en tant que gestionnaire d'attente. Nom de la procédure exportée pour un module d'application géré (module d'application standard) ou un module global partagé. La procédure doit se trouver sur le client.
  • Intervalle— période entre les exécutions des opérations en secondes.
  • une fois que- comment terminer la tâche, une fois ou non.

ConnectWaitingHandler, 3600 ) ;

Une vidéo de deux minutes montrant comment configurer une tâche planifiée dans le configurateur 1C :

1C Enterprise a des tâches planifiées et en arrière-plan dans ses configurations. Ces tâches sont planifiées en fonction du calendrier de chaque tâche. Certaines des tâches sont initialement exécutées sur une minuterie après un certain nombre de secondes, ce qui peut nuire aux performances et interférer clairement avec le travail dans l'infobase.

Pour modifier les tâches planifiées et en arrière-plan dans l'onglet d'administration, sélectionnez "Tâches régulières et en arrière-plan" à gauche. Une liste des tâches existantes, leur statut, leur calendrier et d'autres informations apparaîtront.

En cliquant plusieurs fois sur l'une des tâches, une fenêtre avec les propriétés de cette tâche s'ouvrira. Ici, vous pouvez modifier de nombreux paramètres à votre goût, y compris le calendrier de cette tâche. Pour désactiver une tâche, la case "Activé" doit être décochée. Mais si la tâche doit s'exécuter selon un calendrier, il est extrêmement important d'utiliser un utilisateur distinct avec tous les droits pour toutes les tâches en arrière-plan.

Les paramètres de planification des tâches sont très flexibles, mais il est toujours souhaitable de définir toutes les tâches de manière à ce qu'une seule tâche s'exécute en même temps et de préférence en dehors des heures de travail. Une exception ne peut être que la synchronisation de plusieurs infobases liées, par exemple, comptabilité d'entreprise + paie et gestion du personnel.

Téléchargement du classificateur de banque - Dimanche 4h30
Chargement des taux de change - tous les jours ; 7:00
Extraire des textes - tous les jours ; 6h00.
Messagerie pour les comptes de flux de travail - tous les jours ; toutes les 10800 s.
Mise à jour des unités - tous les jours ; à partir de 5:00:00 une fois par jour
Mise à jour des tâches du comptable - tous les jours ; à partir de 6:30:00 une fois par jour
Mise à jour de l'index PPD (recherche plein texte) - tous les jours ; toutes les 10800 s.
Reconstruction globale - tous les jours, par jour de la semaine [samedi] ; à partir de 3:00:00 une fois par jour
Recalcul des valeurs actuelles des dates relatives de l'interdiction des modifications - tous les jours ; à partir de 7:00:00 une fois par jour
Fusionner l'index PPD (recherche plein texte) - tous les jours ; à partir de 4:00:00 une fois par jour
Suppression des informations de synchronisation obsolètes - tous les jours ; à partir de 3:30:00 une fois par jour
Réglage de la période des totaux calculés - tous les jours, le 5e jour du mois ; à partir de 1:00:00 une fois par jour

Concept de programmation asynchrone

Le concept de programmation asynchrone est que le résultat de l'exécution de la fonction n'est pas disponible immédiatement, mais après un certain temps sous la forme d'un appel asynchrone (violant l'ordre normal d'exécution).

Ceux. L'idée principale de la programmation asynchrone est de démarrer des appels de méthode individuels et de continuer à faire d'autres travaux en parallèle sans attendre la fin des appels.

Certaines méthodes, dont la probabilité d'exception est minimisée, n'ont pas besoin d'une approche asynchrone, mais d'autres l'exigent au tout début du développement.

Comme on peut le voir sur les graphiques, il n'y a pas de coefficient d'actions utilisateur interactives utiles dans le modèle de programmation synchrone, puisque le système bloque l'interface utilisateur, tandis que dans le modèle asynchrone, l'utilisateur continue à travailler activement dans le système.

Lors d'une exécution synchrone, une application n'a qu'un seul thread. Avec le modèle de programmation asynchrone, vous pouvez exécuter de nombreux threads parallèles et répondre aux nouvelles actions de l'utilisateur au fur et à mesure de leur exécution. Une fois le n-thread terminé, vous affichez le résultat à l'écran.

Tâches en arrière-plan dans 1C:Enterprise 8

Dans 1C:Enterprise 8, les tâches d'arrière-plan sont conçues pour effectuer des tâches d'application de manière asynchrone. Ils peuvent générer des travaux d'arrière-plan enfants, par exemple, pour paralléliser des calculs complexes sur différents serveurs de travail du cluster dans un mode de fonctionnement client-serveur.

Il est possible de limiter l'exécution des jobs d'arrière-plan qui ont les mêmes méthodes, selon un certain attribut d'application. La création et la gestion par programmation des tâches d'arrière-plan sont possibles à partir de n'importe quelle connexion utilisateur avec base d'informations systèmes. La tâche d'arrière-plan s'exécute en tant qu'utilisateur qui l'a créée.

Le mécanisme de tâche fonctionne à la fois dans les versions client-serveur et fichier de work, mais les possibilités d'administration et d'exécution des tâches dans les deux versions sont quelque peu différentes.

Option client-serveur

Dans la version client-serveur, les tâches sont planifiées par le planificateur de tâches, qui est physiquement situé dans le gestionnaire de cluster.

Le planificateur vérifie périodiquement les demandes d'exécution de tâches en arrière-plan. S'il y a des travaux qui doivent être exécutés, le planificateur détermine les processus de travail du cluster les moins chargés et affecte séquentiellement une tâche à exécuter à chacun d'eux. Ainsi, le même flux de travail peut potentiellement exécuter plusieurs tâches en parallèle. Une fois la tâche reçue par le flux de travail, le flux de travail établit une connexion à l'infobase et exécute la tâche dans cette connexion. Une fois la tâche exécutée, le workflow informe le planificateur de la réussite ou de l'échec de la tâche.

Options de fichier

À partir de la version 8.3.3.641 de la plate-forme, les développeurs ont grandement simplifié le travail avec des tâches en arrière-plan dans la version fichier.

Auparavant, l'exécution automatique des tâches nécessitait le lancement d'une session 1C:Enterprise supplémentaire distincte utilisée comme planificateur de tâches. Et dans cette session, il était nécessaire d'exécuter périodiquement la méthode du langage intégré ExécutezProcessingJobs(). Cette approche était plutôt lourde, peu pratique et limitait considérablement l'utilisation des tâches en arrière-plan et planifiées dans la version fichier de work.

Maintenant, tout est devenu beaucoup plus facile. Si un client léger ou lourd démarre, ou si le serveur Web dispose de connexions client, alors chacune de ces applications démarre automatiquement un autre thread avec une connexion à la base de données. Ces threads sont engagés dans le fait qu'ils exécutent des tâches en arrière-plan et planifiées.

Chacune de ces applications exécute ses propres tâches d'arrière-plan. Si une application a initié plusieurs jobs d'arrière-plan, alors ils sont exécutés séquentiellement, dans l'ordre dans lequel ils sont reçus.

Emplois d'arrière-plan évidents moins 1C: puisqu'ils sont exécutés côté serveur, il n'y a aucune possibilité de travail interactif avec l'utilisateur (par exemple, vous ne pouvez pas afficher un message ou toute autre information ; toutes ces données doivent être stockées dans l'infobase et traitées ultérieurement d'une manière ou d'une autre) .

Il convient de noter que les travaux d'arrière-plan sont des objets purement programmatiques et ne peuvent pas être stockés dans la base de données. Autrement dit, nous ne pouvons que créer une instance de la classe, initialiser ses propriétés et l'exécuter pour l'exécution.

Un exemple d'exécution de code asynchrone dans 1C:Enterprise 8

« Écrire des programmes dans lesquels le résultat d'un appel de fonction arrive à une heure inconnue est beaucoup plus difficile que des programmes ordinaires. Appels imbriqués, gestion des erreurs, contrôle sur ce qui se passe - tout devient plus compliqué », seuls ceux qui ne savent pas utiliser correctement les capacités de la plateforme le diront, mais pas nous !

Démontrons toute la simplicité et l'élégance de l'exécution de code asynchrone dans 1C:Enterprise 8 !

Étape 1. Créons un nouvel IB pour le développement de la configuration

Étape 2 Dans la configuration, ajouter le module général "AsynchronousHandlers"

Pourquoi avons-nous ajouté un module commun ? Tout est simple ici: pour effectuer des opérations asynchrones dans 1C: Enterprise 8, des tâches d'arrière-plan sont utilisées, qui ont leur propre gestionnaire - «BackgroundTask Manager». Cet objet a une méthode "Run", à l'aide de laquelle la tâche en arrière-plan est lancée.

Passons à l'assistant de syntaxe.

Ainsi, nous aurons besoin d'un module commun.

Étape 3 Dans le module général "AsynchronousHandlers" ajoutons la procédure d'export OurDurationOperation()

Procedure OurDurationOperation(Duration) Export // Simulation d'une action continue (Duration sec.). OperationStartDate = CurrentDate(); Tandis que CurrentDate() - OperationStartDate< Длительность Цикл КонецЦикла; КонецПроцедуры

Étape 4 Nous ajoutons le traitement "AsynchronousProgrammingConcept" à la configuration (vous pouvez créer un traitement externe)

Ajoutez un attribut au formulaire :

Durée (Nombre)

et deux équipes

Effectuez une opération longue ;

Exécutez une Long-runningOperation de manière asynchrone.

Étape 5 Selon l'assistant de syntaxe, remplissez le module de formulaire

&AtClient Procédure PerformLongOperation(Commande) PerformLongOperationOnServer(); EndProcedure & Procédure OnServer PerformLongOperationOnServer() AsynchronousHandlers.OurLongOperation(Duration); EndProcedure &OnClient Procedure ExecuteLong-runningOperationAsynchronously(Command) ExecuteLong-runningOperationAsynchronouslyOnServer(); EndProcedure &AtServer Procedure PerformLong-runningOperation AsynchronouslyAtServer() Parameters = New Array; Paramètres.Ajouter(Durée); BackgroundJobs.Run("AsynchronousHandlers.Our LongOperation", Parameters, New UniqueIdentifier, "Exemple de concept de programmation asynchrone"); FinProcédure

Étape 6 Nous lançons et vérifions!

Résultat:

Si nous cliquons sur le bouton "Effectuer une opération longue", alors l'interface utilisateur est bloquée pendant "Durée" secondes ;

Si nous cliquons sur le bouton "Exécuter une opération de longue durée de manière asynchrone", l'interface utilisateur n'est pas bloquée et le code du programme est exécuté en parallèle.

Nous pouvons vérifier que le code du programme s'exécute de manière asynchrone en consultant le journal.

Nous pouvons déboguer le code du programme qui s'exécute en "arrière-plan" si nous définissons la propriété appropriée dans les options de débogage.

Un exemple d'exécution de code asynchrone dans 1C:Enterprise 8 à l'aide de BSP

Considérons un exemple de mise en œuvre du concept de programmation asynchrone dans 1C: Enterprise 8 dans BSP en utilisant l'exemple du traitement des affaires courantes.

La logique est la suivante : lors du démarrage du programme, l'espace de travail est initialisé page de démarrage, où vous pouvez afficher le formulaire de traitement "Affaires courantes". Ce formulaire est rempli avec les affaires courantes de l'utilisateur, et il faut du temps pour le remplir. Si les développeurs n'avaient pas la possibilité d'exécuter du code de manière asynchrone, alors l'interface utilisateur serait bloquée pendant la durée de remplissage du formulaire de traitement !

Analysons le code programme du formulaire.

L'événement de formulaire "OnCreateOnServer" appelle la procédure "RunBackgroundJob" - c'est ce dont nous avons besoin.

Sans nous laisser distraire par les nuances, nous analysons cette procédure

Et ici, nous voyons que le gestionnaire de tâches en arrière-plan et sa méthode Execute sont utilisés. Notez que les développeurs conservent un ID de tâche d'arrière-plan unique.

Pour ce faire, les développeurs utilisent la méthode ConnectWaitingHandler(<ИмяПроцедуры>, <Интервал>, <Однократно>).



Dans une procédure de hook Pluggable_CheckJobExecution() les développeurs appellent une fonction Travail terminé (ID de travail)


Cette fonction vérifie l'exécution d'un job d'arrière-plan par ID.

Il convient de noter que BSP a développé des modules communs pour prendre en charge le fonctionnement des opérations de serveur à long terme.

Ainsi, le concept asynchrone de programmation dans 1C:Enterprise 8 augmente légèrement la complexité de la résolution de problèmes pour le développeur, mais améliore considérablement la fonctionnalité du programme du point de vue de l'utilisateur.

Certaines tâches de gestion de documents et de comptabilité peuvent devoir être effectuées périodiquement. Par exemple, sur les vingtièmes numéros. Ou quotidiennement.

Habituellement, l'entreprise essaie de créer des règles sur la mise en œuvre de telles tâches - qui, quand et comment doit effectuer la tâche, qui doit la contrôler.

Ces tâches sont appelées - réglementées, c'est-à-dire exécutées conformément à la réglementation.

En informatique, la surveillance est souvent routinière.

C'est bien connu administrateur du système- il y a programmes spéciaux, qui vérifient périodiquement la santé des serveurs et de l'infrastructure réseau et envoient des SMS ou e-mail administrateur.

Des choses similaires existent pour les webmasters - pour vérifier la disponibilité du site pendant la journée.

Dans 1C, les tâches de surveillance et toutes les autres tâches périodiques qui doivent être exécutées automatiquement selon un calendrier sont effectuées à l'aide du mécanisme Tâches planifiées 1C.

Parlons d'eux aujourd'hui.

Tâches planifiées 1C

Les tâches planifiées 1C sont celles qui vous permettent d'effectuer comme elles le font, mais dans les délais.

La tâche de routine 1C elle-même dans le configurateur est un moyen de spécifier les paramètres et de définir un calendrier. À propos, le calendrier peut être modifié dynamiquement plus tard en mode 1C Enterprise.

Des tâches en arrière-plan peuvent être créées arbitrairement à partir du texte du programme dans le langage 1C sans tâche 1C planifiée - par traitement en parallèle sur serveur.

L'exécution des tâches de routine 1C peut être temporairement désactivée - in.

Ajouter une tâche planifiée 1C

Les tâches planifiées 1C sont dans la configuration dans la branche Général / Tâches planifiées 1C. Ajoutons une nouvelle tâche planifiée 1C, spécifions son nom.

Dans la propriété de la tâche planifiée 1C, le nom de la méthode est indiqué, ainsi que dans. La fonction sera située dans un module commun avec la case Serveur cochée dans les propriétés, c'est-à-dire que le module doit être ajouté au préalable.

La propriété de la tâche planifiée 1C - Nom de la tâche - détermine le nom sous lequel la tâche apparaîtra dans les outils de gestion des tâches.

La propriété de la tâche planifiée 1C - Clé - permet de regrouper plusieurs tâches planifiées différentes 1C. Une seule tâche avec la même valeur de clé peut être exécutée en même temps. La valeur elle-même peut être arbitraire. Une valeur vide n'est pas prise en compte lors du contrôle (c'est-à-dire qu'elle est considérée comme non remplie).

La propriété de la tâche planifiée 1C - Prédéfinie - détermine qu'au démarrage de 1C Enterprise, une telle tâche sera créée et en un seul exemplaire avec le calendrier spécifié dans le configurateur. Les tâches non prédéfinies apparaissent par programmation lorsque le planning arrive.

À configurations typiques, par exemple, Accounting Revision 2.0, des tâches de routine 1C telles que la mise à jour de la configuration et le recalcul des résultats sont prédéfinies, mais telles que l'échange de données ou les mouvements différés ne sont pas prédéfinies.

Utilisation - inclut la tâche (c'est-à-dire qu'elle ne sera exécutée que si la case Utilisation est cochée).

Crash retry - comme vous pouvez facilement le deviner, signifie redémarrer la tâche si elle n'a pas pu être terminée avec succès la première fois - il est indiqué combien de fois redémarrer et après combien de temps après le crash.

1C gestion et surveillance des tâches planifiées

Pour gérer les tâches planifiées 1C, il existe un traitement typique spécial de la console de tâches. Il peut également être trouvé sur .

Ce traitement fait référence au soi-disant traitement 1C typique externe universel, qui n'est souvent pas inclus dans la configuration, mais est distribué séparément, par exemple, sur des disques ITS.

Avec Job Console Processing, vous pouvez :

  • Activer / désactiver l'exécution de la tâche planifiée 1C
  • Attribuer / modifier le calendrier de la tâche planifiée 1C (et d'autres paramètres)
  • Spécifiez l'utilisateur 1C pour le compte duquel la tâche planifiée 1C sera exécutée
  • Afficher - quelles tâches ont été accomplies quand et avec quel résultat, erreurs dans l'accomplissement des tâches 1C
  • Exécuter une tâche.

Copies des bases de données et des tâches de routine 1C

Si le serveur 1C est utilisé, la situation suivante se produit :

  • Pour leurs propres besoins (par exemple, pour la programmation), une copie de la base de données de travail est faite
  • Dans une copie de la base de données, il est travaillé, testé, etc.
  • On oublie de désactiver les tâches de routine 1C dans une telle base de test.

Alors que les tâches de routine 1C exécutent des tâches liées uniquement à leur infobase, il n'y a rien là-dedans.

Cependant, les tâches de routine 1C peuvent souvent enregistrer toutes les données de fichiers dans d'autres bases de données, échanger, envoyer des e-mails.

Dans ce cas, un mélange intéressant peut se produire entre le résultat de l'exécution de tâches de routine 1C dans la base de données de travail et les copies.

Les tâches de routine 1C pour les copies de la base de travail doivent être désactivées dans.

Accomplissement et non-accomplissement des tâches de routine 1C

Lors de la création de tâches planifiées 1C, vous devez vous rappeler :

  • Tâches exécutées par elles-mêmes - elles doivent être surveillées
  • Tâches exécutées dans un module sur le serveur
  • Les tâches sont exécutées sous un utilisateur Windows différent, avec des droits différents.

Tout d'abord, vous devez vérifier que la tâche est en cours d'exécution et peut être exécutée en tant que tâche 1C planifiée.

Deuxièmement, le module serveur signifie que de nombreuses choses qui sont disponibles sur le client ne sont pas disponibles. Par exemple, parfois, tous les documents ne peuvent pas être affichés uniquement sur le serveur, car leur algorithme peut prévoir que l'affichage est lancé manuellement par l'utilisateur et des fonctions non serveur peuvent être utilisées, par exemple
Alerte ("Salut !")

Troisièmement, si la tâche porte sur quelque chose en dehors de la base 1C, alors les droits deviennent importants. Utilisateur Windows Sous lequel le travail s'exécute.

Le troisième point est particulièrement important dans le développement. Si le module ne peut pas être exécuté sur le serveur, la tâche ne sera en principe pas exécutée. Pour vérifier, vous devez exécuter la tâche au moins une fois et voir le résultat "Tâche terminée" dans le traitement de la console des tâches.

Souvent, lors de la tenue de registres, il devient nécessaire d'effectuer périodiquement certaines actions sans intervention de l'utilisateur. Les tâches planifiées et en arrière-plan en 1C sont les mécanismes prévus à cet effet dans la huitième version du programme et permettent :

  • Mettre en place la livraison en temps opportun des documents ;
  • Calculer les soldes et les totaux ;
  • Assurer un affichage régulier ;
  • Vérifiez et supprimez les données non pertinentes.

Tâche en arrière-plan et planifiée - qu'est-ce que c'est et où est-elle configurée

Une tâche planifiée est un mécanisme intégré à 1C qui vous permet de configurer et, conformément au calendrier et à la fréquence établis, d'effectuer une certaine séquence d'actions.

Une tâche en arrière-plan est une action générée par une opération planifiée et ne nécessite pas la participation directe de l'utilisateur.

Une tâche planifiée est créée en mode configurateur :

  • Dans la fenêtre de l'arborescence de configuration, nous trouvons la branche correspondante (Fig. 1);
  • Cliquez sur le bouton Ajouter ;
  • Dans la fenêtre qui s'ouvre, vous devez indiquer un nom permettant d'identifier l'objet dans la configuration ;

Fig.2

  • En face de l'inscription "Schedule" (Fig. 2), il y a une inscription "Open", en cliquant sur laquelle s'ouvre une fenêtre permettant de définir l'heure et la fréquence d'exécution du gestionnaire (Fig. 3);

Fig.3

  • Il faut également renseigner le « Nom de la méthode » (le nom de la procédure appelée depuis le module général et décrivant l'algorithme de comportement du programme sera saisi ici) ;
  • Les champs "Nom" et "Clé" permettent de regrouper des objets ;
  • La case cochée « Utilisation » indique l'activité de l'opération planifiée ;
  • "Predefined" doit être défini si le gestionnaire doit être lancé immédiatement après son ajout à la base de données, sinon il peut être lancé à partir du traitement correspondant (plus d'informations ci-dessous) ;
  • Les paramètres Retry Count et Retry Interval décrivent le comportement du programme en cas d'exception lors de l'exécution d'un job d'arrière-plan.

Ainsi, en utilisant le mécanisme des opérations planifiées, vous pouvez définir le calendrier et les principales actions des tâches d'arrière-plan. Voyons maintenant leurs caractéristiques.

Caractéristiques des tâches d'arrière-plan

La principale caractéristique de ce mécanisme est que le processus d'arrière-plan s'exécute de manière asynchrone.

Qu'est-ce que ça veut dire. Le fait est qu'avec un modèle de travail synchrone, si un algorithme est exécuté, l'interface utilisateur est bloquée. Dans notre cas, l'utilisateur peut continuer à saisir et modifier des données, même si la procédure est en cours d'exécution. Le modèle de programmation asynchrone implique la séparation des threads de calcul.

Ainsi, les tâches d'arrière-plan dans 1C peuvent générer leurs propres processus, répartissant les calculs sur différents serveurs faisant partie du même cluster.

Caractéristiques du travail en mode client-serveur

  • La planification et le contrôle de l'exécution sont effectués par un ordonnanceur du cluster de serveurs ;
  • Si une demande d'exécution apparaît, le planificateur recherche les processus de travail du cluster avec une charge minimale et leur distribue des tâches pour exécution ;
  • Chaque processus peut effectuer plusieurs calculs parallèles ;
  • Après l'arrivée de la tâche, le processus se connecte à la base de données et y exécute l'algorithme ;
  • Le processus rapporte les résultats au planificateur.

Travaux d'arrière-plan en mode fichier

Avant la version 8.3.3.641 de la plate-forme, l'utilisation de tâches en arrière-plan dans la version fichier présentait certaines difficultés :

  1. Il était nécessaire de lancer une session distincte qui fonctionnerait 24 heures sur 24, remplaçant le planificateur ;
  2. Cette session doit avoir périodiquement exécuté la méthode ExecuteJobProcessing().

Après la mise à jour, chaque démarrage des clients lourds et légers, si la clé AllowExecuteScheduledJobs est spécifiée dans les paramètres de lancement (Fig. 4) dans le champ "Additional", initie un thread de connexion supplémentaire à la base de données, qui n'affecte pas l'utilisateur. fonctionne de quelque manière que ce soit, mais n'effectue que des tâches d'arrière-plan.

Fig.4

Il faut tenir compte du fait que même dans la version fichier du travail, les processus d'arrière-plan ne permettent pas un travail interactif avec l'utilisateur (les messages de service, les avertissements, les questions ne seront pas affichés). C'est-à-dire qu'ils doivent être encodés comme s'ils allaient être exécutés côté serveur.

Comment désactiver les tâches planifiées

Les tâches inutilisées peuvent être désactivées en décochant simplement la case "Utiliser" dans les propriétés de l'objet.

Si l'administrateur doit interdire l'utilisation d'opérations de routine et d'arrière-plan pour l'ensemble de la base de données dans son ensemble (par exemple, plusieurs bases de données sont stockées sur le serveur, dont une seule est la principale, et les autres ne sont utilisées que pour le développement) , il est nécessaire d'utiliser l'utilitaire d'administration de la base de données. Vous pouvez également cocher la case "Définir le blocage des tâches planifiées" dans la base de données créée sur le serveur.

De plus, les disques ITS disposent d'un traitement spécial "Job Console", qui vous permet de modifier le calendrier des processus d'arrière-plan et de modifier leur activité.