Manuel de conversion de données 2.1. Instruction vidéo pour la conversion

La migration des données entre différentes configurations n'est pas une tâche triviale. Comme toujours, il existe plusieurs solutions, mais toutes ne sont pas optimales. Essayons de comprendre les nuances du transfert de données et choisissons une stratégie universelle pour résoudre ces problèmes.

Le problème de la migration des données (il s'agit uniquement des produits de l'entreprise 1C) d'une solution à une autre ne s'est pas posé hier. La société 1C est bien consciente des difficultés rencontrées par les développeurs lors de la création de migrations, elle fait donc de son mieux pour aider avec des outils.

Lors du développement de la plate-forme, la société a introduit un certain nombre d'outils universels, ainsi que des technologies simplifiant le transfert de données. Ils sont intégrés à toutes les solutions standards et le problème des migrations entre configurations identiques est globalement résolu. La victoire est une fois de plus confirmée par l'intégration étroite des solutions standards.

Avec les migrations entre solutions non standard, la situation est un peu plus compliquée. Un large éventail de technologies permet aux développeurs de choisir indépendamment la meilleure façon de résoudre un problème de leur point de vue.

Considérons quelques-uns d'entre eux :

  • échanger via des fichiers texte ;
  • utilisation de plans d'échange;
  • etc.

Chacun d'eux a ses avantages et ses inconvénients. Pour résumer, le principal inconvénient sera la verbosité. La mise en œuvre indépendante d'algorithmes de migration entraîne des coûts de temps importants, ainsi qu'un long processus de débogage. Je ne veux même pas parler du soutien supplémentaire à de telles décisions.

La complexité et le coût élevé de la maintenance ont incité la société 1C à créer une solution universelle. Technologie qui permet de simplifier au maximum le développement et le support des migrations. En conséquence, l'idée a été mise en œuvre sous la forme d'une configuration distincte - "Conversion de données".

Conversion de données - solution standard, auto-configuration. Tout utilisateur disposant d'un abonnement ITS:Prof peut télécharger ce package entièrement gratuitement depuis le site d'assistance aux utilisateurs ou le disque ITS. L'installation est effectuée de manière standard - comme toutes les autres solutions standards de 1C.

Parlons maintenant un peu des avantages de la solution. Commençons par le plus important : la polyvalence. La solution n'est pas adaptée à certaines configurations/versions de plateforme. Il fonctionne aussi bien avec les configurations standard qu'avec les configurations auto-écrites. Les développeurs bénéficient d'une technologie universelle et d'une approche standardisée pour créer de nouvelles migrations. La polyvalence de la solution permet de préparer des migrations même pour des plateformes autres que 1C:Enterprise.

Le deuxième avantage audacieux concerne les aides visuelles. Des migrations simples sont créées sans programmation. Oui, oui, sans une seule ligne de code ! Rien que pour cela, cela vaut la peine de consacrer du temps à apprendre la technologie une fois, puis d’utiliser des compétences inestimables à plusieurs reprises.

Le troisième avantage que je noterais est l'absence de restrictions sur la distribution des données. Le développeur choisit lui-même la méthode de transmission des données à la configuration du récepteur. Deux options sont disponibles dès le départ : le téléchargement vers un fichier XML et la connexion directe à l'infobase (COM/OLE).

Architecture d'apprentissage

Nous savons déjà que la conversion de données peut faire des merveilles, mais les avantages techniques ne sont pas encore clairs. La première chose à retenir est que toute migration (conversion) de données repose sur des règles d’échange. Règles d'échange - un fichier XML standard avec une description de la structure dans laquelle les données seront téléchargées depuis IB. Le traitement du service qui effectue le téléchargement/le téléchargement des données analyse les règles d'échange et effectue le téléchargement en fonction de celles-ci. Lors du téléchargement, le processus inverse se produit.

La configuration « KD » est une sorte de constructeur visuel avec lequel le développeur crée des règles d'échange. Il ne sait pas comment télécharger les données. Un traitement de service externe supplémentaire inclus dans le kit de distribution sur CD en est responsable. Il en existe plusieurs (XX dans le nom du fichier est le numéro de version de la plateforme) :

  • MDXXExp.epf- le traitement vous permet de télécharger une description de la structure de l'infobase dans un fichier XML. La description de la structure est chargée sur le CD pour une analyse plus approfondie et la création de règles d'échange.
  • V8ExchanXX.epf- télécharge/télécharge les données de l'infobase conformément aux règles d'échange. Dans la plupart des configurations typiques, le traitement est disponible immédiatement (voir l'élément de menu « Service »). Le traitement est universel et n’est lié à aucune configuration/règle spécifique.

Bon, maintenant sur la base de tout ce qui précède, définissons les étapes de développement d'une nouvelle conversion :

  1. Définition des tâches. Il est nécessaire de comprendre clairement quelles données doivent être transférées (à partir de quels objets de configuration) et, surtout, où transférer.
  2. Préparation d'une description des structures de configuration (Source/Récepteur) pour chargement ultérieur sur le CD. La tâche est résolue par le traitement du service MDXXExp.epf.
  3. Chargement des descriptions préparées des structures dans IS.
  4. Création de règles d'échange à l'aide de moyens visuels de CD.
  5. Téléchargement/téléchargement selon les règles de conversion de données créées en utilisant le traitement V8ExchanXX.epf.
  6. Débogage des règles d'échange (si nécessaire).

La conversion la plus simple

Pour la démonstration, nous avons besoin de deux configurations déployées. J'ai décidé de m'arrêter à l'option : « Trade Management » 10ème édition et une petite solution auto-écrite. La tâche consistera à transférer les données de la configuration UT typique. Par souci de concision, nous appellerons la solution auto-écrite « Récepteur » et la gestion des échanges « Source ». Commençons par résoudre le problème en transférant les éléments du répertoire "Nomenclature".

Tout d'abord, examinons le schéma de conversion des données et relisons la liste des actions à effectuer. Ensuite, nous lançons la configuration « Source » et y ouvrons le service traitant MD82Exp.epf.

L'interface de traitement ne brille pas par une abondance de paramètres. L'utilisateur doit uniquement spécifier les types d'objets de métadonnées qui n'entreront pas dans la description de la structure. Dans la plupart des cas, ces paramètres n'ont pas besoin d'être modifiés, car il n'y a pas d'intérêt particulier à décharger les mouvements dans des registres d'accumulation (à titre d'exemple).

Il est plus correct de former le mouvement lors de la conservation des documents dans le récepteur. Tous les mouvements seront effectués par le document lui-même après le transfert. Le deuxième argument pour défendre les paramètres par défaut est de réduire la taille du fichier téléchargé.

Certains documents (surtout dans les configurations typiques) forment des mouvements dans plusieurs registres. Décharger toute cette économie rendra le fichier XML résultant trop volumineux. Cela peut rendre difficile le transport et le chargement ultérieurs dans la base du récepteur. Plus le fichier de données est volumineux, plus il faut de RAM pour le traiter. Au cours de ma pratique, il m'est arrivé de rencontrer des fichiers téléchargés d'une taille indécente. De tels fichiers refusaient complètement d'être analysés par des moyens standards.

Nous laissons donc tous les paramètres par défaut et téléchargeons la description de la configuration dans un fichier. Nous répétons la même procédure pour la deuxième base.

Ouvrez le CD et sélectionnez dans le menu principal « Répertoires » -> « Configurations ». Le répertoire stocke les descriptions des structures de toutes les configurations pouvant être utilisées pour créer des conversions. Nous chargeons la description de la configuration une fois, puis nous pouvons l'utiliser à plusieurs reprises pour créer différentes conversions.

Dans la fenêtre du répertoire, appuyez sur le bouton « Ajouter» et dans la fenêtre qui apparaît, sélectionnez un fichier avec une description de la configuration. Cochez la case « Télécharger vers une nouvelle configuration » et cliquez sur le bouton « Effectuer le téléchargement ». Nous effectuons des actions similaires avec la description de la structure de la deuxième configuration.

Tout est désormais prêt pour créer les règles d’échange. Dans le menu principal du CD, sélectionnez « Références » -> « Conversions ». Ajout d'un nouvel élément. Dans la fenêtre de création d'une nouvelle conversion, vous devez préciser : la configuration source (sélectionnez UT) et la configuration du récepteur (sélectionnez "Récepteur"). Ensuite, ouvrez l'onglet « Avancé » et remplissez les champs suivants :

  • Nom du fichier de règles d'échange - les règles d'échange créées seront enregistrées sous ce nom. Le nom du fichier peut être modifié à tout moment, mais il est préférable de le définir maintenant. Cela permettra de gagner du temps à l'avenir. J'ai nommé les règles de la démo : "rules-ut-to-priemnik.xml".
  • name - le nom de la conversion. Le nom peut être absolument n'importe quoi, je me suis limité à « Demo. UT au récepteur ».

Voilà, cliquez sur "OK". Immédiatement, une fenêtre apparaît devant nous nous demandant de créer automatiquement toutes les règles. Accepter une offre aussi alléchante donnera à l'assistant une commande pour analyser automatiquement la description des configurations sélectionnées et générer indépendamment des règles d'échange.

Mettons tout de suite un point sur le « et ». Le maître ne pourra rien générer de sérieux. Il ne faut cependant pas écarter cette possibilité. Si vous devez établir un échange entre des configurations identiques, alors les services d'un assistant vous seront très utiles. Pour notre exemple, le mode manuel est préférable.

Regardons de plus près la fenêtre « Paramètres des règles d'échange ». L'interface peut sembler un peu déroutante - un grand nombre d'onglets remplis de commandes. En fait, tout n'est pas si difficile, on commence à s'habituer à cette folie après quelques heures de travail avec l'application.

A ce stade, nous nous intéressons à deux onglets : « Règles de conversion des objets » et « Règles de chargement des données ». Sur le premier, nous devons mettre en place des règles de correspondance, c'est-à-dire comparer des objets de deux configurations. Sur le second, déterminez les objets possibles qui seront à la disposition de l'utilisateur pour le déchargement.

Dans la seconde moitié de l'onglet « Règles de conversion d'objets », il y a un panneau supplémentaire avec deux onglets : « Conversion de propriétés » et « Conversion de valeur". Le premier sélectionnera les propriétés (requis) de l'objet sélectionné, et le second est nécessaire pour travailler avec des valeurs prédéfinies (par exemple, des éléments de dictionnaire prédéfinis ou des éléments d'énumération).

Très bien, créons maintenant des règles de conversion pour les répertoires. Vous pouvez effectuer cette action de deux manières : utilisez l'assistant de synchronisation d'objets (cliquez sur "") ou ajoutez manuellement des correspondances pour chaque objet.

Pour gagner de la place, nous utiliserons la première option. Dans la fenêtre de l'assistant, décochez la case « Documentation" (nous ne nous intéressons qu'aux annuaires) et élargir le groupe " Livres de référence". Nous parcourons soigneusement la liste et examinons les noms des répertoires qui peuvent être comparés.

Dans mon cas, il existe trois répertoires de ce type : Nomenclature, Organisations et Entrepôts. Il existe également un répertoire Clients qui effectue la même charge sémantique que « Contreparties"de la configuration" Utah". Certes, le maître ne pouvait pas les comparer en raison de leurs excellents noms.

Nous pouvons réparer ce défaut nous-mêmes. Rechercher dans la fenêtre Mappages d'objets» manuel « Clientèle», et dans la colonne « Source », sélectionnez l'ouvrage de référence « Contreparties ». Cochez ensuite la case dans la colonne "Type" et cliquez sur le bouton "Ok".

L'assistant de synchronisation d'objets vous invitera à créer automatiquement des règles pour convertir les propriétés de tous les objets sélectionnés. Les propriétés seront associées par nom, et pour notre démonstration cela suffira amplement, nous en convenons. La prochaine question sera une proposition visant à créer des règles de téléchargement. Acceptons-le.

La base des règles de change est prête. Nous avons choisi les objets à synchroniser et les règles de conversion des propriétés et les règles de téléchargement ont été créées automatiquement. Sauvegardons les règles d'échange dans un fichier, puis ouvrons la « Source » IB (dans mon cas, il s'agit de UT) et démarrons le traitement du service dedans. V8Exchan82.epf.

Tout d'abord, dans la fenêtre de traitement, sélectionnez les règles d'échange que nous avons créées. Nous répondons à la question du chargement des règles par l'affirmative. Le traitement analysera les règles d'échange et construira une arborescence du même nom pour les objets disponibles au déchargement. Pour cet arbre, nous pouvons définir toutes sortes de filtres ou échanger des nœuds, en modifiant ceux dont nous avons besoin pour sélectionner les données. Nous souhaitons télécharger absolument toutes les données, il n'est donc pas nécessaire d'installer des filtres.

Une fois le processus de téléchargement des données dans un fichier terminé, accédez à IB " Destinataire". Nous y ouvrons également le traitement V8Exchan82.epf, seulement cette fois nous allons dans l'onglet « Chargement des données ». Sélectionnez le fichier de données et cliquez sur le bouton "Télécharger". Ça y est, les données ont été transférées avec succès.

Tâches du monde réel

La première démo pourrait être trompeuse. Tout semble assez simple et logique. En fait, ce n'est pas vrai. Dans le travail réel, des tâches surviennent qui sont difficiles, voire totalement impossibles, à résoudre en utilisant uniquement des moyens visuels (sans programmation).

Afin de ne pas être déçu par la technologie, j'ai préparé de vraies tâches. Vous les rencontrerez certainement au travail. Ils n’ont pas l’air si anodins et vous font considérer la conversion de données sous un nouvel angle. Examinez attentivement les exemples présentés et n'hésitez pas à les utiliser comme extraits pour résoudre de vrais problèmes.

Tâche numéro 1. Remplissez les détails manquants

Supposons que nous devions transférer le répertoire " Contreparties". Le destinataire dispose à cet effet d'un ouvrage de référence similaire « Clients ». Il est tout à fait adapté au stockage de données, mais il a des accessoires » Organisation», vous permettant de séparer les contreparties par appartenance à l'organisation. Par défaut, toutes les contreparties doivent appartenir à l'organisation actuelle (elle peut être obtenue à partir de la constante du même nom).

Il existe plusieurs solutions au problème. Nous examinerons la possibilité de remplir les accessoires » Organisation« directement dans la base » Destinataire", c'est à dire. au moment du chargement des données. L'organisation actuelle est stockée dans une constante, il n'y a donc aucun obstacle à l'obtention de cette valeur. Ouvrons la règle de conversion d'objet (ci-après dénommée FRP) " Clientèle» (double-cliquez sur l'objet) et dans l'assistant de configuration des règles, rendez-vous dans la section « Gestionnaires d'événements ». Dans la liste des gestionnaires, nous trouvons « Après le chargement”.

Décrivons le code permettant d'obtenir l'organisation actuelle avec affectation ultérieure à l'attribut. Au moment où le gestionnaire « Après chargement » est déclenché, l'objet sera entièrement formé, mais pas encore écrit dans la base de données. Personne ne nous interdit de le modifier à notre discrétion :

Si PAS Object.ThisGroup Then Object.Organization = Constants.CurrentOrganization.Get(); Fin si;

Avant de remplir les accessoires " Organisation» il faut vérifier la valeur de l'attribut « Ce groupe". Pour le guide " Clientèle» le drapeau hiérarchique est activé, il est donc nécessaire de vérifier la présence d'un groupe. De même, le remplissage de tous les détails est effectué. Assurez-vous de lire l'aide pour les autres options de gestionnaire " Après le chargement". Par exemple, parmi eux il y a un paramètre " Refus". Si la valeur "True" lui est attribuée, alors l'objet ne sera pas écrit dans la base de données. Ainsi, il devient possible de limiter les objets en écriture au moment du chargement.

Tâche numéro 2. Détails dans le registre d'information

Dans le manuel " Contreparties"Configuration UT, il y a des détails" Acheteur" Et " Fournisseur". Les deux accessoires sont de type " booléen» et servent à déterminer le type de contrepartie. En BI " Destinataire», à l'ouvrage de référence « Clientèle"Il n'y a pas de détails similaires, mais il existe un registre d'informations" Types de clients". Il remplit une fonction similaire et peut stocker plusieurs balises pour un seul client. Notre tâche est de transférer les valeurs des détails vers des enregistrements séparés du registre d'informations.

Malheureusement, les moyens visuels seuls ne peuvent pas non plus y faire face. Commençons petit, créons un nouveau PCO pour le registre d'informations " Types de clients". Ne citez rien comme source. Refuser la création automatique de règles de téléchargement.

L'étape suivante consiste à créer les règles de téléchargement. Allez dans l'onglet approprié et cliquez sur le " Ajouter". Dans la fenêtre d'ajout des règles d'upload, renseignez :

  • méthode d'échantillonnage. Remplacer par « Algorithme arbitraire » ;
  • règle de conversion. Sélectionnez le registre d'informations « Types de clients » ;
  • Code (nom) de la règle. Nous l'écrivons comme « Téléchargement d'espèces clientes » ;

Vous devez maintenant écrire le code pour sélectionner les données à télécharger. C'est là que le paramètre " Échantillonnage de données". Dans celui-ci, nous pouvons placer une collection avec un ensemble de données préparé. Paramètre " Échantillonnage de données" peut prendre différentes valeurs - résultat de la requête, sélection, collections de valeurs, etc. Nous l'initialisons sous forme d'un tableau de valeurs à deux colonnes : client et type de client.

Vous trouverez ci-dessous le code du gestionnaire d'événements " Avant le traitement". Il initialise le paramètre « Échantillonnage de données» suivi du remplissage des données du répertoire « Contreparties". Ici, il convient de faire attention à remplir la colonne " Type de client". Dans « UT », on a des fonctionnalités de type « Booléen », et dans le destinataire, une énumération.

À ce stade, nous ne pouvons pas les amener au type souhaité (ce n'est pas dans l'UT), donc pour l'instant nous le laisserons sous forme de chaînes. Vous n'êtes pas obligé de le faire, mais je souhaite immédiatement montrer comment convertir un type manquant dans la source.

DataFetch = NewValueTable(); Sélection de données.Columns.Add("Client"); Sélection de données.Columns.Add("ClientType"); Sélection de DataFrom the Directory = Directories.Contractors.Select(); Lors de la récupération de DataFromCatalog.Next(), boucle si FetchingDataFromCatalog.ThisGroup puis continuez ; Fin si; Si DataFetchFromCatalog.Buyer Then NewString = DataFetch.Add(); NewString.Client = SamplingDataFromCatalog.Reference; NewString.ClientType = "Acheteur" ; Fin si; Si DataFetchFromCatalog.Provider Then NewString = DataFetch.Add(); NewString.Client = SamplingDataFromCatalog.Reference; NewString.ClientType = "Fournisseur" ; Fin si; Fin du cycle ;

Enregistrez la règle de téléchargement de données et revenez au «  Règles de conversion d'objet". Ajoutons pour le registre d'information « Types de clients» Règles de conversion de propriété : client et type de client. Nous laissons la source vide, et dans le gestionnaire d'événements « Avant le déchargement » nous écrivons :

//Pour la propriété "Client" Value = Source.Client; //Pour la propriété « CustomerType » If Source.Customer = "Buyer" Then Expression = "Enumerations.CustomerTypes.Buyer" ElseIf Source.Customer = "Supplier" Then Expression = "Enumerations.CustomerTypes.Supplier"; Fin si;

Dans la liste, les détails sont renseignés en fonction de la sélection de données effectuée. On passe le client simplement en lien, et on écrit le type de client dans le paramètre " Expression". Les données de ce paramètre seront interprétées dans le récepteur et, une fois exécuté, l'attribut sera rempli avec la valeur correcte de l'énumération.

Ça y est, les règles d'échange sont prêtes. L'exemple considéré s'est avéré assez universel. Une approche similaire est souvent utilisée lors de la migration de données à partir de configurations créées sur la plateforme 7.7. Un exemple frappant en est le transfert de détails périodiques.

Tâche numéro 3. Astuces tabulaires

Il existe souvent des tâches qui nécessitent de diviser les lignes d'une partie tabulaire en plusieurs. Par exemple, dans la configuration initiale, les services et les biens sont enregistrés dans une seule section tabulaire, tandis que le stockage de ces entités est séparé dans le récepteur. Encore une fois, le problème ne peut être résolu par des moyens visuels. Ici, il convient de prendre comme base la solution du deuxième problème.

Nous créons une règle de téléchargement de données, spécifions un algorithme arbitraire et écrivons une requête dans le gestionnaire « Avant le téléchargement » pour obtenir les données de la section tabulaire.

Pour gagner de la place, je ne donnerai pas le code (vous pouvez toujours vous référer au code source) de la requête - il n'y a rien d'inhabituel là-dedans. Nous trions l'échantillon résultant et plaçons les résultats triés dans le paramètre déjà familier " Échantillonnage de données". Encore une fois, il est pratique d'utiliser une table de valeurs comme une collection :

DataFetch = NewValueTable(); //Ici, il y aura une section tabulaire supplémentaire Data Selection.Columns.Add("Products"); //Ici, il y aura également une section tabulaire Data Selection.Columns.Add("Services"); Sélection des données depuis.Columns.Add("Link");

Tâche numéro 4. Transférer des données vers une opération

Si une organisation utilise plusieurs systèmes comptables, tôt ou tard, il sera nécessaire de migrer les données avec la formation ultérieure des publications.

Dans la configuration " PA"il existe un document universel" Opération» et il est idéal pour former plus de fils. Voici juste un problème : le document est créé de manière astucieuse et il n'est pas si facile d'y transférer des données.

Un exemple d'une telle conversion peut être trouvé dans le code source de l'article. La quantité de code s'est avérée assez importante, il ne sert donc à rien de la publier pour l'article. Permettez-moi simplement de dire que le téléchargement utilise à nouveau un algorithme arbitraire dans les règles de téléchargement des données.

Tâche numéro 5. Synchronisation des données sur plusieurs attributs

Nous avons déjà abordé quelques exemples, mais jusqu'à présent, nous n'avons pas parlé de synchronisation d'objets lors de la migration. Imaginons que nous devions transférer des contreparties et que certaines d'entre elles se trouvent probablement dans la base de données des destinataires. Comment transférer des données et éviter les doublons ? À cet égard, CD propose plusieurs façons de synchroniser les objets transférés.

Le premier est par identifiant unique. De nombreux objets possèdent un identifiant unique qui garantit l'unicité au sein d'une table. Par exemple, dans le manuel " Contreparties" ne peut pas avoir deux éléments avec le même ID. Le CD fait un calcul pour cela, et pour toutes les PSP créées, la recherche par identifiant est immédiatement activée par défaut. Lors de la création de la PSP, vous avez dû remarquer l'icône en forme de loupe à côté du nom de l'objet.

La synchronisation par un identifiant unique est une méthode fiable, mais elle est loin d'être toujours adaptée. Lors de la fusion de répertoires " Contreparties» (de plusieurs systèmes différents) il n'est pas d'une grande aide.

Dans de tels cas, il est plus correct de synchroniser les objets selon plusieurs critères. Il est plus correct de rechercher des contreparties par TIN, KPP, Nom ou de diviser la recherche en plusieurs étapes.

La conversion des données ne limite pas le développeur dans la définition des critères de recherche. Prenons un exemple abstrait. Supposons que nous devions synchroniser les répertoires " Contreparties» à partir de différentes bases d’informations. Préparons un PCP et dans les paramètres des règles de conversion d'un objet, cochez la case " Continuez à chercher dans les champs de recherche si l'objet récepteur n'est pas trouvé par ID". Avec cette action, nous avons immédiatement défini deux critères de recherche : par un identifiant unique et des champs arbitraires.

Nous avons le droit de choisir nous-mêmes les domaines. Après avoir noté le TIN, le KPP, le Nom, nous indiquerons immédiatement plusieurs critères de recherche. Confortable? Tout à fait, mais encore une fois, cela ne suffit pas. Et si on veut changer les critères de recherche ? Par exemple, nous recherchons d'abord un tas de TIN + KPP, et si nous ne trouvons rien, nous commençons à tenter notre chance avec le nom.

Il est tout à fait possible de mettre en œuvre un tel algorithme. Dans le gestionnaire d'événements Champs de recherche« on peut préciser jusqu'à 10 critères de recherche et pour chacun d'eux définir sa propre composition des champs de recherche :

Si SearchOptionNumber = 1 alors SearchPropertyNameString = « TIN, KPP » ; ElseIfSearchVariantNumber = 2 ThenSearchPropertyNameString = « Nom » ; Fin si;

Il existe toujours plusieurs solutions.

Toute tâche a plusieurs solutions, et le transfert de données entre différentes configurations ne fait pas exception. Chaque développeur a le droit de choisir sa propre solution, mais si vous devez constamment développer des migrations de données complexes, je vous recommande fortement de faire attention à la configuration "". Même s'il faut d'abord investir des ressources (du temps) dans la formation, mais elles seront plus que payantes sur le premier projet plus ou moins sérieux.

À mon avis, la société 1C contourne injustement le sujet de l'utilisation de la conversion de données. Pendant toute la durée de l'existence de la technologie, un seul livre a été publié à ce sujet : « 1C : Entreprise 8. Conversion de données : échange entre solutions applicatives ». Le livre est assez ancien (2008), mais il est tout de même souhaitable de s'y familiariser.

La connaissance de la plateforme est toujours requise

» est un outil universel, mais si vous envisagez de l'utiliser pour créer des migrations de données à partir de configurations développées pour la plateforme 1C:Enterprise 7.7, vous devrez alors passer du temps à vous familiariser avec le langage intégré. La syntaxe et l'idéologie de la langue sont très différentes, il faut donc passer du temps à apprendre. Le reste du principe reste le même.

La conversion de données 2.0 et 2.1 est une configuration technologique 1C implémentée sur les versions de plateforme de 8.1 à 8.3.

La tâche principale de l'outil est d'écrire des règles d'échange entre les solutions d'application 1C 8 et 7. La version actuelle de la conversion des données est aujourd'hui la 3.0.

La conversion de données est une configuration très utile, grâce à laquelle vous pouvez résoudre non seulement le problème du transfert d'informations d'une base d'informations à une autre, mais aussi, par exemple, la conversion d'informations au sein d'une base de données.

La configuration est très pratique à utiliser quand .

La conversion de données sera utile à tout programmeur : avoir les compétences nécessaires pour créer des règles d'échange est un sérieux plus pour les compétences professionnelles.

Pour apprendre à travailler avec la configuration, il est préférable de résoudre des problèmes pratiques. Essayez de vous proposer des tâches, par exemple : transférer n'importe quelle information d'une base de données à une autre, transformer un document de vente en un document de réception, « transformer » les soldes comptables actuels en un document « d'entrée de solde » et d'autres tâches.

Il sera très utile de comprendre les règles "typiques" de l'échange 1C 8.3, on y trouve souvent des exemples intéressants de mise en œuvre de tâches.

Pour comprendre les bases, vous aurez besoin de matériel, considérez-les ci-dessous.

Instruction vidéo pour la conversion

Pour les bases de la configuration de l'échange de données dans 1C à l'aide de la configuration « Conversion de données 1C », voir la vidéo pour un exemple :

Matériel, manuels pour étudier 1C Data Conversion 2.0

Il n'y a pas trop de matériel et de documentation sur le net, j'ai essayé de rassembler les matériaux les plus importants et les plus intéressants :

0. Tout d'abord, je conseille le cours vidéo gratuit d'Ilya Leontiev, il est disponible sur lien.

1. Je conseillerais tout d'abord d'utiliser l'aide intégrée à la configuration. C'est vraiment bien écrit et bien implémenté techniquement :

2. La deuxième source d'information la plus importante est le site http://www.mykod.info/ (le site a été fermé), spécialisé uniquement dans la conversion de données. Là, vous pouvez télécharger un grand nombre de matériaux de conversion.

3. Séparément, je voudrais souligner le manuel de formation - (auteur - Olga Kuznetsova).

1. Introduction.

2. Ce dont vous avez besoin : Configuration 1C : Conversion des données 2. * et traitement à partir du package. Pour un exemple de tâches, nous prenons les configurations 1C : Trade Management 11 et 1C : BP 3. *.

Ainsi, pour développer des règles de téléchargement de données vers 1C, vous aurez besoin de la configuration 1C : Object Conversion 2, ainsi que du traitement inclus dans le package.

Par exemple, nous avons déjà déployé la base de conversion et l'avons lancée.

Nous écrirons le développement des règles d'échange entre la configuration 1C : Trade Management 11 et 1C : Enterprise Accounting 3 (règles d'échange UT/BUH).

3. Nous aurons besoin d'un traitement pour décharger la structure des métadonnées et l'échanger.

La première chose dont vous avez besoin pour le développement, ce sont des fichiers avec une structure de métadonnées. Cela se fait à l'aide du traitement de déchargement de la structure des métadonnées inclus dans le package de conversion d'objet.

En fait, dans le répertoire de configuration décompressé pour les configurations sur les formulaires gérés, nous souhaitons traiter MD83Exp.epf. Si le déchargement doit être effectué à partir de configurations sur des formulaires standards, alors le traitement MD82Exp.epf est utilisé. C'est le cas si, par exemple, vous avez besoin d'obtenir une structure à partir de configurations telles que 1C : UT 10, 1C : Manufacturing Enterprise Management 1.3, 1C : Integrated Automation 1.1, 1C : Zup 2.5 et ainsi de suite.

De plus, pour télécharger et télécharger des données dans 1C en utilisant nos règles, vous aurez besoin du traitement de « Échange universel de données au format XML » V8Exchan83.epf pour les configurations sur des formulaires gérés tels que 1C : Trade Management 11. *, 1C BP 3, 1C : ERP 2. * et autres. Et par conséquent V8Exchan83.epf - pour les configurations sur des formulaires réguliers.

4. Téléchargement de la structure des métadonnées de configuration 1C : Trade Management 11.3 et 1C : Enterprise Accounting 3.0.*

Commençons par décharger la structure des métadonnées de la configuration 1C : Enterprise Accounting 3.
Ouvrir le traitement MD83Exp.epf

Il existe des paramètres supplémentaires dans le formulaire de traitement, où nous pouvons activer ou désactiver l'option de déchargement des registres et des mouvements dans 1C. Il y a aussi le choix où aura lieu le déchargement : sur le serveur 1C ou « sur le client ». Spécifiez le nom du fichier dans lequel la structure de données sera déchargée. De même, nous déchargeons la structure des métadonnées de configuration Trade Management 11.

Vous devez maintenant charger la configuration dans la base de données de conversion. Cet élément est accessible aussi bien depuis la liste des configurations que depuis la liste des conversions. Démarrons simplement depuis le bureau :

Dans la boîte de dialogue, chargez la structure tiers :

Et de même – la structure du Département du Commerce.

Une fois le téléchargement terminé, une boîte de dialogue apparaîtra dans laquelle vous pourrez spécifier un nom qui vous convient.

6. Création de règles de conversion en 1C sur un exemple précis de la tâche.

Ensuite, allez dans "Définition des règles d'objet", où nous créons un nouveau paramètre.
Dans la boîte de dialogue de création d'une conversion, sélectionnez la configuration "source" et la configuration "destination" (que vous avez préalablement chargée) et cliquez sur OK.

Puisque dans cet article j'avais prévu de montrer la création « from scratch » et « sans poubelle », je vous rappelle qu'on ne crée rien automatiquement. Aucun prototype.

Nous ne ferons rien dans cette boîte de dialogue, cliquez simplement sur - "Fermer".

Créons des règles pour décharger non pas un document dans un autre, mais un type dans un autre, par exemple, le document Ventes de biens et services de UT 11 avec les répertoires nécessaires au document Réception de biens et services dans BP 3.

Nous créons donc un nouveau PKO (la règle de conversion des objets en 1C)

Sélectionnez la source Réalisation des biens de services et le destinataire de Réception des biens de services et cliquez sur OK.
Dans ce cas, une boîte de dialogue apparaîtra, où nous refuserons à nouveau la création automatique des PKC (Property Conversion Rules). Ensuite, nous sélectionnons uniquement ceux nécessaires.

Mais à la proposition de créer un PVD (règles de chargement des données), nous répondons « Oui ».

Des VDP sont créés, ce qui sera reflété dans le traitement de l'échange XML universel pour la sélection :

Des règles de conversion de données avec des règles de conversion de propriétés vides seront également créées.

De plus, il est clair que par défaut il est proposé de rechercher le FSP par l'identifiant interne de l'objet. Ceci est indiqué par une loupe près du PKO. Nous ferons notre propre recherche, et nous la ferons par numéro de document et par date en début de journée.

Suppression de la recherche d'UIO :

Commençons maintenant à faire correspondre les propriétés nécessaires (requis) de l'objet. Pour ce faire, cliquez sur « Synchronisation des propriétés » (étiquette « 1 » sur l'écran). Nous supprimons la création récursive de règles ("2"). Nous supprimons tous les détails marqués ("3"). Et nous choisirons nous-mêmes ce dont nous avons besoin.

Par exemple, choisissez ce dont vous avez besoin :

J'attire votre attention sur le fait que nous transformerons le PKS de la contrepartie en organisation et l'organisation en contrepartie, et nous comparerons également certains détails dont le nom ne correspond pas, par exemple « Devise » et « Document ». devise".

Où l’on voit qu’il n’y a pas encore de règles de conversion.

Commençons par les détails à parcourir et à décrire. Tout d'abord, on met en place la recherche du document comme je l'ai écrit plus tôt, on décharge et recherche le document au début de la date, et on va changer la numérotation. Nous remplacerons les trois premiers caractères par notre préfixe « UTB ». Et comme en BP et UT la numérotation est de 11 caractères chacune, on fait un numéro composé : notre préfixe et 8 caractères de la source. Exemple de capture d'écran ci-dessous.

Nous déchargeons toujours les documents non effectués et sans mouvement. Nous supposons que les documents seront conservés dans le récepteur après vérification par l'utilisateur.

Pour ce faire, le PCS, après avoir défini comment il n'est pas tenu, 0 ou 1, est utilisé comme booléen.

En utilisant la devise comme exemple, nous créons une règle pour convertir un objet pour le PCS. En même temps, on considère qu'il existe des devises dans les deux bases, et qu'elles doivent être synchronisées par code. Nous ne créerons donc pas tous les PCS dans le CSP des devises, mais ajouterons uniquement le Code pour la recherche. Ceux. de la proposition de créer un PCS pour l'objet - nous refusons.

La règle de conversion créée a été remplacée dans le PQS du document par le SCS. Et la règle par défaut elle-même est proposée par un identifiant unique. Nous le corrigeons, effectuons une recherche dans le code et définissons la propriété afin de ne pas créer de nouvel objet.

En conséquence, nous obtenons l'option :

De plus, par analogie, nous créons pour le reste des détails du PKO et du PKS. De plus, nous paramétrons la recherche d'une organisation par contrepartie et vice versa par TIN. Voilà à quoi cela ressemble avec un minimum de détails (vous pouvez en ajouter si nécessaire).

Pour les accords PKO des contreparties, nous recherchons la contrepartie PKS, son nom et son propriétaire.

Voyons comment spécifier la valeur souhaitée dans le type d'énumération dans le PCS. Par exemple, l'attribut « Type d'opération ». Ici, vous pouvez utiliser diverses conditions et valeurs de remplacement. Par exemple, nous avons besoin que le « type d'opération » soit toujours déchargé « Marchandises », dans ce cas il suffit d'écrire la valeur souhaitée dans le « front » sous forme de chaîne.

Ce qui suit montre comment définir sans difficulté et dans la plupart des cas PKS pour la multiplicité de règlement, le taux de règlement et les comptes.

Pour PKO Nomenclature, nous quittons la recherche par identifiant unique interne. Mais je ferai attention à la manière dont vous pouvez redéfinir votre groupe. Par exemple, nous sommes d'accord qu'une nouvelle nomenclature soit déchargée de la configuration 1C : Trade Management 11, mais il faut que la nomenclature soit collectée dans un groupe spécifique « NotreGroupe ».

Pour mettre en œuvre cette tâche, nous créons un autre PKO. Appelons-le « Nomenclature Parent », que nous indiquerons dans le PDN du parent dans la règle de conversion.

Nous définissons deux recherches : par nom, où le nom de notre groupe est codé en dur, et la propriété obligatoire de l'attribut "ThisGroup" sur true.

Puisque nous avons décidé que toute la nomenclature tombait dans notre groupe, il n'est pas nécessaire de décharger les groupes de l'UT 11 lors du déchargement. Pour ce faire, dans le Nomenclature PKO, dans le gestionnaire d'événements « Avant le déchargement », nous mettrons un filtre qu'il n'est pas nécessaire de décharger les groupes « Panne = Source ». Ce groupe ;".

Dans la mise en œuvre des biens et services DRP (règles de téléchargement de données), nous ajouterons un filtre afin que les documents marqués pour suppression ne soient pas téléchargés. Pour ce faire, dans le PDP dans les gestionnaires d'événements "BeforeUnloading" nous écrirons le filtre "Rejection = Object.DeletionMark;".


Enregistrez les règles développées dans un fichier.


7. Résumé : Téléchargement et téléchargement de données en utilisant les règles d'échange de données développées.

Nous ouvrons dans 1C : Trade Management 11 le traitement « Échange universel de données au format XML » V8Exchan83.epf.

Le déchargement est terminé, maintenant avec le même traitement que nous chargeons dans 1C : Enterprise Accounting 3.


Téléchargement terminé. Vérifions qu'il est chargé. Ainsi, le document est chargé, comme nous le souhaitions - nous avons l'organisation chargée dans la contrepartie et la contrepartie dans l'organisation. Les comptes sont tous téléchargés et installés. Nous avons obtenu le numéro du document avec notre préfixe et en début de journée. Tous les détails enregistrés ont été renseignés.

Nous vérifions le chargement de la nomenclature. Nous voyons que tout s’est déroulé comme nous l’avions prévu.


Nous avons créé et rempli les détails comme nous le souhaitions. Il existe de nombreuses subtilités dans la conversion et quelques éléments simples mais nécessaires qui aident à écrire avec précision la conversion. Et cela vous permet de minimiser les erreurs, de ne pas gâcher les données existantes et de vous débarrasser des déchets inutiles. C’est l’un des exemples les plus simples. Vous pouvez également convertir un objet en plusieurs, ou vice versa, plusieurs en un.

Il existe maintenant la conversion de données 3, cela résout d'autres problèmes. Par conséquent, la conversion 2 est également nécessaire. Bonne chance à tous dans l'apprentissage et la maîtrise.

Bien sûr, si vous êtes programmeur et que c'est votre travail principal, vous pouvez essayer d'écrire la conversion vous-même. Mais sinon, vous devez valoriser votre temps dans votre domaine d'activité et demander à des professionnels de réaliser cette tâche.

Vous avez aimé l'article ? Partager avec des amis: