Moment dans le temps et limite, objectif, exemples d’utilisation. Sorties de cette situation

Pour les implémenteurs qui travaillent avec des configurations standards ou avec leurs propres configurations - et ceux qui se préparent à la certification chez 1C : Spécialiste de plate-forme.

Dans cet article, nous examinerons :

  • Comment utiliser correctement les verrous gérés pour le traitement opérationnel et non opérationnel des documents
  • à quoi cela peut-il conduire pas de blocage
  • comment éviter de commettre des erreurs qui ne sont pas immédiatement découvertes et qui peuvent avoir de graves conséquences :)

Temps de lecture : 20 minutes.

Ainsi, deux méthodes pour contrôler les soldes dans 1C :Enterprise 8.3

Commençons par le fait que les désignations « ancienne méthode » et « nouvelle méthode » sont assez arbitraires. En fait, si une « nouvelle technique » est utilisée depuis 2010, elle n’est plus très nouvelle :)

Mais nous sommes une fois de plus obligés de nous arrêter ici, car il est nécessaire de faire la distinction entre ces approches et cela est essentiel.

L'« ancienne méthode » est une approche de contrôle des résidus utilisée depuis l'époque de 1C:Enterprise 8.0.

Depuis 2010, avec le développement de la plateforme et l'ajout de nouvelles fonctionnalités avec 1C:Enterprise 8.2, une « nouvelle méthodologie » a été appliquée ( cependant - pas partout).

Quelle est la différence?

La différence fondamentale réside dans le moment du contrôle des résidus :

  • Dans « l’ancienne » méthode, les balances étaient contrôlées AVANT d’enregistrer les mouvements dans les registres.
    Tout d'abord, nous vérifions les soldes ; si les soldes ne sont « pas suffisants » (des soldes négatifs apparaîtront), nous n'enregistrerons pas le document.
  • Dans la « nouvelle » méthode, le contrôle s’effectue APRÈS l’enregistrement des mouvements, c’est-à-dire après coup.
    Si, après l'exécution, des soldes négatifs se forment, vous devez « annuler » la transaction, c'est-à-dire annuler le document.

Les avantages et les inconvénients de la nouvelle technique sont discutés en détail dans un article séparé, nous nous limiterons donc à la thèse générale - la nouvelle technique est plus optimale en termes de performances et d'évolutivité.

Ok, donc l'ancienne technique appartient au passé et c'est le destin d'UT 10.3 ?

Non, ce n'est pas tout à fait vrai.

La nouvelle méthodologie peut être utilisée lorsque, lors de la radiation de marchandises toutes les données nécessaires sont dans le document et n'ont pas besoin d'être calculées.

Par exemple, lorsque le montant à radier est connu grâce à la partie tabulaire du document. Le problème se pose avec le prix de revient, car il doit être calculé avant d'écrire dans le registre, c'est-à-dire d'exécuter une requête dans la base de données.

Par conséquent, la nouvelle méthodologie peut être appliquée avec succès si les données sur la quantité et le coût sont stockées dans des registres séparés.

Par exemple, comme ceci :

Il existe cependant des configurations où la quantité et le coût sont pris en compte sur le même registre. Et là c'est justifié l'ancienne méthode de contrôle des résidus fonctionne toujours!

Voici un exemple de registre pour la quantité et le coût :

Qu'en est-il des configurations typiques ? C'est juste une nouvelle technique, non ?

Pas toujours!

Par exemple, dans « 1C : Trade Management 11.3 » il y a 2 registres :

Lors du dépôt des documents d'expédition, le registre « Coût des marchandises » n'est pas du tout renseigné. Les données entrent dans ce registre uniquement lors de l'exécution d'opérations de routine pour clôturer le mois.

UT 11 utilise une nouvelle technique, puisque toutes les données de comptabilisation des documents peuvent être obtenues sans accéder aux registres contrôlés.

Quant à « 1C : Comptabilité », la quantité et le coût y sont stockés dans un seul registre service comptable, sur les comptes comptables correspondants.

C'est pourquoi BP 3.0 utilise l'ancienne technique.

Veuillez noter que la comptabilité quantitative et analytique dans UT 11 est réalisée avec des analyses différentes. Par exemple, le coût est également géré par organisation, division, responsable, type d'activité, TVA, etc.

Dans le cadre de cet article, nous analyserons le blocage des anciennes et des nouvelles méthodes de contrôle des soldes.

À propos du traitement rapide des documents

Il existe souvent des idées fausses sur cette simple question.

On pense parfois que la mise en œuvre opérationnelle consiste à contrôler les résidus à l'aide d'une nouvelle méthode. Ce n'est pas vrai, d'après le mot « du tout ».

Les performances opérationnelles peuvent être analysées lors de la surveillance des résidus, mais ce n'est pas nécessaire.

Mise en œuvre opérationnelle– c’est la capacité du document à enregistrer les événements émergents ici et maintenant, c’est-à-dire en temps réel.

Il est configuré à l'aide d'une propriété de document spéciale :

Que signifie « s’inscrire ici et maintenant » ? La plateforme de documents traités rapidement effectue un certain nombre d'actions :

  • Les documents publiés aujourd'hui se voient attribuer l'heure actuelle
  • Si deux documents sont affichés simultanément, chacun aura sa propre heure (c'est-à-dire que le système espacera les documents en secondes différentes)
  • Les documents ne peuvent pas être publiés à une date ultérieure.

Mais l'essentiel est que le système transmette un signe d'efficacité document à traiter :

Pour les documents comptabilisés rapidement, vous pouvez omettre de préciser le paramètre dans la demande, les soldes courants seront obtenus au 31 décembre 3999 :

Les soldes actuels sont stockés dans le système et sont obtenus le plus rapidement possible (les soldes pour d'autres dates sont dans la plupart des cas obtenus par calcul).

Ainsi la mise en œuvre opérationnelle peut être adoptée pour les anciennes et les nouvelles méthodes de contrôle des résidus.

Fait intéressant.

En UT 11, il est interdit d'effectuer dans les plus brefs délais les documents radiant la nomenclature. Par exemple, il s'agit de documents « Ventes de biens et services », « Assemblage de marchandises », « Mouvement de marchandises », « Consommation intérieure de biens » et autres.

Pourquoi est-ce fait ?

Dans le système, le contrôle du solde est toujours effectué au moment actuel (le paramètre Période n'est pas spécifié dans la demande). Et le manque d'exécution opérationnelle vous permet de saisir des documents à l'avenir, une telle tâche est souvent demandée par les clients.

Contrôle des soldes selon une nouvelle méthode - sans blocage

Considérons brièvement l'algorithme de contrôle des soldes lors de la réalisation du document « Ventes de biens et services » à l'aide d'une configuration de modèle.

Il existe deux registres :

  • Soldes disponibles – pour la comptabilité quantitative
  • Coût des marchandises – pour la comptabilité analytique

Pour contrôler les soldes produits, il suffit de travailler avec le registre « Soldes libres ».

Le code de traitement de la publication ressemblera à ceci :

Demande = Nouvelle demande ;


#Zone Zone1
Query.TemporaryTableManager = NewTemporaryTableManager ;
#EndArea


#Zone Zone2
Demande.Texte =
"CHOISIR

|Placer un document de marchandises
|DE
|OÙ
|
|GROUPER PAR
|
|INDEX PAR
| Nomenclature
|;

|SÉLECTIONNER
| &Date AS Période,
| VALEUR(Type de mouvementAccumulation.Expense) AS Type de mouvement,
| ProduitsDocument.Quantité AS Quantité
|DE
";
Query.SetParameter("Date", Date);
#EndArea

// 4. Enregistrement des mouvements dans la base de données
#Zone Zone4
Mouvements.Record();
#EndArea


#RégionRégion5
Demande.Texte =
"CHOISIR
| -FreeRemainingRemaining.QuantityRemaining AS Déficit
|DE
| ProduitsDocument COMMENT FAIRE ProduitsDocument
| INNER JOIN RegisterAccumulations.FreeRemains.Remains(
| &Moment de temps,
| Nomenclature B
| (CHOISIR
| ProduitsDocument.Nomenclature AS Nomenclature
| DEPUIS
| Produits du Document AS Produits du Document)) AS Libre Restant Restant
| Produits logicielsDocument.Nomenclature = AvailableRemainingRemaining.Nomenclature
|OÙ
| DisponibleRemainingRemaining.QuantityRemaining< 0";
#EndArea


#RégionRégion6
Moment de contrôle restant =
?(Mode = Mode de conservation des documents. Opérationnel,
Indéfini,
Nouvelle limite (TimePoint (), BoundaryView.Including));
Request.SetParameter("Moment de temps", Moment de contrôle restant);
RequestResult = Request.Execute();
#EndArea


#RégionRégion7
Si ce n'est PAS le résultat de la requête.Empty() alors
Refuser = Vrai ;
ErrorSelect = QueryResult.Select();
Tandis que la boucle SelectErrors.Next()
Message.Text = "Pas assez de produit en quantité : "+SelectionErrors.Shortage;
Message.Field = "Produits["+(ErrorSelection.LineNumber-1)+"].Quantité";
Message.Message();
Fin du cycle ;
fin si;
#EndArea


#Région Région8
Si échec alors
Retour;
fin si;
#EndArea

Fin de la procédure

Considérons les points clés de l'algorithme de contrôle résiduel.

1. Initialisation du gestionnaire de tables temporaire

Le gestionnaire sera nécessaire pour que la table temporaire créée dans la requête soit disponible dans les requêtes suivantes.

Ainsi, les données de la partie tabulaire sont obtenues une seule fois, enregistrées dans un tableau temporaire puis utilisées à plusieurs reprises.

2. Requête regroupant des données tabulaires

La requête sélectionne les données groupées dans la section tabulaire.

Veuillez noter que le numéro de ligne du document est également sélectionné - il sera nécessaire pour contextualiser le message d'erreur. Pour le numéro de ligne, la fonction d'agrégation MINIMUM() est utilisée - c'est-à-dire que le message sera lié à la première ligne où apparaît la nomenclature spécifiée.

La première requête du lot crée une table temporaire. Dans la deuxième requête, les données de la table temporaire sont sélectionnées et 2 champs requis pour chaque entrée de registre sont ajoutés : Période et Type de mouvement.

Les avantages de cette approche :

  • Il n'est pas nécessaire d'effectuer un pré-nettoyage, c'est-à-dire d'utiliser la méthode Clear()
  • Il n'est pas nécessaire d'organiser une boucle basée sur la sélection ou la partie tabulaire.

D'ailleurs, une approche similaire est utilisée dans les configurations standards, notamment dans UT 11 et BP 3.0.

4. Enregistrement des mouvements dans la base de données

L'enregistrement peut être effectué avec une seule commande (au lieu de deux) - Movements.FreeRemains.Record().

Et dans notre cas, lorsqu’un registre est écrit, il n’y aura aucune différence.

Mais cette approche est plus universelle :

  • Tout d'abord, définissez l'indicateur d'écriture pour les ensembles d'enregistrements de registre requis.
  • Appelez ensuite la méthode Write() de la collection Movement, qui écrit tous les ensembles avec l'indicateur Write défini dans la base de données.

Après avoir exécuté la commande « Movements.Record() », l'indicateur d'enregistrement pour tous les ensembles sera réinitialisé sur False.

Vous devez également vous rappeler qu'à la fin de la transaction (après le post-traitement), le système écrira automatiquement dans la base de données uniquement les ensembles d'enregistrements pour lesquels l'indicateur d'écriture est défini sur True.

Les solutions typiques utilisent un schéma similaire pour enregistrer les mouvements. Pourquoi?

La méthode Write() de la collection Movement écrit des ensembles d'enregistrements dans la même séquence, même pour des documents différents.

L'enregistrement manuel des mouvements peut entraîner des problèmes.

Donnons un exemple.

Si vous écrivez dans le document « Mise en œuvre » comme ceci :

Movements.FreeRemainders.Write();
...
Mouvements.Cost of Goods.Write();

Et dans le document « Mouvement des marchandises » modifiez l'ordre :

Mouvements. Coût des articles.Write();
...
Mouvements. FreeRemainings.Write();

Cela peut conduire à un blocage des documents sur des ensembles d'éléments qui se croisent.

L'approche d'enregistrement de mouvement ci-dessus peut être utilisée si la valeur d'enregistrement de mouvement appropriée est spécifiée dans les propriétés du document :

5. Requête recevant des soldes négatifs

La demande sélectionne les soldes négatifs par poste du document.

Un solde négatif est une pénurie (pénurie) d'un produit.

La connexion aux éléments du document est effectuée uniquement pour obtenir le numéro de ligne.

Si nous n'avions pas prévu de lier les messages aux champs du document, la requête pourrait être grandement simplifiée : les données seraient obtenues à partir d'une table (le reste du registre).

6. Déterminer le moment où contrôler les résidus

C’est là que l’exécution opérationnelle s’est avérée utile.

Si le document est exécuté rapidement, le moment de réception des soldes est Indéterminé, ce qui signifie recevoir les soldes courants.

S'il s'agit d'une transaction non opérationnelle, nous obtenons alors un moment « après » le document - pour prendre en compte les mouvements qui viennent d'être effectués.

Rappelons que l’obtention des bilans courants est une opération rapide par rapport à l’obtention de bilans à un moment arbitraire.

C’est précisément l’avantage de documents exécutés rapidement.

7. Si la demande n'est pas vide, cela signifie que des soldes négatifs se sont formés

Dans la boucle, on parcourt tous les restes négatifs et on affiche un message attaché aux lignes de la partie tabulaire.

Voici à quoi ressemblera le message de diagnostic :

8. S'il y a des erreurs, revenez du gestionnaire d'événements

S'il y a au moins une erreur, on sort de la procédure.

Puisqu'il ne sert à rien de poursuivre la transaction, la transaction ne sera de toute façon pas enregistrée (et nous développerons ensuite un code pour radier les lots).

Mise en place d'amortissements de coûts par lots

Une fois la vérification des soldes réussie, vous pouvez commencer à radier les lots.

Le code d'annulation par FIFO sera le suivant :

// I. Analyse du décalage de la date du document


ET PAS ThisObject.ThisNew()
Et cet objet. Réalisé ensuite

Demande = Nouvelle demande ;
Demande.Texte =
"CHOISIR
| Document.Date AS Date
|DE
|OÙ

RequestResult = Request.Execute();
SelectDocument.Next();

Sinon
Mensonge);
fin si;

Fin de la procédure

Procédure lors de l'enregistrement (refus)

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward",
CetObjet.Date>


fin si;

Fin de la procédure

Procédure de traitement (échec, mode)

Demande = Nouvelle demande ;

// 1. Initialisation du gestionnaire de tables temporaires
#Zone Zone1
...
#EndArea

// 2. Requête des données de la table de regroupement
#Zone Zone2
...
#EndArea

// 4. Enregistrement des mouvements dans la base de données
#Zone Zone4
...
#EndArea

// 5. Requête recevant des soldes négatifs
#RégionRégion5
...
#EndArea

// 6. Détermination du moment où contrôler les soldes
#RégionRégion6
...
#EndArea

// 7. Si la demande n'est pas vide, alors des soldes négatifs se sont formés
#RégionRégion7
...
#EndArea

// 8. S'il y a des erreurs, retournez du gestionnaire d'événements
#Région Région8
...
#EndArea

// II. Préparer les jeux de dossiers pour le registre « Coût des marchandises »
#Zone ZoneII

Mouvements.Record();
fin si;
Mouvements.Cost of Goods.Record = True ;
#EndArea

//III. Demander la réception des soldes de lots pour annulation à l'aide du FIFO
#AreaAreaIII
Demande.Texte =
"CHOISIR
| ProduitsDocument.Nomenclature AS Nomenclature,
| ProductsDocument.Numéro de ligne AS Numéro de ligne,

| Reste.Parti AS Party
|DE
| ProduitsDocument COMMENT FAIRE ProduitsDocument
| &Moment de temps,
| Nomenclature B
| (CHOISIR
| DEPUIS

|COMMANDER PAR
|RÉSULTATS
| MAXIMUM(Quantité),
| SOMME (Quantité Restante)
|logiciel
| Nomenclature";
RequestResult = Request.Execute();
#EndArea

// IV. Cycle par nomenclature de documents
#AreaAreaIV

// V. Obtenez le montant à amortir
//VI. Cycle batch par FIFO
While SelectionBatch.Next() et RemainingWrite>0 boucle
// VII. Vérifier le solde nul
Si SampleBatch.QuantityRemaining=0 Alors
Continuer;
fin si;
Mouvement.Période = Date ;

// VIII. Calcul de la quantité et du montant à amortir

//IX. Nous réduirons le montant à amortir
Fin du cycle ;
Fin du cycle ;
#EndArea

Fin de la procédure

Regardons les points clés de l'algorithme d'annulation des lots en FIFO.

I. Analyse du décalage de la date du document

Ici, nous comprenons si la date du document publié avance. Ces informations seront utiles ci-dessous lors du nettoyage des mouvements.

Pour analyser le décalage de date du document, 2 événements sont nécessaires :

  • Avant l'enregistrement– pour obtenir l’ancienne date du document et vérifier le mode de comptabilisation du document
  • Lors de l'enregistrement– pour obtenir une nouvelle date de document

Nous transférons des données entre les événements via une collection spéciale de l'objet – « Propriétés supplémentaires ». Il existe tant que la version actuelle de l'objet est en mémoire, c'est-à-dire qu'il est disponible pour tous les événements lors de l'exécution.

Une technique similaire est utilisée dans la norme « 1C : Comptabilité 8 ». Mais on utilise un événement « Avant l'enregistrement ».

Pourquoi n'est-il pas nécessaire d'utiliser « Sur enregistrement » dans le BP ?

C'est simple : les documents d'expédition ne peuvent pas être traités rapidement par le service comptable. Cela signifie que l'heure du document n'acceptera pas de cachet opérationnel (si le document est réaffiché le jour en cours), donc l'ancienne et la nouvelle date du document peuvent être obtenues dans l'événement « Avant l'enregistrement ».

II. Préparer les jeux de dossiers pour le registre « Coût des marchandises »

Le mode de suppression de mouvement est paramétré pour le document – ​​​​​​« Lorsque la comptabilisation est annulée » :

Ainsi, il est possible que lors de la republication, nous puissions prendre en compte les mouvements du document lui-même. MAIS cela ne se produira que si la date du document est décalée. Autrement dit, il est logique d'effacer les mouvements uniquement lorsque la date du document est décalée.

Voici un exemple :

  • Le solde des moniteurs LG au moment de la rédaction des documents est de 10 pièces.
  • Un document est publié qui radie 8 pièces.
  • Dans le même document, le temps est augmenté d’1 minute, répétons

Si les anciens mouvements ne sont pas supprimés, le système signalera un manque de 6 moniteurs, puisque les mouvements de documents actuels ont déjà radié 8 des 10 moniteurs disponibles.

Note. Parfois, il existe un conseil : supprimer les mouvements uniquement pendant l'opération.

Mais c’est faux : ils ne prendront pas en compte la situation de modification des documents « non opérationnels » (ceux d’hier et d’avant).

Autrement dit, le problème du « manque de 6 moniteurs » (voir ci-dessus) ne sera dans ce cas résolu que pour les documents modifiés aujourd'hui.

III. Demande qui reçoit les soldes de lots pour annulation à l'aide de FIFO

Dans la demande, nous nous référons aux soldes par lot, et en même temps nous superposons les totaux par poste.

Au niveau total, la quantité du document est obtenue - MAXIMUM(Quantité) et le solde du lot - SOMME(QuantitéRemaining).

Pensez-vous que la quantité du document peut dépasser le solde total de l'article pour tous les lots ?

Si les mouvements dans les registres « Restes libres » et « Coût des marchandises » par quantité sont effectués de manière synchrone (à la fois entrants et sortants), une telle situation ne peut pas se produire. C'est sur cela que nous nous appuierons lors de la radiation des lots.

IV. Cycle par nomenclature de documents

Grâce aux résultats de la requête dans la boucle externe, nous contournons la nomenclature du document.

V. Obtenez le montant à amortir

Rappelons-nous combien vous devez amortir. De plus, ce montant diminuera.

VI. Cycle batch par FIFO

Le cycle imbriqué contiendra des lots en fonction de l'élément en cours.

VII. Vérifier le solde nul

En général, la situation dans laquelle le solde du lot est nul est une erreur dans les données système (néanmoins, une telle situation est possible). Le fait est que dans ce cas, la somme n'est PAS nulle (la table virtuelle des soldes des registres ne renvoie pas les enregistrements avec des valeurs de ressources nulles).

Par conséquent, nous décidons de sauter ces jeux erronés. Si vous le souhaitez, vous pouvez émettre des diagnostics à l'utilisateur.

VIII. Calcul de la quantité et du montant à amortir

La quantité à amortir est la valeur minimale entre le reste du lot et ce qui reste à amortir.

Le montant est calculé selon une proportion élémentaire.

Si le solde total d’un lot est radié, le montant total de ce lot sera radié. Il s'agit de mathématiques de 3e année dans une école paroissiale : X*Y/X = Y :)

Autrement dit, il n'est PAS nécessaire de faire des contrôles supplémentaires (parfois ils donnent de tels conseils) pour garantir que la totalité du montant est radiée. Ce conseil a même son propre nom - " le problème des sous».

Et pour ceux qui donnent de mauvais conseils, il est logique de se pencher sur la configuration « 1C : Comptabilité 8 ». Là (oh, horreur !) il n'y a aucun contrôle que tout le lot est radié :)

Voici une capture d'écran du module général « Comptabilité des marchandises », la méthode « Radiation des marchandises restantes » :

IX. Nous réduirons le montant à amortir

Vous devez comprendre combien il reste à amortir. Pour ce faire, soustrayez la quantité du mouvement du registre.

Pourquoi les verrous gérés sont-ils nécessaires ?

Nous arrivons ici au blocage contrôlé.

Il semblerait que les algorithmes présentés ci-dessus fonctionnent comme sur des roulettes. Vous pouvez les tester vous-même (liens vers les téléchargements de bases de données en fin d'article).

Mais lors d'un fonctionnement multi-utilisateurs réel, des problèmes commenceront et, comme cela arrive souvent, les problèmes ne seront pas détectés immédiatement...

Donnons un exemple du problème le plus typique lors de la radiation d'un article, lorsque 2 utilisateurs tentent presque simultanément d'amortir un article (faire une vente) :

Dans cet exemple, deux utilisateurs effectuent presque simultanément la vente de biens - le document n° 2 a commencé à être réalisé un peu plus tard que le document 1.

Dès réception du solde, le système signale que le solde est de 10 unités et les deux documents ont été traités avec succès. Le triste résultat est qu'il y a moins 5 moniteurs LG en stock.

Mais en même temps, le contrôle des résidus fonctionne ! Autrement dit, si le document n°2 est comptabilisé après la fin du document n°1, le système ne comptabilisera pas le document n°2 :

Parfois, il y a une idée fausse : « Seuls 3 à 4 utilisateurs travaillent dans ma base de données en même temps, la probabilité de traitement parallèle des documents est nulle, vous n'avez donc pas à vous laisser distraire par le blocage. »

C'est très raisonnement dangereux.

Même deux utilisateurs peuvent publier des documents presque simultanément, par exemple si l'un d'eux effectue une publication groupée de documents.

De plus, vous ne pouvez pas être à l’abri d’une augmentation du nombre d’utilisateurs. Si l’activité décolle, il faudra de nouveaux vendeurs, magasiniers, logisticiens, etc. Par conséquent, vous devez immédiatement créer des solutions qui fonctionneront de manière stable dans un environnement multi-utilisateurs.

Comment résoudre le problème lors de la publication de documents en parallèle ?

La solution est simple : bloquer les moniteurs LG au temps T1, afin que les autres transactions ne puissent pas accéder aux soldes de ce produit.

Puis au temps T2, le système attendra que le moniteur LG soit déverrouillé. Et après cela, le système recevra le solde actuel des marchandises et la radiation des marchandises sera terminée (ou non terminée).

Juste quelques mots sur la classification des blocages.

Il existe 2 types de serrures :

  • Objet
  • Transactionnel.

Pour faire simple, les verrouillages d'objets ne permettent pas de manière interactive modifier un objet (élément de répertoire ou document) pour deux utilisateurs.

Et les verrous de transaction permettent par programmation fonctionner avec des données actuelles lors de l’exécution de mouvements dans les registres.

Dans cet article nous allons nous intéresser aux verrous transactionnels, puis simplement aux verrous.

Quand faut-il appliquer le blocage ?

La tâche de pose des verrous devient pertinente dès le démarrage de la base de données travailler avec plusieurs utilisateurs.

Des verrous doivent être placés sur les transactions, mais quand les transactions ont-elles lieu ? C'est vrai, le cas le plus courant est le traitement des documents.

C'est-à-dire que le blocage doit être appliqué lors du traitement de tous les documents ?

Dans aucun cas. Cela ne vaut certainement pas la peine d’installer des verrous « juste au cas où ».. Après tout, les verrous eux-mêmes réduisent la concurrence des utilisateurs (évolutivité du système).

Des verrous doivent être placés sur les ressources (lignes du tableau) qui sont lues et modifiées dans les transactions. Par exemple, lors de l'exécution de documents.

Dans l’exemple ci-dessus, une telle ressource est le solde du produit. Le système devait bloquer le solde à partir du moment où les données du solde étaient reçues (T1) jusqu'à la fin de la transaction (T3).

Note. L'opération lors de la comptabilisation du document n°1 commence avant le moment de la réception du solde. Mais par souci de simplicité, nous supposons que T1 est à la fois l'heure de début du traitement des documents et le moment de réception des soldes.

Exemple quand pas besoin de verrouiller– réaliser le document « Réception des marchandises ». Dans ce cas, il n'y a pas de compétition pour les ressources (restes, ...), donc le blocage sera néfaste : il réduira la scalabilité du système.

Blocage automatique et contrôlé

Ici, nous n'entrerons pas dans la théorie (c'est le sujet d'un article séparé), mais dirons seulement que les verrous gérés sont plus optimaux.

Au lieu de théorie, nous pouvons en donner la preuve : toutes les configurations standards modernes fonctionnent sur des verrouillages contrôlés.

Par conséquent, dans la configuration de notre modèle, le mode approprié sera sélectionné :

Serrures contrôlées grâce à la nouvelle technologie de contrôle des résidus

Nous appliquerons un verrouillage au registre « Soldes libres » et uniquement aux éléments trouvés dans le document.

De plus option de blocage correcte- aussi tard que possible.

Dans la nouvelle méthode de contrôle des soldes, cela doit être fait avant l'enregistrement (ou au moment de l'enregistrement) des mouvements dans le registre « Soldes libres », afin que d'autres transactions ne puissent pas modifier cette ressource partagée.

Le verrou peut être appliqué manuellement (par programme) et un peu plus tard, nous montrerons comment cela se fait.

Mais un avantage supplémentaire de la nouvelle technologie de contrôle de l’équilibre est qu’il suffit d’une seule ligne de code pour verrouiller les ressources partagées.

Il vous suffit de définir la propriété BlockForChange sur l'ensemble d'entrées de registre :

// 3.1. Restes de registre de verrouillage
#Zone Zone3_1
Moves.FreeRemainders.BlockForChange = True ;
#EndArea

// 4. Enregistrement des mouvements dans la base de données
#Zone Zone4
Movements.FreeRemainders.Write = True ;
Mouvements.Record();
#EndArea
...

Par conséquent, 2 transactions ne pourront pas modifier les soldes disponibles pour un article.

En fait, lorsque la propriété est BlockForChange n'installe pas le verrouillage géré, il désactive uniquement le mode de séparation des totaux des registres lors de l'écriture.

Mais pour notre article, ce qui suit est fondamental : le système verrouillera la combinaison de données écrites dans le registre. Nous examinerons en détail le travail de la propriété BlockForChange dans un article séparé.

D'ailleurs, dans la norme UT 11, il n'est pas si facile de trouver le paramétrage de la propriété BlockForChange pour le registre « Soldes libres ». Le fait est que cela est effectué dans le module Register Recordset, dans l'événement « Avant l'écriture ».

C'est tout, avec une seule ligne de code, le bon fonctionnement du système était assuré !

Important. Nous ne verrouillons pas le registre « Coût des marchandises ».

Pourquoi? Un tel blocage serait inutile (et cela représente une certaine charge sur le serveur 1C), puisque les mouvements vers les registres « Soldes libres » et « Coût des marchandises » sont toujours effectués de manière synchrone, c'est-à-dire séquentiellement les uns après les autres.

Par conséquent, en bloquant les marchandises des « Soldes libres », nous n'autoriserons pas d'autres transactions avant ces marchandises et dans le registre « Coût des marchandises ».

Mais pour l’ancienne méthode de contrôle résiduel, le blocage sera appliqué différemment. Tout d'abord, examinons l'algorithme d'annulation par lots pour ce cas.

Ancienne méthode de contrôle des résidus

Rappelons que l'ancienne méthodologie peut être appliquée si la quantité et le coût sont pris en compte dans un seul registre.

Soit ceci le registre « Coût des marchandises » :

Ensuite, l'algorithme de comptabilisation du document « Ventes de marchandises » ressemblera à ceci :

// 1. Gestionnaire d'événements "Avant l'enregistrement"
Procédure avant l'enregistrement (échec, mode d'enregistrement, mode de conduite)

Si Mode d'enregistrement = Mode d'enregistrement de document.
ET PAS ThisObject.ThisNew()
Et cet objet. Réalisé ensuite

Demande = Nouvelle demande ;
Demande.Texte =
"CHOISIR
| Document.Date AS Date
|DE
| Document. Ventes de biens et services AS Document
|OÙ
| Document.Link = &Link";
Request.SetParameter("Lien", ThisObject.Link);
RequestResult = Request.Execute();
SelectionDocument = Résultat de la requête.Select();
SelectDocument.Next();

ThisObject.AdditionalProperties.Insert("OldDocumentDate", SelectDocument.Date);

Sinon
fin si;

Fin de la procédure

Procédure lors de l'enregistrement (refus)

Si PAS ThisObject.AdditionalProperties.Property("DocumentDateShiftedForward") Alors

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward",
ThisObject.Date>ThisObject.AdditionalProperties.OldDocumentDate);

Rapport (ThisObject.AdditionalProperties.DocumentDateMovedForward);
fin si;

Fin de la procédure

Procédure de traitement (échec, mode)

// 2. Suppression des "anciens" mouvements de documents
Si AdditionalProperties.DocumentDate est ShiftedForward alors
Mouvements.Cost of Goods.Record = True ;
Mouvements.Coût du produit.Clear();
Mouvements.Record();
fin si;

// 3. Définition du drapeau pour enregistrer les mouvements à la fin de la transaction
Mouvements.Cost of Goods.Record = True ;

// 4. Requête qui reçoit les soldes par batch au moment du document
Demande = Nouvelle demande ;
Demande.Texte =
"CHOISIR
| Ventes de produits Nomenclature AS Nomenclature,
| SUM(SalesProducts.Quantity) AS Quantité,
| MINIMUM(SalesProducts.LineNumber) ASLineNumber
|Placer un document de marchandises
|DE
| Document. Ventes de biens et de services. Biens COMMENT vendre des biens
|OÙ
| SalesProducts.Link = &Lien
|GROUPER PAR
| Ventes de produits Nomenclature
|INDEX PAR
| Nomenclature
|;
|////////////////////////////////////////////////////////////////////////////////
|SÉLECTIONNER
| ProduitsDocument.Nomenclature AS Nomenclature,
| ProduitsDocument.Quantité AS Quantité,
| ProductsDocument.Numéro de ligne AS Numéro de ligne,
| ISNULL(Remaining.NumberRemaining, 0) AS QuantitéRemaining,
| ISNULL(Remaining.AmountRemaining, 0) AS MontantRemaining,
| Reste.Parti AS Party
|DE
| ProduitsDocument COMMENT FAIRE ProduitsDocument
| CONNEXION GAUCHE Registre Accumulations Coût des marchandises Restes (
| &Moment de temps,
| Nomenclature B
| (CHOISIR
| Nomenclature T. Nomenclature AS
| DEPUIS
| ProduitsDocument AS T)) AS Restes
| Produits logicielsDocument.Nomenclature = Remaining.Nomenclature
|COMMANDER PAR
| Restes.Batch.Moment de temps
|RÉSULTATS
| MAXIMUM(Quantité),
| SOMME (Quantité Restante)
|logiciel
| Numéro de ligne" ;

Request.SetParameter("TimePoint", TimePoint());
Request.SetParameter("Lien", Lien);

RequestResult = Request.Execute();

SelectionNomenclature = Résultat de requête.Select(BypassQueryResult.ByGrouping);

// 5. Cycle par article - vérifier si la quantité est suffisante pour la radiation
Boucle While SelectionNomenclature.Next()

Déficit de nomenclature = SampleNomenclature.Quantity - SampleNomenclature.QuantityRemaining ;

Si déficit de nomenclature> 0 alors
Message = Nouveau MessageVersUtilisateur ;
Message.Text = "Pas assez de produit en quantité : "+Déficience de nomenclature ;
Message.Field = "Produits["+(SelectionNomenclature.LineNumber-1)+"].Quantité";
Message.SetData(ThisObject);
Message.Message();
Refuser = Vrai ;
fin si;

Si échec alors
Continuer;
fin si;

// 6. Obtenez le montant à amortir
RemainingWrite = SampleNomenclature.Quantity;
SelectionBatch = SelectionNomenclature.Select();

// 7. Cycle de lots
While SelectionBatch.Next() et RemainingWrite>0 boucle

Mouvement = Movements.Cost of Goods.AddExpense();
Mouvement.Période = Date ;
Mouvement.Nomenclature = SelectionBatch.Nomenclature;
Mouvement.Batch = SelectionBatch.Batch;
// 9. Calcul de la quantité à amortir
Movement.Quantity = Min(RemainingWrite, BatchSelection.QuantityRemaining);
// 10. Calcul du montant de la radiation
Mouvement.Montant = Mouvement.Quantité*
SampleBatch.AmountRemaining/SampleBatch.QuantityRemainder ;

// 11. Réduire le montant à amortir
RemainingWrite = RemainingWrite - Mouvement.Quantité ;

Fin du cycle ;
Fin du cycle ;

Dois-je passer à 1C:Enterprise 8.2 ? Si vous lisez cet article, cela signifie que vous avez probablement déjà répondu à cette question par l’affirmative. Par conséquent, nous ne reparlerons plus maintenant des avantages du passage à une nouvelle plate-forme, mais nous concentrerons directement sur les détails et les fonctionnalités de ce processus.


1. Algorithme général

Alors, vous avez décidé de passer au « huit » et souhaitez savoir comment cela se fait et ce que cela « menace » pour vous. Dans sa forme la plus générale, le diagramme de transition ressemble à ceci (Fig. 1).

Riz. 1. Algorithme de transition de la plateforme 1C:Enterprise 7.7 à la plateforme 1C:Enterprise 8.2


1. Mise à niveau. La première chose que vous devez faire est de rédiger une candidature auprès de votre organisation, de soumettre un formulaire d'inscription pour la plateforme 7.7 et d'acheter la plateforme 8.2. Dans ce cas, il vous sera fourni rabaisà hauteur du coût de l'ancienne plateforme, mais pas plus de 50%. L'ancienne plate-forme reste avec vous et vous pouvez continuer à l'utiliser, cependant, elle sera supprimée du support technique chez 1C.


2. Mise à jour configuration actuelle jusqu'à la dernière version actuelle.


3. Préparation de la base de données pour le transfert. Cela implique de sauvegarder la base de données, de clôturer la période de facturation en cours, d'effacer la base de données des éléments marqués pour suppression et de corriger les erreurs comptables (le cas échéant).


4. Transfert de données. C'est la scène principale. Les algorithmes et l'intensité du travail sont différents dans chaque cas spécifique.


5. Formation du personnel pour travailler avec la nouvelle configuration.Étant donné que les configurations sur les plates-formes 7.7 et 8.2 diffèrent à la fois en termes d'interface et de fonctionnalités, vous aurez peut-être besoin d'une formation pour utiliser la nouvelle configuration. Vous pouvez l'étudier vous-même en utilisant la littérature méthodologique appropriée, mais il est préférable de suivre un cours spécialisé sur 1C.


6. Fonctionnement.À ce stade, lorsque les utilisateurs commencent à travailler dans le nouveau programme, celui-ci est débogué et les éventuelles erreurs de transfert automatisé de données sont corrigées.

Considérons le processus de migration vers une nouvelle plateforme dans le contexte de la configuration "comptabilité 1c".


2. Remplacez « 1C : Comptabilité 7.7 » par « 1C : Comptabilité 8.2 »

La stratégie et les mécanismes de transfert des données de « 1C : Comptabilité 7.7 » vers « 1C : Comptabilité 8.2 » sont déterminés par les facteurs suivants :

  • heure de début de la comptabilité dans le nouveau programme ;
  • la présence et la complexité de modifications dans la version actuelle de votre configuration ;
  • la nécessité de préserver l'historique des transactions commerciales des périodes passées.


Nous conseillons à nos clients de commencer à travailler dans un nouveau programme de comptabilité à partir du 1er janvier de la nouvelle année . Cela est dû au fait que la plupart des impôts sont calculés sur la base de la comptabilité d'exercice. Par conséquent, afin de ne pas développer de moyens de transfert correct des résultats accumulés, il est nécessaire de lier le début des travaux dans le programme au début de la période de déclaration fiscale. Bien entendu, vous pouvez commencer à travailler dès le début du trimestre, et même dès le début du mois suivant, mais une telle transition entraînera des coûts plus importants (en raison de différences importantes dans la structure des documents en 7.7 et 8.2).


Selon la combinaison des facteurs ci-dessus, les situations peuvent être les suivantes.

Cas 1 :

Transition à partir de la nouvelle année, configuration TYPIQUE, les soldes de comptes corrects sont générés dans l'ancien programme


Cette option est simple et claire, mais en pratique elle est extrêmement rare. Il n'est possible dans un certain nombre de petites entreprises de générer des soldes corrects dans l'ancien programme immédiatement avant de commencer à travailler dans le nouveau programme, et uniquement à condition que tous les documents primaires de la période écoulée soient fournis et saisis dans le programme.


Si tel est votre cas, vous avez de la chance. Il vous suffit de mettre à jour la configuration « 1C : Enterprise 7.7 » vers la dernière version et d'utiliser le traitement « Transfert de données des bases d'informations 1C : Enterprise 7.7 » intégré à « 1C : Enterprise 8.2 ». Vous pouvez le faire vous-même, sans l'aide d'un spécialiste. Il vous suffit de suivre strictement les instructions spécifiées lors du traitement.

Situation 2 :

Transition à partir de la nouvelle année, configuration TYPIQUE, dans l'ancien programme il n'y a AUCUN SOLDE DE COMPTE CORRECT


La pratique courante dans ce cas est travailler simultanément dans l'ancien et le nouveau programme . Pendant la « période de transition » (Fig. 2), les employés clôturent leurs transactions précédentes dans l'ancien programme et commencent à saisir les documents sur les nouvelles transactions dans le nouveau système.


Riz. 2. Période de transition lors d'un changement de plateforme


Pour surmonter cette période avec un minimum de pertes, vous pouvez utiliser les stratégies suivantes :

  • transférer les soldes « tels quels » au début de l’année et tenir des registres basés sur ces données. Une fois les bons équilibres dans le « sept » obtenus, ils doivent être immédiatement ajustés rétroactivement dans le « huit ».
  • refuser de transférer des soldes incorrects et de saisir des documents primaires pour de nouvelles transactions dans le G8 sans les effectuer ultérieurement. Dans ce cas, peu importe qu'il y ait ou non des soldes dans le programme : les documents non comptabilisés n'effectueront aucun mouvement sur les comptes. Cela doit être fait jusqu'à ce que les soldes corrects soient reçus dans 1C:Enterprise 7.7. Ensuite, les soldes résultants sont transférés vers le nouveau programme en début d'année. La dernière étape est la mise en œuvre cohérente du « primaire » introduit dans le nouveau programme pendant la période de transition à l'aide du traitement intégré « Traitement groupé des répertoires et des documents » .

Situation 3 :

Transition à partir du milieu de l'année, configuration TYPIQUE

« 1C : Comptabilité 8.2 » prend en charge un certain nombre de mécanismes importants pour la comptabilité, dont les performances dépendent des données saisies dans les documents au cours de l'année. Parmi ces mécanismes figurent le calcul des impôts sur la base de la comptabilité d'exercice déjà mentionné, un algorithme de répartition des dépenses indirectes et d'autres procédures liées à la clôture du mois. C'est précisément à cause de ces fonctionnalités que dans cette situation, il est impossible de passer à un nouveau programme aussi facilement que dans les deux premiers cas. Pour minimiser le nombre d'erreurs pouvant survenir lors de la migration, nous recommandons :

  • commencer à travailler, sinon dès le début de l'année, du moins dès le début du trimestre ;
  • transférer les soldes au début de l'année ;
  • transférer tous les documents primaires de la période de déclaration (année) en cours vers le nouveau système et restaurer les données comptables et fiscales à l'aide du traitement groupé des répertoires et des documents.


1. Solution étalon "1C : Conversion de données 2.1". Ce produit logiciel peut être utilisé pour transférer des informations entre des configurations sur la plate-forme 1C de toute structure et complexité.

2. Développements des franchisés 1C. De nombreuses entreprises, dont l'entreprise « RG-Soft" (), il existe des méthodes éprouvées pour résoudre ce problème, qui peuvent réduire considérablement le temps et le budget du travail de transfert de données.


Situation 4 :

Transition d'une configuration STANDARD AVEC TRANSFERT DE DOCUMENTS DE LA PÉRIODE PASSÉE

Par ailleurs, nous notons qu'il existe des entreprises qui entretiennent des relations à long terme (plus d'un an) dans le cadre de contrats avec des contreparties. La direction de ces entreprises souhaite disposer d'un historique des transactions commerciales dans le cadre du programme. La présence dans le nouveau programme des documents saisis dans l'ancien programme permet aux utilisateurs de suivre facilement et rapidement les relations dans le cadre d'accords/transactions spécifiques.


Il est possible de mettre en œuvre un tel transfert en utilisant les mêmes mécanismes que dans la situation précédente. La différence entre ce processus est qu'il n'est pas nécessaire de transférer tous les documents ; vous pouvez vous limiter au transfert de quelques types de documents uniquement et les soldes des autres comptes sont saisis via un traitement standard. Dans ce cas, les documents transférés supplémentaires ne sont généralement pas comptabilisés.


Bien qu'il soit possible de transférer des documents de la période écoulée d'un ancien programme vers un nouveau, un tel transfert entraîne une augmentation notable de la taille de la base de données et, par conséquent, de la taille des tables traitées. Cela peut entraîner un ralentissement du système. Par conséquent, vous ne devez pas utiliser cette option de transition sauf en cas d’absolue nécessité. Il est recommandé de laisser les documents transférés des périodes précédentes non comptabilisés afin que les informations qu'ils contiennent n'affectent pas la comptabilité et la déclaration fiscale en cours. Utilisez les documents historiques à des fins de référence uniquement.


Situation 5 :

Transition d'une configuration NON TYPIQUE sur la plateforme 1C:Enterprise 7.7

Les options décrites ci-dessus sont utilisées lors de la migration à partir de la configuration standard « 1C:Enterprise 7.7 », mais en pratique, vous devez souvent faire face à des configurations modifiées. Organiser une transition dans cette situation est une option particulière qui mérite réflexion.


Selon la nature des modifications apportées au programme, les technologies de transfert de données suivantes sont disponibles :

· si la configuration a été légèrement modifiée et que les mécanismes de base sont similaires à la solution standard 1C, vous pouvez, comme dans les options précédentes, utiliser des outils de transition standards. Il vous suffit de les configurer ou de les modifier légèrement en fonction de votre programme. L'outil le plus testé et le plus fiable est peut-être le « 1C : Data Conversion 2.1 » déjà mentionné. Cet outil nécessitera certaines compétences opérationnelles de la part de l'utilisateur, mais avec son aide, il est possible d'organiser le transfert automatisé d'objets entre configurations.

· si au fil des années d'utilisation, la configuration a été radicalement repensée, la mise en place d'outils de migration standards peut s'avérer plus laborieuse que l'écriture de votre propre traitement à ces fins. Une situation similaire se présente dans le cas de l'organisation d'une transition à partir d'un programme de comptabilité non associé aux plateformes 1C. Une telle transition est également possible, mais il ne sera pas possible d’imaginer à l’avance un échange universel. Chaque cas spécifique nécessite une approche individuelle du problème. Notre entreprise peut offrir son expérience dans le transfert de données à travers des fichiers de différents formats, tels que dbf, xls(Chargeur universel d'Excel vers 1C), xml.


Un autre point à mentionner en lien avec le passage de la plateforme 7.7 à la plateforme 8.2 concerne consolidation de base de données.


En raison de l'absence de mécanisme permettant de conserver les enregistrements de plusieurs entreprises dans une seule base de données, de nombreuses entreprises ont dû maintenir plusieurs bases de données simultanément dans 1C:Enterprise 7.7. Puisque ce problème a été résolu dans la huitième version, la tâche se pose de combiner plusieurs bases de données en une seule dans le cadre d'un projet de transfert de données. De plus, chacune des sept bases peut avoir ses propres caractéristiques.

En utilisant les méthodes indiquées ci-dessus, vous pouvez établir une interaction avec chacune des bases de données séparément. Cependant, un certain nombre de sous-tâches se posent et sont spécifiques à ce cas.

1. Unification des documents liés à une organisation particulière. Ce problème est facilement résolu en utilisant le mécanisme de préfixe. Chaque organisation inscrite au programme se voit attribuer son propre préfixe de lettre. Ce préfixe est ajouté au numéro du document, garantissant ainsi l'unicité des numéros.

2. Contrôle des éléments en double des répertoires. Lors du transfert de données de plusieurs sources d'informations vers un seul système d'information, une situation peut survenir lorsque les mêmes éléments d'annuaires, par exemple la même contrepartie dans un nouvel annuaire, seront répétés plusieurs fois. Par conséquent, après le transfert des données, il est nécessaire d'effectuer une procédure de comparaison et de fusion des éléments de répertoire en double.


3. Difficultés possibles dont vous devez être conscient

Avec une bonne planification du processus de transition vers une nouvelle plateforme, de nombreux problèmes peuvent être évités. Cependant, un certain nombre de caractéristiques spécifiques se révèlent déjà au stade de la mise en œuvre du projet. Nous parlons de diverses erreurs qui surviennent à la fois en raison d'actions incorrectes de l'utilisateur et en raison des caractéristiques techniques de la plate-forme 1C:Enterprise. Examinons ces points plus en détail.


3.1. Erreurs dans les données sources

En général, l'identification sans ambiguïté d'un objet dans la base de données est possible à l'aide des détails TIN et KPP. Dans les sept cas, ces deux valeurs ont été stockées dans un seul détail TIN/KPP, et l'exactitude des données saisies dans ce détail n'a pas été vérifiée. Il était possible de saisir moins de chiffres, de placer le séparateur au mauvais endroit et de saisir un NIF complètement abstrait.


Un transfert typique, lors de la création d'un annuaire, les contreparties sont séparées par TIN et KPP en coupant simplement le nombre de caractères requis. Par conséquent, des données absolument incorrectes peuvent être enregistrées dans les détails de la nouvelle base de données. Ainsi, l'identification correcte des objets lors du transfert à l'aide de telles données sera très difficile.


Un autre problème est l’absence d’un format unifié de saisie des données. Chaque utilisateur peut saisir le nom qu'il préfère. Imaginons que dans une base de données « sept », l'utilisateur, en remplissant le « Nom » de la contrepartie, écrive « Société de gestion Vympel », et que dans une autre base de données « sept », la même contrepartie est répertoriée comme « Société de gestion Vympel ». Dans une telle situation, le traitement automatique ne pourra pas déterminer qu'il s'agit de la même contrepartie, et la déplacera deux fois vers le huit. Il sera difficile de poursuivre les travaux dans une telle base de données, car une partie du solde portera sur un élément et l'autre partie sur un autre.


3.2. Différences de configuration

Un autre groupe d'erreurs de transfert est dû à des différences technologiques dans les configurations. Certaines transactions commerciales sont reflétées dans « 1C : Enterprise 7.7 » par plusieurs types de documents, et dans « 1C : Enterprise 8 » par un. Par exemple, les réceptions de matériaux et de marchandises sont reflétées dans le nouveau programme avec un document et dans l'ancien - avec deux. Ainsi, lors de la tentative de transfert des documents « Réception des matières n° 22 » et « Réception des marchandises n° 22 », une erreur de contrôle d'unicité se produit. L'enregistrement de deux documents portant le même numéro dans une période donnée étant impossible, il est nécessaire d'y introduire artificiellement des différences et le système d'introduction de ces différences est convenu à l'avance.


Par exemple, ce problème est résolu en ajoutant un préfixe supplémentaire au numéro du document téléchargé. Pour chaque caractéristique du document, ce préfixe est attribué séparément. Il peut s'agir d'une caractéristique de la base de données à partir de laquelle les documents sont téléchargés ou du type de document à partir duquel le téléchargement a été effectué. Voici un exemple de formation d'un tel préfixe. La succursale de Krasnoïarsk donne le préfixe « KR ». Le type de document « Réception des matériaux » à partir duquel le téléchargement est effectué reçoit le préfixe « M ». Ainsi, si le numéro du document sur sept était 00000031, alors le numéro huit sera le suivant :

"KR" + "M" + "00000031" = "KRM00000031"

De ce fait, un numéro unique sera enregistré dans la base de données.


3.3. Problèmes techniques

Des erreurs de transfert de données peuvent également survenir en raison des caractéristiques techniques de la plateforme 1C:Enterprise. Par exemple, le mécanisme de recherche standard par nom ne distingue pas les majuscules du nom d'un élément de répertoire des petites. Il existe une confusion lors de l'utilisation de ce mécanisme. Par exemple, dans la base de données, il y a deux contreparties « l-audio » et « L-Audio ». Lors de la recherche d'une contrepartie « l-audio », le système trouvera « L-Audio ». Le résultat sera un document mal rempli.


Il faut également faire attention à la méthode de transfert de données choisie elle-même. L'exemple décrit ci-dessus avec un doublement des contreparties, lorsqu'il est transféré à partir des bases de données des succursales de l'entreprise, peut ne pas s'avérer en réalité un doublement. Les entreprises opérant dans différentes villes peuvent très bien avoir des contreparties opérant également dans différentes villes. La succursale de la société L-Audio à Nijni Novgorod et la société L-Audio elle-même à Moscou peuvent à juste titre être appelées exactement de la même manière dans les bases de données. Pour éviter une telle confusion, vous devez choisir à l'avance une méthode de transfert. Dans notre exemple, nous pouvons séparer les contreparties en différents groupes de répertoires en fonction de la base de données source. Le choix d’une telle technique affectera également les mécanismes de chargement des données.


Les méthodes décrites ci-dessus pour résoudre les problèmes émergents peuvent également ne pas être suffisamment universelles. Lors de la migration des données, il est très important de pouvoir combiner les méthodes utilisées dans l'outil de migration. Par exemple, nous identifions la plupart des éléments des répertoires par leur nom. Parallèlement, lors du transfert du document « Acceptation comptable des immobilisations », cette méthode donnera des résultats indésirables dans le cas où un certain nombre de petites immobilisations du même type sont saisies (fournitures de bureau, mobilier, etc.), ne différant que par le numéro d'inventaire. Chaque document d'acceptation en comptabilité indiquera le même objet. Et accepter un objet pour la comptabilité plusieurs fois est impossible. Il est donc très important de pouvoir personnaliser l’outil de migration de données utilisé. Dans ce cas, nous indiquerons simplement que la recherche de l'OS doit être effectuée par le numéro d'accession (code).


Conclusion

Actuellement, de nombreuses entreprises utilisent encore 1C:Enterprise 7.7. Cela est dû à des facteurs tels que le manque de compréhension des avantages de la nouvelle plateforme, la réticence à apprendre de nouvelles technologies et la peur de rencontrer un grand nombre de difficultés pendant la transition. A l'aide de l'exemple de 1C : Comptabilité, nous avons essayé de montrer que la plupart de ces raisons ne sont pas si significatives. Tout au long de nos activités, nous aidons nos clients à faire face à d'éventuelles difficultés liées à la mise en œuvre de programmes sur la plateforme 1C:Enterprise 8. Si la problématique de la transition vous intéresse ou si vous avez d'autres questions concernant la plateforme 1C:Enterprise 8 et les configurations créées dessus, les spécialistes RG-Soft sont à votre service !

Moment de temps :
La société 1C le décrit ainsi :
Conçu pour recevoir et stocker un point dans le temps pour un objet dans la base de données. Contient la date et l'heure, ainsi qu'une référence à un objet de base de données. Utilisé comme valeurs de propriété et paramètres de méthode d'autres objets de type Instant of Time.
Le point dans le temps est utilisé dans les cas où il est important de distinguer les moments dans le temps pour des objets ayant la même date et la même heure, par exemple pour comparer les positions des documents sur un axe temporel.

Et selon vos propres mots :
Un moment précis est une combinaison d’une date et d’une référence à un document. Vous permet de diviser et d'organiser des documents en une seconde, en organisant tous les documents dans un ordre sans ambiguïté. La réception des données lors d'un dépôt à un instant donné garantit que les mouvements effectués à la même seconde que le document en cours de dépôt, mais situés devant lui, seront pris en compte.
Mais il y a une particularité : les documents postés à la même seconde sont classés dans un ordre aléatoire, et non dans l'ordre de leur création physique (comme c'était le cas en 7.7).

InstantTime() est le moment immédiatement AVANT la position du document (analogue à CalculateRegistersOn(CurrentDocument() en 7), et si vous avez besoin d'obtenir le moment immédiatement après la position du document, utilisez l'objet Border.
Code 1C v 8.x Moment immédiatement après le document = Nouvelle bordure (DocumentLink, BorderView.Including)

Code 1C v 8.x // L'exemple crée un point dans le temps en utilisant une date et un lien vers un objet dans la base de données.
Moment = Nouveau Moment (TekDocument.Date, TechDocument.Link);

Lors de la réception des soldes :
"Point dans le temps" est un champ virtuel, non stocké dans la base de données. Contient un objet Point in Time (qui comprend une DATE et un LIEN DE DOCUMENT)
<Виртуальная>le tableau des soldes n'est pas stocké dans la base de données, mais est construit au moment de l'accès à celle-ci.
1. sélectionner un instant supérieur ou égal à la valeur du PARAMÈTRE pour lequel les soldes sont CALCULÉS
2. à ce moment on obtient les restes du tableau des totaux
3. Si le moment auquel les soldes sont calculés ne coïncide pas avec le moment des totaux, alors les soldes sont COMPTÉS par mouvements.

Frontière:
Conçu pour recevoir et stocker la limite d'une certaine plage de valeurs. Contient la valeur limite de l'intervalle, ainsi qu'un signe d'inclusion ou d'exclusion de la valeur limite dans l'intervalle.
Utilisé comme valeurs de propriété et paramètres de méthode d'autres objets de type Boundary.
La limite est utilisée dans les cas où il est important d'indiquer l'inclusion ou l'exclusion d'une valeur limite, par exemple lors de l'obtention des soldes et des tours des registres d'accumulation, des tranches et des valeurs des registres d'informations, pour définir les intervalles de requête.

Type de bordure - Définit un ensemble de types de bordure par rapport à la valeur limite :
BoundaryView.Including - La limite inclut la valeur limite.
BoundaryView.Excluding - La limite exclut la valeur limite.
Code 1C v 8.x Border = New Border (Date, BorderType.Including);
Request.SetParameter("ConBorder", Border);

Un exemple d'obtention des soldes à la date du document, y compris ses mouvements
Demande.Texte =
"CHOISIR

|DE

Request.SetParameter("MomTime", New Boundary(MomTime.InstantTime(), BorderType.Including));

Un exemple d'obtention des soldes à la date du document, mais avant ses mouvements
Code 1C v 8.x Demande = Nouvelle demande ;
Demande.Texte =
"CHOISIR
| Règlements mutuels avec les employés des organisations Soldes Particuliers,
| Règlements mutuels avec les employés des organisations Soldes Montant des règlements mutuels Solde
|DE
| Registre des accumulations. Règlements mutuels avec les employés des organisations. Soldes (&MomTime, Individual = &Individual) AS Règlements mutuels avec les employés des organisations Soldes" ;
MomTime = Documents. Paie pour les employés de l'organisation. Rechercher par numéro ("00012", "31/12/2009 23:59:59");
Request.SetParameter("MomTime", New Boundary(MomTime.InstantTime(), BorderType.Excluding));
// ou comme ceci : Request.SetParameter("MomTime", MomTime.Instance());
Request.SetParameter("Physicien", Directories.Individuals.FindByCode("365"));
OutputResult(Query.Run());

Informations extraites du site

Aujourd'hui, les produits logiciels 1C constituent une sorte de standard pour la comptabilité, la gestion et d'autres types de comptabilité dans les petites et moyennes entreprises. Les employeurs exigent que leurs employés possèdent les compétences nécessaires pour travailler avec ce logiciel particulier. Si la question de l'intégration d'une boutique en ligne et de systèmes d'automatisation (restes, prix, commandes, etc.) est à l'ordre du jour, le bureau dispose généralement également d'une base de données 1C avec laquelle l'intégration doit être effectuée. De même dans de nombreux autres cas : tout processus d'automatisation pour les petites et moyennes entreprises commence traditionnellement par les produits 1C et se poursuit par leur utilisation.

En tant que consultant en entreprise, je rencontre assez souvent des questions sur ce qu'est 1C, quelle structure ce produit logiciel peut avoir et, en général, comment fonctionne l'ensemble de ce système. Elles sont généralement posées par des développeurs Web qui sont obligés de faire face à des problèmes d'intégration de site et 1C, programmeurs spécialisés dans les applications mobiles et autres spécialistes qui, en raison de la nature de leur travail, sont rarement confrontés aux programmes 1C.

Dans cet article, j'ai décidé de rassembler les réponses aux questions les plus courantes qui se posent constamment dans mon travail. Par conséquent, je tiens à vous prévenir tout de suite : l'article est destiné aux personnes familiarisées avec les technologies informatiques ; les hommes d'affaires, les comptables, les personnes éloignées de la sphère informatique auront probablement du mal à comprendre certaines nuances. Bien sûr, je vais essayer d'écrire le plus simplement possible, et je n'envisage pas d'entrer dans les nuances techniques au niveau du code, mais néanmoins, certains termes et concepts peuvent paraître complexes aux non-spécialistes.
Quelques mots sur mon expérience avec 1C
À une époque, j'ai travaillé comme programmeur 1C dans un grand projet, puis j'ai pris le poste de chef de projet, et pendant assez longtemps j'ai été chef du département projet, qui s'occupait exclusivement des tâches en 1C.

Aujourd'hui, comme je l'ai écrit plus d'une fois, je travaille comme consultant en affaires dans le domaine des petites et moyennes entreprises. Je suis constamment confronté à diverses tâches liées à l'automatisation du travail et, par conséquent, aux produits logiciels 1C. Le plus souvent, en tant que consultant en entreprise, j'embauche des spécialistes 1C pour résoudre certains problèmes, j'ai une équipe permanente et j'attire également des spécialistes tiers, notamment des indépendants. Dans de très rares cas, j'écris moi-même quelque chose en 1C, le plus souvent si j'ai un besoin urgent de résoudre un petit problème.

D'un autre côté, je m'éloigne de plus en plus du travail constant avec les produits 1C. Si au début de ma carrière travailler avec les programmes 1C me rapportait 100 % de mes revenus, aujourd'hui la mise en œuvre de certaines solutions 1C ne représente plus que 20 % de mon travail, tout le reste est constitué de sites Web, de systèmes CRM, etc.

Par conséquent, même si je ne me suis pas encore trop éloigné des problèmes liés au programme 1C, j'ai décidé de systématiser mes connaissances, de collecter et d'enregistrer les aspects et nuances importants du travail avec ces produits logiciels.

Un peu plus sur 1C et pourquoi j'écris tout ça
Je sais moi-même que je m'apprête, comme on dit, à embrasser l'immensité. Par conséquent, un autre avertissement :
  1. J'ai l'intention de créer toute une série d'articles sur 1C, où je parlerai de ce logiciel sous différents points de vue. Cet article est principalement destiné aux programmeurs. C’est pourquoi je le publie sur Habré. Ce qui suit couvrira un plus large éventail de concepts, y compris ceux qui intéressent les hommes d'affaires et les utilisateurs de produits logiciels 1C, et seront donc publiés sur Megamind.
  2. Je n'entrerai pas dans les nuances d'utilisation du code ou d'autres détails techniques, que chacun de vous peut lire seul sur le site officiel de 1C, sur les sites d'assistance, sur des forums bien connus, etc.
  3. Je ne discuterai pas des nuances du fonctionnement de telle ou telle version de la plateforme. De plus, je parlerai le plus souvent de la plateforme 8.3 comme la plus récente au moment de la rédaction, ainsi que des configurations types les plus demandées par mes clients (moyennes et petites entreprises).
En même temps, je ne veux pas seulement aider un programmeur Web ou un autre spécialiste à comprendre où chercher le bon morceau de code, je veux les aider à comprendre de quoi il s’agit – 1C.
Aujourd'hui, la société 1C à elle seule a introduit tellement de confusion dans les descriptions de produits, dans les exigences relatives au niveau des spécialistes qui configureront le système, dans le choix de la plate-forme, de la configuration, des plugins, des modules complémentaires, des versions, etc. etc., que le système 1C commence personnellement à me rappeler la vieille série télévisée " Poulpe". Si quelqu'un d'autre s'en souvient, dans ce film, le commissaire combattait un groupe criminel, dont faisait partie un groupe bancaire. Et ce système bancaire était tellement déroutant qu'il était très difficile de comprendre d'où venait l'argent, où il allait, comment fonctionnait telle ou telle division et, surtout, pourquoi.

Dans le système 1C, les efforts pour « confondre » l'utilisateur, me semble-t-il, visent une chose : il n'est pas nécessaire de comprendre quoi que ce soit, il suffit de payer. Et de nombreux hommes d’affaires finissent par payer sans comprendre s’ils ont besoin de cette mise à jour ou de ce produit. Ils paient juste et c'est tout.

Je vais essayer de démêler les « tentacules de la pieuvre » et de structurer une compréhension générale du fonctionnement du système 1C.

Nous souhaitons également rappeler aux programmeurs que vous pouvez trouver toute information technique sur le site 1C. Je n’ai pas du tout l’intention de m’attarder sur ces nuances. Dans la mesure du possible, j'écrirai dans un langage simple sur des questions fondamentales.

Et si vous avez besoin de nuances techniques spécifiques à 1C, vous pouvez toujours utiliser les ressources suivantes :

  1. Site Web 1C et forum partenaires. http://www.1c.ru
  2. Autres ressources
Dans la grande majorité des cas, les réponses à vos questions se trouveront sur l’une de ces ressources. Il existe bien d’autres forums et autres choses, mais la plupart des solutions sont là.

1C comme écosystème

Lorsqu'un homme d'affaires, un avocat, un comptable, un vendeur et un autre utilisateur rencontre des programmes 1C, il y a très souvent un malentendu sur ce dont il s'agit. Certaines personnes pensent que 1C est un système comptable pratique, d'autres pensent qu'il s'agit d'un système d'automatisation d'une boutique en ligne, d'autres encore ne comprennent pas vraiment de quoi nous parlons. Certains pensent même qu'avec l'aide de tel ou tel produit 1C, vous pouvez résoudre n'importe quel problème commercial, il vous suffit de choisir le bon produit et, peut-être, de le modifier un peu.

La raison de ces perceptions clairement erronées est que personne ne comprend ce qu'est 1C du point de vue de la plate-forme. Tout le monde voit quelque chose de différent, de spécifique. 1C lui-même apporte encore plus de confusion, car il soutient activement toutes ces idées fausses grâce à son marketing, qui tente de positionner 1C comme une solution pour toutes les occasions et pour tous les objectifs.

Dans l'article, j'ai déjà dit qu'en fait, 1C devrait être perçu comme un écosystème à part entière. C'est cette approche qui vous aidera à comprendre ce qu'est 1C et pourquoi il est nécessaire.

Ainsi, du point de vue de l'écosystème technique, 1C se compose des composants suivants :

  1. La plateforme 1C est la base sur laquelle sont écrites les configurations, avec lesquelles travaillent les programmeurs, etc. Elle est mise à jour de version en version, et peut donc être : 6.0, 7.7, 8.0, 8.2 ou 8.3.
  2. Configuration. C’est le prochain niveau de spécificité. Les configurations sont écrites sur la plateforme en utilisant le code 1C. Les utilisateurs travaillent avec des configurations.
  3. 1C Bitrix. Un système pour travailler avec des sites Web, cela vaut la peine d'en parler séparément.
Un autre aspect dans lequel le travail 1C peut être structuré est le niveau organisationnel. Et ici, il y a 2 parties qui ne fonctionnent pas non plus l'une sans l'autre :
  1. La société 1C elle-même et son équipe de spécialistes.
  2. Partenaires 1C (franchise) et spécialistes impliqués dans la maintenance du système. Ils méritent également d’être soulignés comme l’une des composantes de l’écosystème. Sans spécialistes qui finalisent et mettent en œuvre 1C, le système ne fonctionnera pas. Il peut s'agir d'entreprises partenaires 1C ou de indépendants individuels, peu importe, il suffit qu'ils le soient, sinon le système ne sera pas viable.
Ensuite, je propose d'examiner de plus près les parties de l'écosystème 1C.

Plate-forme

La plate-forme est la base même sur laquelle les programmeurs 1C, utilisant le langage de programmation 1C, écrivent des programmes prêts à l'emploi (configurations) pour les utilisateurs. La plateforme est la base sans laquelle aucun composant ou configuration ne fonctionnerait. Dans le même temps, la plateforme elle-même sans configuration peut intéresser exclusivement un programmeur 1C ; pour tous les autres (utilisateurs, spécialistes divers), elle est inutile.
Vous pouvez travailler sur différentes versions de la plateforme. Je sais que dans la pratique, les versions 8.2 et 8.0 sont utilisées, ainsi que la 7.7, plutôt ancienne, mais toujours populaire, parfois même la première version réussie 6.0 est utilisée. Mais je parlerai exclusivement de la version 8.3, comme la plus récente au moment de la rédaction de cet article. La plupart des éléments dont nous discuterons sont également pertinents pour les versions précédentes. Mais certains n’ont été ajoutés que dans les dernières versions. J'aimerais que les lecteurs prennent ce fait en compte.

Il est important de comprendre que les utilisateurs n'ont le plus souvent pas besoin de toute la gamme de capacités offertes par 1C. Cette déclaration est particulièrement pertinente pour les petites et moyennes entreprises. Mais la qualité et la fiabilité du travail sont extrêmement importantes pour les utilisateurs. Et à cet égard, malheureusement, de nombreux problèmes surviennent avec les produits logiciels 1C.
Lorsqu'ils travaillent avec 1C, les programmeurs utilisent un langage de programmation spécial créé par les développeurs 1C pour travailler avec la plate-forme 1C. Aujourd'hui, il est disponible en russe et en anglais, mais il a été initialement écrit en russe et, par conséquent, les configurations standard sont également écrites traditionnellement en russe, bien qu'il soit toujours possible d'utiliser les versions anglaises des opérateurs au bon endroit si cela convient mieux au programmeur. travailler. Ce langage est un mélange de BASIC et de C+ avec l'ajout de SQL pour l'écriture de requêtes. De plus, il offre la possibilité d'utiliser divers constructeurs et plugins.

L'une des caractéristiques de la plateforme 1C est le manque de modularité. La plateforme est un tout, il est impossible d'indiquer clairement quel morceau de code (module) est responsable de quelles capacités. Bien entendu, lors de l'installation, vous pouvez spécifier quels composants doivent être installés et lesquels ne le sont pas. Mais cette option n’est présente qu’au moment de l’installation, et offre en fait un très petit nombre d’options.

Une note supplémentaire qui, espérons-le, aidera à éviter les flammes et les disputes :

Je comprends que la plateforme 1C est un outil puissant et très flexible. Et si vous, en tant que programmeur 1C expérimenté, décidez d'écrire quelque chose de spécial dessus, vous obtiendrez très probablement un excellent logiciel. Et pour différents cas, vous pouvez trouver ici une solution précisément grâce à la richesse des capacités de la plateforme. Mais le plus souvent je rencontre l'utilisation de configurations standards (Comptabilité, Gestion commerciale, Paie et RH, Gestion de production), la plupart des utilisateurs travaillent avec elles, notamment lorsqu'il s'agit de petites et moyennes entreprises. Par conséquent, j'écrirai sur le choix de la plate-forme et sur certains problèmes associés au travail de 1C, principalement du point de vue du travail avec des configurations standard.

En même temps, je comprends aussi qu'avec une grande envie et un niveau de connaissance suffisant du programmeur, de nombreux problèmes peuvent être résolus, mais les problèmes ne seront pas pertinents. Par conséquent, si vous utilisez des développements uniques, les problèmes et les questions que je révèle ne vous intéresseront peut-être pas du tout. Pour tout le monde, je continue.
Options de livraison de la plateforme
Lors du choix d’une plateforme, il est très important de prêter attention aux options de livraison de la solution. La première chose qui est importante pour vous est la méthode d'organisation du travail avec les données :
  • Solution de fichiers
  • Option client-serveur
Dans une solution basée sur des fichiers, toutes les informations professionnelles seront stockées dans un fichier commun. Peu importe la configuration que vous installez. Dans tous les cas, vous recevrez un fichier de service avec une extension CD (format interne 1C), dans lequel tout sera stocké : répertoires, documents, registres, etc. Si le nombre d'utilisateurs de votre programme ne dépasse pas 4 personnes, cette option vous convient très probablement. De plus, la mise en place d'un système de fichiers est beaucoup plus simple, ici vous pouvez même vous passer de l'aide d'un spécialiste 1C. Le problème de vitesse peut être en partie résolu grâce au RPD (Remote Desktop Protocol), mais seulement en partie.

Mais pour utiliser 1C dans des entreprises avec un flux de documents assez actif et un nombre assez important d'utilisateurs du système (plus de 4 personnes), le système de fichiers ne fonctionnera pas de manière satisfaisante. Les utilisateurs accéderont presque simultanément au même fichier, dont le volume augmentera constamment. De plus, des synchronisations constantes seront nécessaires, ce qui ralentira encore plus le travail.

Pour résoudre ce problème, la société 1C essaie d'essayer la mise en cache des données, mais cette méthode pose jusqu'à présent encore plus de problèmes. Si quelqu'un est intéressé par ce sujet, tapez simplement « Problèmes de cache 1C » dans le moteur de recherche ; dans la recherche, il y aura beaucoup de forums et de discussions à ce sujet avec une variété de problèmes, qui se résument finalement au fait que la mise en cache ne ne fonctionne pas toujours correctement.

L'organisation client-serveur du stockage des données est l'organisation des bases de données en tables sur le serveur. Il peut s'agir de MSSQL, Oracle ou d'une autre option d'organisation de base de données.

Les avantages de cette option sont évidents : quel que soit le nombre d'utilisateurs accédant aux bases de données, aucun problème de vitesse et d'accès ne se posera. C’est l’option qu’utilisent la plupart des entreprises de taille moyenne, et c’est celle que je recommande habituellement aux clients.

Dans la plupart des cas, les entreprises installent un serveur Windows sur lequel sont stockés à la fois le programme lui-même et la base de données. Parfois, les applications et les bases de données sont séparées sur des serveurs différents, mais ces cas sont complexes et assez rares, et je ne m'y attarderai donc pas.

Versions de 1C pour différentes plateformes
Aujourd'hui, vous pouvez choisir différentes versions du logiciel 1C pour fonctionner sur différentes plates-formes. Ici, il convient également de déterminer ce qui vaut la peine d'être acheté et dans quel cas.

Il existe donc des versions de 1C :

  • Pour les fenêtres,
  • pour Linux.
Au moment de la rédaction de cet article, aucune version n'a été développée pour Mac OS.

Le programme 1C, qui fonctionne sous Windows, a été développé dès le début, c'est un outil puissant, familier à tous, suffisamment raffiné pour pouvoir être utilisé sans aucun problème. La version Linux d'aujourd'hui est considérée comme encore nouvelle, et donc assez « brute » ; elle comporte encore beaucoup d'erreurs, comme dans tout nouveau logiciel.

Les entrepreneurs et tous les représentants d'entreprises sont des personnes plutôt conservatrices ; pour eux, le plus important est un travail stable et fiable. Le plus souvent, une entreprise n'est pas tellement intéressée par la vitesse élevée ou par une liste énorme de capacités, car cela nécessite simplement un fonctionnement stable. De plus, Linux n'est pas très demandé dans les entreprises nationales aujourd'hui. On rencontre donc très rarement cette version.

Base de composants 1C
La base de composants 1C est très étendue, elle contient un grand nombre de capacités, tandis que 1C est constamment divisé et ajouté des fonctions. Ceux. lorsque les développeurs 1C ont besoin de créer quelque chose de nouveau, ils créent presque toujours un nouveau type d'objet. Par exemple, lorsque des services Web étaient requis, les développeurs n'ont pas créé une sorte de plugin, mais ont simplement introduit le concept : service Web. De même, pour de nombreux processus métiers dans une entreprise 1C, un nouveau composant est le plus souvent créé, même dans les cas où celui existant pourrait simplement être modifié.

Que dire des composants de la plateforme 1C :

  • Certains composants fonctionnent depuis longtemps, d'autres depuis la création du produit logiciel. Ils sont stables et fiables.
  • Certains composants ont été ajoutés récemment, d'autres le sont actuellement. La plupart d'entre eux sont très mal testés et vous devez donc les utiliser avec une extrême prudence.
Lorsque vous choisissez un composant avec lequel travailler, vous devez toujours faire attention au moment où il a été ajouté. Les programmeurs professionnels 1C ont cette règle : lorsque les développeurs ajoutent une nouvelle fonction, si possible, évitez-la jusqu'à ce qu'un laps de temps suffisant se soit écoulé. Ceux. ils attendent que le composant ait été testé dans la pratique, que les principaux « bugs » aient été identifiés et corrigés, et alors seulement ils commencent à travailler activement avec lui.

L’une des composantes de la réputation négative de 1C est la pratique de l’entreprise consistant à ajouter constamment de nouvelles solutions non testées. Malgré le fait que les composants déjà implémentés fonctionnent souvent mal, les bugs n'ont pas encore été corrigés et les développeurs ajoutent déjà quelque chose de nouveau. Il peut s'agir non seulement de composants, mais également de nouvelles fonctions pour des objets existants, de nouvelles méthodes, etc. Tous les programmeurs qui travaillent avec 1C seront confrontés à ce problème - la présence constante de logiciels « bruts », de « bugs » constants et leurs corrections constantes.

Les utilisateurs peuvent également rencontrer ce problème : des erreurs et un fonctionnement instable du logiciel lorsqu'ils travaillent avec la plateforme. Il existe un certain ensemble de fonctions de maintenance 1C qu'un utilisateur peut exécuter. Il existe une interface utilisateur de plateforme à cet effet. Et ici, cela vaut la peine de revenir sur les différentes versions de l’interface utilisateur.

La plate-forme 1C se compose de nombreux composants différents qui sont constamment ajoutés, élargissant ainsi les capacités de ce produit. En plus des documents, répertoires, registres divers, il existe également divers composants pour l'entrée/sortie d'informations, c'est-à-dire Les interfaces des utilisateurs.

Sur la base de cette fonctionnalité, vous pouvez choisir :

  1. Client 1C natif. Il s'agit d'une interface logicielle traditionnelle lorsque l'on accède à 1C depuis 1C.
  2. Travaillez via un navigateur.
  3. Travaillez via une application mobile.
Chacune des options a certaines limites ; vous pouvez en savoir plus à leur sujet sur le site officiel de 1C.
Client natif
Le client natif est également divisé en une série de sous-clients, ce qui introduit un chaos supplémentaire dans le processus de sélection des logiciels. La chose la plus importante ici est de choisir une option client « gros » ou « léger ». À première vue, le choix ici n'est pas critique, surtout pour un programmeur. En fait, lorsque vous travaillez avec la configuration via l'interface, des problèmes peuvent survenir en raison d'erreurs de sélection.

Quelle est la différence entre ces sous-clients ?

« Épais » nécessite un canal de communication large (épais), « fin » nécessite un minimum. La grande majorité de mes clients utilisent un client « gros », puisque tout le monde dispose désormais de bonnes chaînes locales ou Internet, et qu'il n'y a aucun problème avec leur « largeur ». D'un autre côté, un client « léger » a certaines limites dans son fonctionnement ; il y a des choses qui ne peuvent pas y être faites.

Client Web (fonctionne via un navigateur)
Le client Web fonctionne avec le programme 1C via un navigateur. Ceux. vous utilisez une certaine technologie qui vous permet d'accéder à la base de données via Internet, à l'aide d'un navigateur qui vous convient. Dans ce cas, l'interface est entièrement décrite directement dans le navigateur.

Cette option impose certaines restrictions, vous devez constamment vous en souvenir. D'un autre côté, travailler avec le client Web est assez stable, bien débogué et amené à une certaine conclusion logique. C’est pourquoi de nombreuses personnes utilisent cette option d’interface. Travailler avec 1C en ligne peut être très pratique et même nécessaire.

version mobile
Cette version du client de 1C est apparue relativement récemment et n'est pas encore très demandée. Raisons de cette attitude :
  1. Le client s'est avéré très difficile. Afin de mettre en place ce programme, une personne doit connaître à la fois les technologies 1C et mobiles, et assez profondément au niveau du code. Force est de constater qu'il est assez difficile de trouver un tel spécialiste, ce qui ne contribue pas à la popularité de la solution logicielle.
  2. La technologie est encore très « brute » et mal déboguée. J'ai personnellement essayé d'utiliser cette solution pour mes clients, j'ai discuté avec des collègues qui se sont également familiarisés avec cette technologie, et pour le moment mon avis et celui de mes collègues coïncident : il est plus facile et plus pratique de créer une sorte d'application mobile que pour utiliser l'option de 1C.
La version mobile doit combiner beaucoup de choses, elle nécessite le travail de plusieurs spécialistes qui vont travailler ensemble et s'entraider :
  • Paramétrer l'accès à la base de données depuis l'extérieur ;
  • Résoudre les problèmes de sécurité ;
  • Mise en place d'un serveur pour travailler avec des applications mobiles ;
  • Mise en place de produits logiciels 1C ;
  • Mise en place d'applications web (si nécessaire).
Tout cela est nécessaire pour assurer le bon fonctionnement de l'application mobile 1C. Il est clair que constituer une telle équipe de spécialistes est difficile et coûteux, et cette solution n'est donc pas populaire dans les petites et moyennes entreprises.
Plateforme 1C : résumé
La plate-forme 1C est très fonctionnelle et possède une énorme liste de fonctionnalités diverses. Et cette quantité se transforme naturellement en complexité. En conséquence, la barrière à l'entrée dans le travail avec 1C pour un programmeur est très élevée. Les clients entendent parler des diverses capacités de 1C et demandent à un programmeur de les aider à les mettre en œuvre. Cela signifie qu'un spécialiste doit être constamment au courant des mises à jour, comprendre et connaître diverses choses.

Il est très difficile de trouver un programmeur capable de tout comprendre à la fois au niveau du programme : travailler avec 1C, programmation Web, travailler avec des applications mobiles, etc. Ceci est possible au niveau conceptuel, c'est-à-dire sur celui où je partage désormais mes connaissances.

Mais les clients ne comprennent généralement pas cela et commencent à exiger que le programmeur 1C mette en œuvre diverses capacités.

D'un autre côté, la plate-forme 1C est en constante évolution, elle propose un grand nombre d'options, de nombreuses solutions différentes et, par conséquent, un grand nombre de bugs et leurs correctifs.

Tout cela ensemble conduit à un problème de positionnement :

  • D'une part, il y a la société 1C, qui dit aux clients que 1C est simple et pratique. Ils n'écrivent nulle part que la maintenance de 1C nécessitera un spécialiste possédant des connaissances particulières, qu'il est difficile pour les programmeurs de travailler avec le 1C moderne.
  • D’un autre côté, en réalité, le client est confronté à tous ces problèmes. Et c'est bien s'il reçoit l'aide soit d'une équipe qui travaille bien et impliquée dans la mise en œuvre de 1C, soit d'un consultant en entreprise avec mon niveau de connaissances qui peut trouver les bons spécialistes et leur confier les bonnes tâches. Dans d’autres cas, l’utilisateur sera confronté à de nombreux problèmes lors du processus de mise en œuvre.

Alors, brièvement sur la plateforme 1C : un grand nombre de possibilités, un haut degré de flexibilité, de nombreuses solutions différentes. Et en même temps : une faible qualité de mise en œuvre, une complexité sans cesse croissante de la solution, un nombre énorme de bugs dans chaque version.

Sur le plan conceptuel, je pense qu'il y a suffisamment d'informations. Et vous pouvez toujours trouver des nuances techniques sur les ressources 1C que j'ai recommandées ci-dessus.

Configurations

Les configurations 1C sont des solutions logicielles prêtes à l'emploi créées sur la base d'une version spécifique de la plateforme. La configuration est ce avec lequel les utilisateurs travaillent directement, l'environnement logiciel dans lequel ils conservent des enregistrements à jour, travaillent avec le flux de documents, les répertoires, etc. Souvent, les utilisateurs ne savent pas de quel type de plate-forme ils disposent. Mais ils savent toujours quelle configuration spécifique est utilisée.

Il existe des configurations :

  1. Standard - rédigé par la société 1C. Ils sont tous présents sur le site 1C.
  2. Atypique – rédigé par des entreprises partenaires.
Au niveau utilisateur, les deux types se distinguent comme suit :
  1. Les configurations standard sont créées et maintenues par 1C. Dans la plupart des cas, ils sont de meilleure qualité, dans ces configurations le travail avec le code est mieux organisé, les solutions optimales sont le plus souvent utilisées et les erreurs sont rapidement corrigées. Bien sûr, tout le monde entend constamment parler de « bugs éternels » dans les configurations 1C typiques, et ils y sont en effet constamment présents, mais cela vaut quand même la peine de donner du crédit aux spécialistes de l'entreprise. Ils corrigent les erreurs critiques très rapidement.
  2. Les configurations atypiques sont écrites par des sociétés partenaires 1C, et il est assez difficile de dire ici quelque chose de précis. De telles configurations sont très différentes. Le plus souvent, ils sont rédigés à l'occasion : spécifiques à un secteur (pour un secteur spécifique) ou rédigés pour une occasion spécifique (une entreprise spécifique). Et ici, il faut comprendre que les entreprises partenaires 1C ont pour la plupart un turnover de personnel assez élevé. Et donc leurs configurations sont écrites de manière plutôt désorganisée. Un programmeur commence à écrire, un autre continue et un troisième termine. En même temps, chacun apporte quelque chose qui lui est propre, sa compréhension, ses solutions, ses idées. Et il applique les développements de son prédécesseur comme bon lui semble, et non comme prévu.
Peut-être vous souvenez-vous du drôle de dessin animé « Trois de Prostokvashino » ? Là, le garçon, oncle Fiodor, a écrit une lettre à ses parents, mais ne l'a pas terminée, il a été distrait et ses amis l'ont terminée à tour de rôle : un chat et un chien. Et chacun d'eux a parlé de ses problèmes. En conséquence, les parents du garçon ont été surpris d’apprendre que « ses pattes lui faisaient mal et que sa queue tombait ». C’est le principe utilisé pour écrire très souvent des configurations non standards.
Le manque de continuité dans l'écriture des configurations non standards, et souvent le manque de documentation suffisamment détaillée, conduit au fait que pour toutes questions de mise en œuvre et de modifications vous devrez contacter la société qui a développé cette configuration.

Les configurations non standard sont également de deux types :
  1. Écrit sur la base des standards. Ces configurations sont créées en ajoutant des fonctionnalités à certaines configurations standard. Par exemple, il existe un produit tel que 1C : Trade Management et CRM. Ici, nous avons combiné la configuration standard du système Trade Management et du système CRM. Il est intéressant de noter que les créateurs de la configuration, la société Rarus, appellent le sous-système Trade Management, alors qu'en fait c'est la base sur laquelle toute la configuration a été écrite.
        avantages de telles configurations - elles sont plus fonctionnelles que les configurations standard, des fonctionnalités souvent très nécessaires leur sont souvent ajoutées.
        Inconvénients– les développeurs de ces configurations n'ont souvent pas le temps de créer leurs mises à jour en temps opportun. Ainsi, il se peut très bien que la société 1C ait déjà publié ses options de mise à jour, et l'utilisateur d'une solution non standard devra attendre un certain temps jusqu'à ce que le développeur crée une mise à jour similaire pour une solution spécifique. De plus, de telles modifications peuvent également être assez « brutes » et contenir de nombreuses erreurs.
       
  2. Configurations écrites à partir de zéro. Lors de leur création, les configurations standards ne sont pas du tout utilisées, les solutions sont écrites pour des tâches spécifiques.
        avantages: la configuration a été écrite exactement selon les besoins du client, il y a tout le nécessaire et presque rien de superflu.
        Inconvénients: Habituellement, lors de l'écriture de telles solutions, les normes de code ne sont pas respectées ; il est très difficile de modifier de tels produits logiciels ; le plus souvent, seul l'auteur peut le faire assez rapidement.
Si je suis venu chez des clients et que je voyais qu'il y avait une configuration atypique écrite à partir de zéro, j'essaie soit de ne pas y toucher du tout, soit de la changer complètement en une solution pratique et universelle. Bien souvent, de telles solutions ne sont pas réellement nécessaires, notamment dans les petites et moyennes entreprises. Dans le même temps, les produits standards sont plus faciles à entretenir et, par conséquent, moins chers, ce qui est toujours important pour les entreprises.

Résumé

Il est important de comprendre que les entrepreneurs recherchent généralement de la configuration. Par exemple, pour automatiser le travail du service comptable, ils ont besoin de 1C.Comptabilité et pour organiser le travail avec les clients - 1C. Gestion commerciale. Ce sont ces produits qui leur sont compréhensibles et donc intéressants.

Ainsi, il est important que le programmeur sache avec quelle plateforme il devra travailler. L'utilisateur est intéressé par la configuration. Dans le même temps, sans l'aide d'un programmeur 1C, une entreprise ne sera dans la plupart des cas pas en mesure de mettre en place la configuration souhaitée. C'est pourquoi j'appelle les spécialistes 1C une partie intégrante de l'écosystème 1C.

Permettez-moi de vous rappeler que les spécialistes 1C sont également différents. Certains sont engagés dans le développement de la plateforme et des configurations standards (employés de la société 1C), d'autres sont ses partenaires et participent à la mise en œuvre et aux modifications, tandis que d'autres aident en privé à résoudre certains problèmes liés à la mise en œuvre de 1C. Ajouter des balises

Partager: