Les erreurs 1C les plus courantes et les méthodes pour les corriger. Les erreurs 1C les plus courantes et les méthodes pour les corriger Correction des erreurs dans 1C

De nombreuses erreurs différentes peuvent survenir dans les bases de données d'informations sur la plateforme 1C :

violation de l'intégrité logique/physique de la base de données, erreurs des utilisateurs, code de développeur « tordu » et bien plus encore.

Il peut y avoir plusieurs raisons : l'alimentation a été coupée et il n'y avait pas d'alimentation électrique de secours, ou le vendredi soir a été un succès, et l'utilisateur ne se souvient plus lundi de ce qu'il a fait de cette façon.

Tout d’abord, il convient de poser quelques questions de clarification à l’utilisateur :

1) Versions de plate-forme/configuration.

2) Texte intégral du message d'erreur. Les utilisateurs ont la fâcheuse tendance à ne pas lire ces messages dans leur intégralité, et ils contiennent peut-être des recommandations de dépannage.

3) Depuis combien de temps est-il apparu et dans quelles circonstances il apparaît. Il est peu probable que nous soyons en mesure de corriger des erreurs non reproductibles que nous n'avons jamais rencontrées auparavant.

4) Cela se produit-il si j'exécute 1c depuis un autre ordinateur/d'un autre utilisateur ? Cela nous donnera matière à réflexion - si vider le cache, définir les autorisations ou effacer les paramètres utilisateur peut aider.

Parlons maintenant un peu des erreurs elles-mêmes et de la manière de les résoudre.

Général:
Certaines erreurs se produisent lors de l'utilisation de logiciels sans licence (Windows, 1C, etc.).

Un exemple courant est une plate-forme cassée. L'un des correctifs pirate une version spécifique de la plateforme, donc après avoir installé une nouvelle version de la plateforme et essayé de vous connecter à la base de données, vous pouvez voir la fenêtre « Aucune licence gratuite trouvée ».

Si vous rencontrez une erreur pour la première fois - peut-être que quelqu'un l'a déjà rencontré -

recherchez sur Google, peut-être que quelqu'un a déjà rencontré ce problème et résolu le problème, et vous ne perdrez pas quelques heures supplémentaires de votre temps.

La sortie des configurations doit être à jour (principalement pour les configurations à partir desquelles le reporting réglementé est soumis) ; ce n'est pas sans raison que la ligne de consultation suggère presque toujours de mettre à jour d'abord, puis de chercher plus loin.

Version actuelle de la plate-forme - pour chaque configuration, il est indiqué quelle version de la plate-forme est recommandée pour travailler avec cette configuration.

Le journal technologique vous permet de consigner tous les événements 1C:Enterprise (ou une partie, à l'aide d'un filtre).
Vous pouvez également lire sur lui.

!!!IMPORTANT

Avant toute action avec la base de données, faites une copie d'archive !

Si la base de données ne s'ouvre pas dans le configurateur, copiez le dossier contenant la base de données et effectuez toutes les opérations sur la copie !

1) La base de données ne s'ouvre pas du tout, ni en mode utilisateur, ni dans le configurateur.

  • La chose la plus rapide que vous puissiez faire est d'effacer les fichiers temporaires (supprimez la base de données de la liste des bases de données et reconnectez-vous)

    Cette action ne supprimera pas les fichiers temporaires (cache), mais créera un nouveau dossier pour les fichiers temporaires de la base de données. Vous pouvez supprimer des fichiers :
    Sous Windows 7 dans C:\Users\Username\AppData\Roaming\1C\1Cv8x
    Sous Windows XP C:\Documents and Settings\User_Name\Application Data\1C\1Cv8х

  • Vous pouvez également essayer de vous connecter à la base de données à partir d'un autre utilisateur.
  • Si la base de données est basée sur des fichiers, il vaut la peine d'exécuter l'utilitaire permettant de tester l'intégrité physique de la base de données chdbfl. Il se trouve dans le dossier :
    C:\Program Files (x86)\1cv8\8.x.x.xxx\bin\chdbfl.exe
  • Si la base de données est SQL, testez en utilisant SQL.
  • Si ni l'un ni l'autre ne vous aide, vous pouvez mettre à jour la plate-forme (voir sur quelle plate-forme fonctionne la version)
  • Si aucune des solutions ci-dessus ne fonctionne, vous pouvez utiliser le programme Tool_1CD.

2) Si la base de données est vidée au démarrage.

  • Désactivez l'accélération matérielle de la carte vidéo :
  1. Propriétés de l'écran ouvert. Cela peut être fait via le Panneau de configuration, ou simplement en cliquant avec le bouton droit n'importe où sur le bureau exempt de fenêtres et d'icônes, et en sélectionnant l'élément de menu contextuel « Propriétés ».
  2. Dans la fenêtre des paramètres d'affichage qui s'ouvre, allez dans l'onglet « Paramètres » et cliquez sur le bouton « Avancé ».
  3. Dans la fenêtre des propriétés de la carte vidéo qui s'ouvre, accédez à l'onglet « Diagnostics ».
  4. Déplacez le curseur « Accélération » vers la position la plus à gauche (« non ») et cliquez sur « Appliquer » ou « OK ». L'accélération matérielle est désactivée. Les modifications prendront effet après le redémarrage du système.
  1. Ouvrez le Panneau de configuration (Démarrer - Panneau de configuration).
  2. Recherchez et ouvrez l’élément Screen.
  3. Dans la partie gauche de la fenêtre qui s'ouvre, cliquez sur le lien « Configurer les paramètres de l'écran ».
  4. Dans la fenêtre qui s'ouvre, cliquez sur le lien « Paramètres avancés ».
  5. Accédez à l'onglet Diagnostics et cliquez sur le bouton Modifier les paramètres.
  6. Dans la fenêtre qui s'ouvre, déplacez le curseur vers la position la plus à gauche (« non ») et cliquez sur « Ok ». Si l'UAC est activé, vous devrez confirmer que les modifications sont autorisées par l'utilisateur. L'accélération matérielle est désactivée. Les modifications prendront effet après le redémarrage du système.

Sous Windows 7, dans certains cas, le bouton « Modifier les paramètres » sera grisé. Dans ce cas, il est impossible de désactiver l'accélération matérielle, car la carte vidéo et son pilote ne prennent pas en charge la manipulation de l'accélération matérielle.

  • Si vous disposez de l'antivirus Kaspersky, vous pouvez essayer de désactiver l'autodéfense et de renommer les fichiers kloehk.dll et mzvkbd3.dll dans le dossier Kaspersky. (L'erreur s'est produite sur les anciennes versions de 2011, mais se produit encore parfois)
  • Vérifiez que la plate-forme de version/configuration correspond.
  • Essayez de vous connecter à la base de données depuis une autre plateforme.

3) La base de données s'ouvre dans le configurateur, mais ne souhaite pas passer en mode utilisateur.

  • Effacement des fichiers temporaires
  • Essayer de vous connecter en tant qu'autre utilisateur
  • chdbfl / tests avec SQL
  • Tests et corrections de sécurité des informations :
    Dans le configurateur Administration-Tests et Correction - cases à cocher selon la situation.
  • Essayez de créer un autre utilisateur avec tous les droits et connectez-vous sous son nom.
  • Essayez de le transférer sur un autre PC et ouvrez-le là-bas, peut-être quelque chose depuis le PC.

4) Lorsqu'une action se produit, le code est envoyé dans le configurateur.

  • Pour vérifier, vous devez vider le cache.
  • Si cela ne résout pas le problème, il y a probablement une erreur dans le code - cela est particulièrement vrai pour les configurations non standard et auto-écrites, mais cela se produit parfois aussi dans les configurations standard.

Si la configuration est atypique, alors soit la mise à jour était incorrecte, soit le développeur qui a finalisé la configuration n'a pas prévu toutes les possibilités d'erreurs des utilisateurs - à toute épreuve (si possible !).

Si c'est typique, il se peut qu'il y ait un bug dans la version.

Dans tous les cas, cela vaut la peine de parcourir le débogueur et de voir ce qui ne va pas.

5) Sous un utilisateur, cela vous permet de faire quelque chose, sous un autre, ce n'est pas le cas.

  • Paramètres des droits des utilisateurs.
  • Paramètres utilisateur.
  • Vider le cache.

6) Il se connecte depuis un PC, mais pas depuis un autre.

  • Vérifiez dans l'Explorateur pour voir si la base de données est visible - peut-être que le dossier contenant la base de données n'est pas partagé.
  • Vider le cache.
  • Connectez-vous en tant qu'utilisateur différent.

7) Je n’ai rien fait, mais tout s’est cassé pour moi

  • S’ils peuvent vous dire exactement ce qu’ils « n’ont pas fait » et quand, alors vous pouvez utiliser
  • connectez-vous avec les sélections et il est possible de découvrir quel est le problème.
  • Le journal de bord est disponible dans le configurateur :
  • Administration - journal de bord.

    Ou en mode utilisateur - l'emplacement dépend de la configuration.

8) Pas assez de mémoire.

J'ai eu un cas, un client est venu et m'a dit qu'à la clôture du mois, l'erreur « Mémoire insuffisante » apparaissait. J'ai pris ce problème. Je pensais que c'était facile, j'ai d'abord ajouté de la RAM - une erreur. C’était 2 gigaoctets, maintenant c’est 4, mais 1 seconde n’est toujours pas suffisant. J'ai modifié la taille du fichier d'échange - une erreur, la réinstallation du système (Windows 7 installé) n'a donné qu'un résultat temporaire, pendant environ une semaine. J'ai tout essayé. Après un certain temps, une solution a été trouvée.

Solution

Sur l'ordinateur client, exécutez la ligne de commande en tant qu'administrateur et saisissez ce qui suit :

BCDEdit /set augmenter l'utilisateurva xxxx- au lieu de xxxx, écrivez la quantité d'espace d'adressage virtuel en mégaoctets, c'est-à-dire combien de mémoire est nécessaire pour exécuter des applications. La valeur par défaut est 2 Go. En général, les systèmes d'exploitation 32 bits allouent 4 gigaoctets : 2 pour les applications et 2 pour les besoins du système d'exploitation lui-même. J'ai choisi 3000 (c'est-à-dire CDEdit /set raiseuserva 3000 ). Cependant, le système peut être bogué. Surtout si vous disposez de 2 Go de RAM, comme moi. Ceci concerne la famille de systèmes d'exploitation Windows Vista, 7, Windows 2008.

Pour Windows XP\Windows 2003, nous écrivons
/3 Go /userva=xxxx (xxxx en Mo dans la plage 2048 - 3072) dans le fichier boot.ini, valeurs maximales recommandées utilisateur 2900-3030.

9) Les éléments du formulaire se chevauchent et sont mal positionnés.

  • Vider le cache.

10) Erreur SGBD Erreur interne dans le composant dbeng8

  • L'erreur est due aux différences de code entre les différentes versions de la plateforme lorsque les utilisateurs tentent d'utiliser l'option de fichier. Pour la version client-serveur, le contrôle s'effectue au démarrage et travailler avec différentes versions de la plateforme est en principe impossible.

Solution : mise à jour vers la dernière version sur tous les postes de travail.

Si cela ne résout pas le problème, procédez comme suit :

  • Test et réparation

11) Erreur dans la plateforme 8.3.4.428

  • Dans la version 8.3.4.428 de la plateforme 1C:Enterprise, une erreur critique a été découverte lors de la restructuration des données. Cette erreur a été localisée et sera corrigée dans la prochaine version de la plateforme.

12) Conflit de verrouillage lors de l'exécution de la transaction :


Fournisseur Microsoft OLE DB pour SQL Server : impossible de poursuivre l'analyse avec NOLOCK en raison d'un mouvement de données.
HRESULT=80040E14, SQLSrvr : SQLSTATE=42000, état=3, gravité=C, natif=601, ligne=1

"Comment vérifier (restaurer) une base de données sur MS SQL Server à l'aide d'outils serveur
La vérification de l'intégrité logique doit être effectuée à l'aide des outils standards 1C:Enterprise (IS Testing and Correction). Si une telle vérification ne peut pas être effectuée, vous devez vérifier l'intégrité physique de la base de données à l'aide de MS SQL. Pour vérifier l'intégrité à l'aide de MS SQL, vous devez exécuter la commande suivante :
Code:
DBCC CHECKDB ("",REPAIR_REBUILD)
Avant d'exécuter cette commande, vous devez passer la base de données en mode "mono-utilisateur" :
Code:
sp_dboption "","utilisateur unique",true
Lors du fonctionnement de DBCC CHECKDB, des erreurs peuvent être détectées et certaines peuvent être corrigées immédiatement. Si des erreurs persistent, elles ne peuvent apparemment pas être restaurées sans perdre certaines données. Dans ce cas, vous devez exécuter DBCC CHECKDB avec le paramètre REPAIR_ALLOW_DATA_LOSS (il est conseillé de faire une copie des fichiers de la base de données avant de l'exécuter).
Code:
DBCC CHECKDB ("",REPAIR_ALLOW_DATA_LOSS)
Après avoir exécuté DBCC CHECKDB, n'oubliez pas de revenir en mode normal (sortie du mode "single user") :
Code:
sp_dboption "","single user",false" (extrait du site)

Bien sûr, la liste est loin d'être complète, je serai donc heureux si elle est complétée dans les commentaires.

Il existe des situations où, lorsque vous travaillez avec 1C 8.3 ou 8.2, vous obtenez l'erreur « Erreur SGBD : erreur interne dans le composant dbeng8 ». Bien entendu, sa description n’est pas aussi informative que nous le souhaiterions.

Dans ce cas, il est fort probable que la structure du stockage interne des tables dans la base de données de la solution applicative que vous utilisez soit rompue. Ne désespérez pas, l’erreur peut être traitée et si vous suivez tous nos conseils, vous pourrez très probablement la réparer.

Veuillez noter qu'avant de procéder avec les méthodes ci-dessous, Nécessairement. Vous ne devriez pas vous créer de problèmes inutiles.

Dans des cas comme celui-ci, comme pour réparer quoi que ce soit, il est toujours préférable de commencer du simple au complexe. Par conséquent, la première chose à faire est d'installer la dernière version de la plate-forme 1C. Si vous l'utilisez déjà ou, pour une raison quelconque, ne souhaitez pas mettre à jour, vous pouvez simplement remplacer la bibliothèque « dbeng8.dll », en la retirant du répertoire par un autre programme installé, à la fois sur votre PC et sur un autre.

Dans notre cas, il se trouve dans le répertoire « D:\Program Files (x86)\1cv8\8.3.9.2170\bin », puisque c'est ici que la plateforme elle-même est installée.

Test et correction en 1C

Souvent, la méthode de mise à jour de la plateforme n'aide pas toujours, puisque l'erreur réside dans la base de données elle-même. Dans ce cas, avec une très forte probabilité, cela vous aidera.

Utiliser le configurateur

La résolution du problème de cette manière se fait à partir du configurateur. Allez dans le menu "Administration" et sélectionnez "Test et correction...".

Dans le formulaire de paramétrage préliminaire qui apparaît, supprimez les drapeaux des rubriques « Réindexation des tables de l'infobase » et « Recalcul des totaux ». Ces modules complémentaires ne joueront aucun rôle dans la correction de notre erreur, mais ne feront qu'augmenter le temps de traitement des données.

Après avoir cliqué sur le bouton « Exécuter », le programme lancera le processus de test et de correction de la base d'informations, ce qui peut prendre un certain temps. Une fois terminé, un rapport complet vous sera présenté.

Utilitaire "chdbfl.exe"

Cet utilitaire est un analogue du test et de la correction et est destiné aux bases de données d'informations sur les fichiers. Pas besoin de chercher sur Internet où le télécharger. Cet utilitaire est inclus dans la livraison de la plateforme 1C elle-même et se trouve dans le même dossier que la bibliothèque référencée par l'erreur que nous corrigeons.

De plus, vous devez savoir où se trouve la base d'informations dans laquelle vous avez reçu l'erreur. Sélectionnez-le dans la liste des bases d'informations, et tout en bas de la fenêtre, ces informations seront à votre disposition.

Ouvrons-le maintenant lui-même et dans le champ « Nom du fichier DB », sélectionnez le fichier « 1Cv8.1CD » dans le répertoire dont nous venons de découvrir l'adresse.

Nous devons non seulement effectuer des diagnostics, mais également restaurer la fonctionnalité de la base d'informations. A cet égard, dans cette situation, il est nécessaire de positionner le drapeau sur la rubrique « Corriger les erreurs détectées ».

Ces méthodes et quelques autres sont également abordées dans cette vidéo :

Un problème tel qu'une erreur de format de flux se produit assez souvent dans 1C 8.3. Voyons comment corriger cette erreur.

Qu'est-ce qu'une erreur de format de flux dans 1s 8.3 ?

Cela se produit dans les situations suivantes :

  1. Une erreur de format de flux lors du lancement de 1C Enterprise 8.2 ou du configurateur est généralement associée à des problèmes de cache. Cela est généralement dû au fait que le système ne s’arrête pas correctement en raison, par exemple, d’une panne de courant. Il est donc fortement recommandé d'installer des alimentations sans interruption afin de ne pas perdre d'informations importantes. Souvent, l'erreur apparaît lors du démarrage de la base de données après la mise à jour de la configuration.
  2. La deuxième situation concerne la génération d'un rapport, par exemple l'ouverture d'un rapport, la publication d'un document, l'ouverture d'un document, etc. Cela est souvent dû précisément au contenu des informations contenues dans la base de données. La cause de cette erreur est le plus souvent la présence d’informations « cassées » au sein du système.

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

Correction

  1. En règle générale, pour résoudre ce problème, il suffit de nettoyer les fichiers temporaires du système. .
  2. Si cela ne résout pas le problème, mais que vous pouvez accéder au configurateur, exécutez .
  3. Si vous n'avez pas accès au configurateur et que la base de données est en test, utilisez-la, qui se trouve dans le dossier du programme.
  4. Si les méthodes ci-dessus ne vous aident pas, mais que le mode 1C Enterprise démarre, téléchargez les données dans une nouvelle base de données à l'aide du traitement « ». Cependant, cela peut entraîner une perte de données.
  5. Mise à jour. Une autre raison peut être la présence de sessions utilisateur actives avec différentes versions de la partie client de la plateforme 1C. C'est-à-dire, par exemple, qu'un utilisateur avec la plateforme 1C 8.3.5.1517 travaille dans la base de données et qu'un autre essaie de se connecter, avec la version 8.3.5.1444.

Si cela ne résout pas le problème, il existe des moyens plus sophistiqués pour résoudre ce problème. Par exemple, en utilisant un éditeur HEX. Si vous avez besoin de l'aide qualifiée des programmeurs 1C, contactez-nous ! Détails sur la page

Au début d'un contrat juridique, notamment dans le domaine informatique, il y a généralement une section intitulée Conditions. Il explique ce que signifie ou inclut tel ou tel mot informatique.

Mais en plus des mots très complexes comme serveur ou site Web, des mots ordinaires et bien connus des programmeurs peuvent aussi signifier quelque chose de complètement différent. Par exemple des erreurs. Dans un sens universel, ce mot signifie une mauvaise action. Une chose dont son auteur pourrait même avoir honte.

Au sens de la programmation, le mot erreur a probablement deux définitions.

Que signifie le terme « erreur » en programmation et en 1C

Une erreur est un programme qui se comporte différemment que prévu. Chaque ordinateur est un ensemble unique de programmes et de matériel, différent d'un autre ordinateur.

La standardisation du matériel et des programmes nous permet de supposer que les programmes fonctionneront de la même manière sur chaque ordinateur, mais en fait, certaines circonstances peuvent toujours survenir lorsque l'auteur du programme sera surpris de savoir pourquoi le programme fonctionne exactement de cette façon et pas autrement.

Cela peut aussi probablement inclure les situations dans lesquelles le programme fait quelque chose de mal parce que le programmeur a oublié quelque chose ou n'y a pas pensé.

Une erreur est un message spécial provenant d'un programme concernant les circonstances actuelles dans lesquelles le programme ne peut pas faire ce qu'il était censé faire. Cela peut sembler être la même chose, mais ce n'est pas le cas.

Par exemple, le programmeur avait prévu que l'utilisateur ouvrirait d'abord le fichier, puis que le programme ferait telle ou telle chose. Cependant, lorsque le programme a été copié sur l’ordinateur de l’utilisateur, celui-ci a oublié d’ouvrir le fichier. Ou j'ai essayé de l'ouvrir, mais le fichier s'est avéré incorrect ou le disque dur était cassé.
Et le programme dit à l'utilisateur : Hé, il y a une erreur ! Je ne peux pas faire ce que je devrais.

Les erreurs 1C ont plusieurs niveaux - premièrement, les messages d'erreur 1C peuvent appartenir, qui signalent l'impossibilité d'effectuer certaines actions qu'il aurait dû effectuer en raison des circonstances actuelles.

Le deuxième niveau concerne les erreurs 1C dans un programme en langage 1C. Oui, la plate-forme exécute avec succès un programme écrit par un programmeur 1C, mais le programme peut être mal écrit ou ne peut pas non plus être exécuté dans les circonstances actuelles (sur cet ordinateur, avec de telles actions d'un utilisateur particulier, etc.).

Le troisième niveau concerne les erreurs 1C dans les données. Les données de la base de données sont interconnectées les unes aux autres. Cependant, il peut arriver que les données soient corrompues. Par exemple, l'un des formulaires ne comporte pas suffisamment de contrôles pour empêcher un utilisateur particulièrement créatif de saisir quelque chose de manière incorrecte. De plus, le programme peut ne pas fonctionner correctement, car l'algorithme ne s'attendait pas à ce que quelqu'un y entre.

Message d'erreur 1C

1C signale une erreur lors de l'exécution d'un programme en langage 1C à l'aide d'une fenêtre standard avec le texte de l'erreur 1C et les boutons OK et Plus.

De plus, le secret ici est que cette fenêtre n'affiche qu'un court message d'erreur 1C, qui souvent ne dit rien au programmeur.

Pour voir tous les détails, cliquez sur le bouton Détails. Même la ligne de programme dans laquelle l'erreur 1C s'est produite y sera affichée. Vous pouvez également accéder directement à cette ligne dans le configurateur.

Mais les utilisateurs ne le savent pas... Et ils envoient toujours une capture d'écran de cette première fenêtre. S'ils l'envoient :)

Lancer une exception

Ainsi, nous considérons une erreur 1C dans la programmation comme un moyen/opportunité pour un programme d'informer l'utilisateur qu'il ne peut pas faire quelque chose.

Exemple. Vous devez ouvrir le fichier. Mais lors de l'ouverture, des erreurs 1C sont possibles - par exemple, l'utilisateur n'a pas accès pour lire le fichier. On peut écrire ainsi :


Si Fichier = Faux Alors
Rapport("Échec de l'ouverture du fichier");
Sinon
//le programme continue, on fait quelque chose avec le fichier
fin si;

Dans cet exemple, nous avons pris en compte le fait que le fichier ne peut pas être ouvert à l'aide de la construction « If ».

Cependant, cet exemple présente des inconvénients évidents :

  • Il peut y avoir de nombreuses options de ce type (le fichier ne s'ouvrira pas, le fichier ne sera pas lu jusqu'au bout, l'utilisateur est ivre, l'électricité est coupée..)
  • Il peut y avoir des options non prises en compte auxquelles le programmeur n'a pas pensé.

Par conséquent, en programmation, il est courant d'utiliser une technique appelée « lancer une exception », c'est-à-dire permettre qu'une erreur 1C se produise.

Le programme prétend que le fichier s'ouvrira quand même. Aucun « Si » n’est écrit. Si quelque chose ne va pas, le programme signalera en fait une erreur 1C - son exécution sera interrompue.

1C lui-même n'ouvre pas le fichier - il appelle la commande API Windows. Windows est également écrit en utilisant cette technique. Vous pouvez donc imaginer une chaîne d'interruptions d'exécution commençant par Windows :

  • Langage 1C - commande pour ouvrir un fichier
  • Plateforme 1C - commande pour ouvrir un fichier
  • API Windows - commande d'ouverture de fichier
  • Programme d'assemblage - commande pour ouvrir un fichier
  • Oops! Le fichier ne s'ouvre pas !
  • Le programme assembleur a été interrompu !
  • Fonction API Windows cassée !
  • Exécution du programme Plateforme 1C interrompue !
  • Le programme en langage 1C a été interrompu !
  • L'utilisateur voit le message.

Question : qui affiche alors le message d'erreur 1C ? D'où est ce que ça vient?

Capture et gestion des exceptions

Cela nous amène à l'astuce suivante : détecter les exceptions générées lors de l'exécution de cette chaîne.

Les exceptions se déplacent du niveau inférieur d’exécution vers le haut de la chaîne. Si le dernier niveau n’a pas géré l’exception, alors le niveau précédent le fera.

Exemple. Traitons l'exception en langage 1C :
Tentative
Fichier = OpenFile(FileName);
String = Fichier.Read();
Exception
Rapport("Le fichier n'a pas pu être ouvert : n'existe pas ou n'a pas de droits d'accès");
FinTentative ;

Dans cet exemple, nous avons traité nous-mêmes l'exception (c'est-à-dire une situation exceptionnelle ou une erreur 1C). Ainsi, c'est nous qui informons l'utilisateur d'une « erreur » survenue : l'impossibilité d'ouvrir le fichier.

Lorsque nous faisons cela nous-mêmes, nous ne pouvons rien dire à l'utilisateur, mais simplement suivre une option différente pour exécuter le programme.

Il est facile de voir que cette méthode peut également être utilisée dans les cas où « une » erreur 1C peut se produire dans une partie du code. Nous le « capturons » et le traitons ou le signalons à l’utilisateur.

Que se passera-t-il si nous n'interceptons pas et ne traitons pas l'erreur 1C à notre niveau « supérieur » ? Ensuite, le niveau suivant ci-dessous le signalera - la plate-forme 1C. Nous venons de parler de la façon dont elle fait cela et avons regardé la capture d'écran.

Que se passe-t-il si la plateforme ne gère pas cela ? C'est vrai – cela fonctionnera généralement à un niveau inférieur – Windows. Dans ce cas, le programme 1C « plantera » et Windows signalera que le programme a effectué une opération non valide et sera fermé.

Que se passe-t-il si Windows ne gère pas cela ? Vous l'avez probablement vu : votre ordinateur va se bloquer ou redémarrer.

Interceptions et transactions imbriquées

Selon vous, quels messages l'utilisateur verra lors de l'exécution de cet exemple ?

Tentative
Tentative
f = 1/0 ;
Exception
Rapport("Erreur spécifique");
FinTentative ;
Exception
Rapport("Erreur générale");
FinTentative ;

Droite! Le gestionnaire interne se déclenchera et signalera une « erreur spécifique », mais le gestionnaire externe ne fonctionnera pas.

Cependant, du point de vue du programme, une erreur 1C s'est produite ici, bien qu'elle ait été résolue. Quelque part dans son cerveau, la plateforme s’est souvenue qu’il y avait une erreur 1C.

Cela a des implications pour la réalisation des transactions. Une transaction est constituée de plusieurs actions sur les données d'une base de données qui doivent être effectuées uniquement ensemble. Comme nous le comprenons, les erreurs 1C peuvent être la raison de leur incapacité à les compléter ensemble. Il existe donc le mécanisme suivant :

DémarrerTransaction();
//créé le répertoire 1, mais en fait il n'a pas été écrit dans la base de données
Ref1.Write();
//créé le répertoire 2, mais en fait il n'a pas été écrit dans la base de données
Ref2.Write();
CommitTransaction();
//cette commande a écrit dans la base de données tout ce qui a été fait en commençant par « Démarrer la transaction »

La fonction CommitTransaction() ne peut être exécutée que si aucune erreur 1C ne s'est produite depuis l'appel StartTransaction().

Si, lors de l'écriture d'un tel code, vous comprenez que cette ligne de code peut contenir une erreur 1C, vous pouvez définir son traitement à l'aide de Tentative/Exception. Cependant, dans ce cas, la plateforme tiendra toujours compte du fait qu'une erreur 1C s'est produite et n'enregistrera pas la transaction ni n'écrira de données dans la base de données.

Erreurs 1C involontaires

Ainsi, dans le programme 1C, le programmeur peut commettre une erreur 1C. Dans ce cas, la plateforme 1C le signalera.

Si vous ne comprenez pas pourquoi et quand une telle erreur 1C se produit, vous pouvez utiliser Tentative/Exception pour gérer l'erreur 1C.

De plus, Try/Exception peut être utilisé dans le cas où vous souhaitez créer une section garantie sans erreur du programme. Vous pouvez être sûr que même si une erreur 1C se produit, vous la détecterez et la gérerez d'une manière spéciale.

Erreurs intentionnelles 1C

Vous pouvez prétendre dans le texte du programme que le fichier s'ouvrira toujours et que le numéro sera toujours divisé. Mais utilisez Tentative/Exception comme moyen de basculer le programme vers une autre option de correctif au cas où cela se produirait. Ou informez simplement l'utilisateur de l'erreur 1C.

Propre appel d'erreur 1C

Vous pouvez créer vous-même des fonctions qui, si elles ne peuvent pas être exécutées, peuvent le signaler en lançant une exception.

Vous pouvez procéder ainsi :

Fonction DoSomething (Paramètre)
Si paramètre = non défini alors
Raise Exception "Une erreur s'est produite dans la fonction DoSomething. Paramètre non spécifié" ;
fin si;
FinFonction

À quoi ça sert? Dans le cas où vous créez une fonction qui sera utilisée dans de nombreux endroits, et peut-être que d'autres l'utiliseront aussi, c'est une belle façon de faire d'une pierre plusieurs coups :

  • Éliminez l'erreur 1C
  • Signaler une erreur 1C à un niveau supérieur (au programme qui a appelé cette fonction)
  • Signalez non seulement l'erreur 1C, mais également le texte/détails
  • Il est garanti d'interrompre l'exécution non seulement de sa propre fonction, mais également de tous les niveaux, si le programmeur qui les a écrits ne pensait pas qu'une telle erreur 1C pouvait exister et ne la traitait pas.

Des moyens plus corrects de signaler les erreurs 1C

Généralement, lorsque vous devez communiquer quelque chose à l'utilisateur, .

Cependant, dans les configurations standards, telles que Comptabilité, Trade Management, SCP, il existe une fonction particulière :
Usage général.ReportError("Texte");

Ses avantages :

  • La forme du message dépend du client exécutant
  • Enregistre les informations dans le journal de bord
  • Dans certaines configurations, une forme plus belle de message d'erreur 1C a été implémentée.

Erreur d'analyse

Lorsque la plateforme 1C est en cours d'exécution, le journal d'enregistrement fonctionne. En plus des actions de l'utilisateur, il stocke également des informations sur les erreurs 1C survenues lors du fonctionnement de la plate-forme 1C.

Dans le configurateur, sélectionnez l'élément de menu Administration/Journal.

Cliquez sur le bouton Sélectionner (comme sur l'image). Définissez la sélection d'événements uniquement pour les erreurs 1C.

Le journal affichera une liste des erreurs survenues. Cliquez sur une ligne pour afficher un message spécifique plus en détail.

De telles erreurs peuvent avoir de nombreuses raisons. La première chose à faire si de telles erreurs se produisent est de déterminer la source du problème.

    Clarifiez les circonstances et le moment de l'erreur : un dysfonctionnement non reproductible peut être simplement un accident ou un problème.

    Vérifiez le fonctionnement du programme depuis un autre ordinateur et depuis un autre compte utilisateur.

    Vérifiez les versions de la plate-forme et de la configuration : la version actuelle correspond-elle à la dernière version officielle ?

À l'avenir, si vous ne parvenez pas à résoudre vous-même l'erreur, vous devrez expliquer la nature de son apparition à un spécialiste et ces questions se poseront donc dans tous les cas.

Un certain nombre d'erreurs se produisent lors de l'utilisation de logiciels sans licence (aussi bien les produits « 1°C » que, par exemple, le système d'exploitation Windows). Un exemple typique dans le cas d'une plateforme 1C « en panne » : un patch qui cracke une version spécifique de la plateforme cesse de fonctionner après l'installation d'une nouvelle version de la plateforme ; la connexion à la base de données dans ce cas entraînera le message « Pas de gratuité ». permis trouvé. »

Important! N'oubliez pas de sauvegarder vos bases de données avant de modifier quoi que ce soit dans la configuration. Si la base de données ne peut pas être ouverte à l'aide du configurateur, vous devez copier le dossier contenant la base de données à l'aide du système d'exploitation, puis effectuer toutes les opérations avec cette copie.

Les versions de configuration doivent être actuelles (ceci est particulièrement important dans le cas de configurations sur la base desquelles le reporting réglementé est créé). La mise à jour vers la version actuelle sera la première étape de tous les spécialistes du développement sans exception, si vous les contactez. Après avoir vérifié la pertinence des versions de configuration, vous devez vérifier la pertinence de la version de la plateforme (ici vous devez prendre en compte les recommandations 1C : toutes les versions de configuration ne correspondent pas aux versions de la plateforme).

Erreur Méthodes de correction

La base de données ne s'ouvre pas

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (cash) : supprimez la base de données de la liste et reconnectez-la.

    Connectez-vous à la base de données en utilisant un autre compte.

Rien ne fonctionne sans raison apparente

    Mise à jour de la plateforme.

    Recherchez la cause de l'échec dans le journal.

Vider la base de données au démarrage

    Désactivation de l'accélération matérielle de la carte vidéo à l'aide de Windows, redémarrage du système.

La base de données s'ouvre dans le configurateur, mais pas en mode utilisateur

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (en espèces).

    Connectez-vous à la base de données depuis un autre compte (et/ou depuis un compte administrateur).

    Connexion à la base de données depuis un autre ordinateur (pour éliminer un dysfonctionnement général de l'actuel).

    Test de l'intégrité physique de la base de données à l'aide de l'utilitaire « chdbfl » (dossier C:\Program Files (x86)\1cv8\8.x.x.xxx\bin\chdbfl.exe) ou, dans le cas d'une base de données SQL, test à l'aide de SQL outils.

    Test et correction de la sécurité des informations à l'aide du configurateur.

Le programme ouvre le code du configurateur sans avertissement

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (en espèces).

    Vérification du code dans un débogueur.

En règle générale, cette situation est due à des erreurs dans le code modifié, le plus souvent dans le cas de configurations non standard.

Le programme fonctionne différemment pour différents utilisateurs

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (en espèces).

    Configuration des droits de groupe.

    Configuration des droits des utilisateurs.

Les blocs de formulaire ne s'affichent pas correctement

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (en espèces).

    Connectez-vous à la base de données depuis un autre compte (et/ou depuis un compte administrateur).

    Connexion à la base de données depuis un autre ordinateur (pour éliminer un dysfonctionnement général de l'actuel).

Le programme ne fonctionne pas sur certains ordinateurs d'un réseau fonctionnel, mais fonctionne sur d'autres

    Vérification des droits réseau de cet ordinateur (à l'aide des outils Windows).

    Mise à jour de la plateforme. Vous devez notamment vérifier la conformité des versions de configuration et des plateformes au sein du réseau.

    Effacement des fichiers temporaires (en espèces).

    Connectez-vous à la base de données depuis un autre compte (et/ou depuis un compte administrateur).

Pas assez de mémoire

    Mise à jour de la plateforme.

    Effacement des fichiers temporaires (en espèces).

    Connectez-vous à la base de données depuis un autre compte (et/ou depuis un compte administrateur).

    Connexion à la base de données depuis un autre ordinateur (pour éliminer un dysfonctionnement général de l'actuel).

    Optimisation des requêtes problématiques.

    Extension de mémoire matérielle.

    Augmenter la taille du fichier d'échange.

    Gestion de la mémoire allouée via la ligne de commande Windows. Ligne : « bcdedit /set raiseuserva 3072 », où 3072 est la taille de la mémoire d'adresse souhaitée.

Erreur SGBD, erreur de composant dbeng8 interne

    Mise à jour de la plateforme sur tous les ordinateurs du réseau.

    Test de l'intégrité physique de la base de données à l'aide de l'utilitaire "chdbfl"yu.

Cette erreur est typique des réseaux sans serveur 1C et est associée à des différences dans le code des différentes versions de la plateforme sur différents points d'accès.

gastrogourou 2017