Exemples de conversion de données 1c

La conversion de données 2.0 et 2.1 est une configuration technologique de 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 applicatives 1C 8 et 7. Version actuelle conversion de données aujourd'hui - 3.0.

La conversion de données est une configuration très utile : avec son aide, 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 avec .

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 une configuration, il est préférable de résoudre des problèmes pratiques. Essayez de vous proposer des tâches, par exemple : transférer certaines informations d'une base de données à une autre, transformer un document de vente en document de réception, « saisir » les soldes comptables actuels dans un document « saisir les soldes » et d'autres tâches.

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

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

Instructions vidéo pour la conversion

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

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

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

0. Tout d'abord, je recommande le cours vidéo gratuit d'Ilya Leontyev, 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 techniquement bien mis en œuvre :

2. La deuxième source d'information la plus importante est le site http://www.mykod.info/ (le site est fermé), spécialisé spécifiquement 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 - (auteur - Olga Kuznetsova).

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 (nous parlons uniquement des produits de l'entreprise 1C) d'une solution à une autre ne s'est pas posé hier. La société 1C comprend parfaitement les difficultés rencontrées par les développeurs lors de la création de migrations. Elle essaie donc par tous les moyens d'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 à tout solutions standards et le problème des migrations entre configurations identiques En général, j'ai décidé. 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 choix de technologies permet aux développeurs de choisir indépendamment la manière optimale de résoudre un problème de leur point de vue.

Examinons-en quelques-uns :

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

Chacun d’eux a ses propres avantages et inconvénients. Pour résumer, le principal inconvénient sera sa 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 d’un soutien supplémentaire à de telles décisions.

La complexité et le coût élevé du support ont incité la société 1C à créer une solution universelle. Des technologies qui permettent de simplifier au maximum le développement et l’accompagnement 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, configuration indépendante. 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 à des configurations/versions de plateforme spécifiques. Il fonctionne aussi bien avec les configurations standard que personnalisées. Les développeurs disposent 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 gros avantage 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).

Étudier l'architecture

Nous savons déjà que la conversion de données peut faire des merveilles, mais ce que cela signifie n'est pas encore tout à fait clair. avantages techniques. La première chose que vous devez comprendre est que toute migration (conversion) de données est basée sur des règles d’échange. Les règles d'échange sont un fichier XML standard décrivant la structure dans laquelle les données de sécurité des informations seront téléchargées. Le service de traitement qui télécharge/télécharge les données analyse les règles d'échange et effectue le téléchargement en fonction de celles-ci. Lors du chargement, le processus inverse se produit.

La configuration « CD » est une sorte de constructeur visuel à l'aide duquel 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 package 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/uploade les données de la base d'informations conformément aux règles d'échange. Dans la plupart des configurations typiques, le traitement est présent 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 de la tâche. Il est nécessaire de bien comprendre quelles données doivent être transférées (à partir de quels objets de configuration) et, surtout, où les transférer.
  2. Préparation des descriptions des structures de configuration (Source/Sink) pour un chargement ultérieur sur le CD. Le problème est résolu par le traitement du service MDXXExp.epf.
  3. Chargement des descriptions préparées des structures dans la sécurité de l'information.
  4. Création de règles d'échange à l'aide d'un outil visuel CD.
  5. Effectuer un téléchargement/téléchargement conformément aux règles de conversion de données créées à l'aide du traitement V8ExchanXX.epf.
  6. Débogage des règles d'échange (si nécessaire).

La conversion la plus simple

Pour la démonstration, nous aurons besoin de deux configurations déployées. J'ai décidé d'opter pour l'option : « Trade Management » 10ème édition et une petite solution écrite maison. La tâche sera de transférer les données de la configuration standard « UT ». Par souci de concision, appelons la solution auto-écrite « Sink » et la gestion commerciale « Source ». Commençons par résoudre le problème en transférant des é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 traitement du service MD82Exp.epf.

L'interface de traitement ne dispose pas d'une multitude de paramètres. L'utilisateur doit uniquement indiquer les types d'objets de métadonnées qui ne seront pas inclus 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 à l'aide de registres d'accumulation (à titre d'exemple).

Il est plus correct de former le mouvement tout en conservant les 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 en faveur des paramètres par défaut est la réduction de la taille des fichiers lors du téléchargement.

Certains documents (notamment configurations typiques) forment des mouvements sur plusieurs registres. Décharger toute cette économie rendra le résultat Fichier XML trop grand. Cela peut compliquer le transport et le chargement ultérieurs dans la base du récepteur. Plus le fichier de données est volumineux, plus vous en aurez besoin mémoire vive pour le traiter. Au cours de ma pratique, j'ai eu l'occasion de rencontrer des fichiers téléchargés d'une taille indécente. Ces fichiers refusaient complètement d'être analysés à l'aide d'outils standard.

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 une procédure similaire 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 fois pour créer différentes conversions.

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

Vous êtes maintenant prêt à créer des règles d'échange. Dans le menu principal du CD, sélectionnez « Répertoires » -> « Conversions ». Ajoutez un nouvel élément. Dans la fenêtre de création d'une nouvelle conversion, vous devez préciser : la configuration source (sélectionner UT) et la configuration destination (sélectionner « 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. Vous pouvez modifier le nom du fichier à 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 l'exemple de démonstration : « 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 au maître l'ordre d'analyser automatiquement la description des configurations sélectionnées et de générer indépendamment des règles d'échange.

Mettons tout de suite les points sur les « i ». L'assistant ne pourra rien générer de grave. Il ne faut cependant pas écarter cette possibilité. S'il est nécessaire d'établir un échange entre des configurations identiques, alors les services d'un spécialiste seront très utiles. Pour notre exemple, le mode manuel est préférable.

Examinons 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 ». Dans un premier temps, nous devons configurer les règles de correspondance, c'est-à-dire comparer des objets de deux configurations. Sur la seconde, déterminez les objets possibles qui seront disponibles pour l'utilisateur pour le téléchargement.

Dans la seconde moitié de l'onglet « Règles de conversion d'objets », il y a panneau supplémentaire avec deux onglets : « Conversion de propriété » et « Conversion de valeurs" Le premier sélectionnera les propriétés (détails) 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 répertoire 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 : utiliser l'assistant de synchronisation d'objets (le bouton « ») ou ajouter manuellement une correspondance pour chaque objet.

Pour gagner de la place, nous utiliserons la première option. Dans la fenêtre de l'assistant, décochez le groupe « Documentation" (nous ne nous intéressons qu'aux annuaires) et élargir le groupe " Annuaires" Nous parcourons soigneusement la liste et examinons les noms des ouvrages de référence 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 appelé Clients, qui a le même objectif que « Contreparties"à partir de la configuration" Utah" Certes, le maître ne pouvait pas les comparer en raison de leurs noms différents.

Nous pouvons résoudre ce problème nous-mêmes. On retrouve dans la vitrine « Correspondances d'objets" livre de référence " Clientèle", et dans la colonne "Source" sélectionnez le répertoire "Contreparties". Cochez ensuite la case dans la colonne « Type » et cliquez sur le bouton « Ok ».

L'assistant de synchronisation d'objets proposera de créer automatiquement des règles de conversion des propriétés de tous les objets sélectionnés. Les propriétés seront comparées nommément et pour notre démonstration cela sera tout à fait suffisant, nous en convenons. La prochaine question sera une proposition visant à créer des règles de téléchargement. Acceptons-le également.

La base des règles de change est prête. Nous avons sélectionné 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, c'est UT) et lançons 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 des règles de chargement par l’affirmative. Le traitement analysera les règles d'échange et construira une arborescence d'objets du même nom disponibles pour le téléchargement. Pour cet arbre, nous pouvons mettre en place toutes sortes de sélections ou de nœuds d'échange, en changeant ceux dont nous avons besoin pour sélectionner les données. Nous voulons télécharger absolument toutes les données, il n'est donc pas nécessaire d'installer des filtres.

Après avoir terminé le processus de téléchargement des données dans un fichier, 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.

Problèmes 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 vrai travail Des problèmes surviennent, 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é plusieurs problèmes réels. Vous les rencontrerez certainement au travail. Ils n’ont pas l’air si triviaux 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 n°1. Remplissez les détails manquants

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

Il existe plusieurs solutions au problème. Nous examinerons la possibilité de remplir les détails " Organisation"directement dans la base de données" 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 PKO) " 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 trouverons « Après le téléchargement”.

Décrivons le code permettant d'obtenir l'organisation actuelle puis de l'attribuer aux détails. 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 détails " Organisation"Il faut vérifier la valeur de l'attribut " Ce groupe" Pour l'ouvrage de référence " Clientèle"La fonctionnalité hiérarchique est définie, il est donc nécessaire de vérifier le groupe. Remplissez tous les détails de la même manière. Assurez-vous de lire l'aide pour les autres options de gestionnaire " Après le chargement" Par exemple, parmi eux il y a le paramètre « Refus" Si vous lui attribuez la valeur « True », alors l'objet ne sera pas écrit dans la base de données. Ainsi, il devient possible de limiter les objets pouvant être écrits au moment du chargement.

Tâche n°2. Détails du registre d'information

Dans l'annuaire " Contreparties"Configurations UT, détails disponibles" Acheteur" Et " Fournisseur" Les deux détails sont du type " Booléen» et servent à déterminer le type de contrepartie. En BI " Destinataire», à l'annuaire « 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 attributs pour un client. Notre tâche est de transférer les valeurs des détails dans des entrées distinctes dans le registre d'informations.

Malheureusement, les moyens visuels seuls ne peuvent pas non plus y faire face. Commençons petit, créons un nouveau logiciel pour le registre d’informations » Types de clients" Ne citez rien comme source. Depuis création automatique refuser les règles de déchargement.

L'étape suivante consiste à créer les règles de téléchargement. Allez dans l'onglet approprié et cliquez sur le bouton " 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'information « Types de clients » ;
  • Code (nom) de la règle. Notez-le comme « Déchargement des types de clients » ;

Vous devez maintenant écrire du code pour sélectionner les données à télécharger. Le paramètre « Échantillonnage de données" Nous pouvons placer une collection contenant un ensemble de données préparé. Paramètre " Échantillonnage de données" peut prendre diverses valeurs - résultat de 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, vous devez faire attention à remplir la colonne " Type de client" En « UT » nos attributs sont de type « Booléen », et le destinataire est une énumération.

À ce stade, nous ne pouvons pas les convertir au type requis (ce n'est pas dans l'UT), donc pour l'instant nous les 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 = Nouveau ValueTable(); DataSelection.Columns.Add("Client"); DataSelection.Columns.Add("ClientType"); SelectingDataFromDirectory = Directories.Accounts.Select(); Pendant la boucle SelectingDataFromDirectory.Next() si SelectingDataFromDirectory.ThisGroup puis continuez ; fin si; Si sélection de données depuis Directory.Buyer Then NewRow = Data Selection.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewRow.ClientType = "Client" ; fin si; Si DataFetchFromDirectory.Supplier Then NewRow = DataFetch.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewString.ClientType = "Fournisseur" ; fin si; Fin du cycle ;

Sauvegardons la règle de téléchargement des données et revenons à l'onglet " Règles de conversion d'objets" Ajoutons pour le registre d'information « Types de clients» Règles de conversion de propriété : client et type de client. Nous laisserons la source vide, et dans le gestionnaire d’événements « Avant le déchargement » nous écrirons :

//Pour la propriété « Client » Value = Source.Client; //Pour la propriété « ClientType » If Source.Client = "Buyer" Then Expression = "Enumerations.ClientTypes.Buyer" ElseIf Source.Client = "Supplier" Then Expression = "Enumerations.ClientTypes.Supplier"; fin si;

Dans la liste, les détails sont renseignés en fonction de l'échantillon de données sélectionné. Nous passons simplement le client sous forme de lien, et écrivons 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ées, l'accessoire 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 n°3. Astuces avec les pièces de table

Vous rencontrez souvent des tâches qui nécessitent de publier des lignes d'une section de tableau dans plusieurs. Par exemple, dans la configuration initiale, les services et les biens sont enregistrés dans une seule partie tabulaire, et dans le récepteur, le stockage de ces entités est divisé. 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 établissons une règle pour le déchargement des données, spécifions un algorithme arbitraire et dans le gestionnaire « Avant le déchargement », nous écrivons une requête pour obtenir des données de la partie tabulaire.

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

DataFetch = Nouveau ValueTable(); //Il y aura une autre partie de tableau ici Data Selection.Columns.Add("Products"); //Ici, il y aura également une partie tabulaire Data Selection.Columns.Add("Services"); SelectionData.Columns.Add("Lien");

Tâche n°4. Transférer des données vers une opération

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

Dans la configuration " PA"il existe un document universel" Opération» et il est idéal pour former plus de fils. Il n’y a qu’un seul problème : le document est rédigé de manière astucieuse et les données ne peuvent pas y être transférées aussi facilement.

Vous trouverez un exemple d'une telle conversion 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 conjointement avec 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 n°5. Synchronisation des données sur plusieurs détails

Nous avons déjà vu plusieurs exemples, mais nous n'avons pas encore parlé de synchronisation des 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 l'apparition de 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 répertoire « Contreparties« Il ne peut pas y avoir deux éléments avec les mêmes identifiants. CD effectue des calculs pour cela et pour tous les PCO créés, une recherche par identifiant est immédiatement activée par défaut. Lors de la création du PCO, vous auriez dû faire attention à l'image d'une loupe à côté du nom de l'objet.

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

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 INN, 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. Regardons un exemple abstrait. Supposons que nous devions synchroniser les répertoires " Contreparties» à partir de différentes bases d’informations. Préparons le PKO et dans les paramètres des règles de conversion d'objet, cochez la case " Continuez à chercher dans les champs de recherche si l'objet récepteur n'est pas trouvé par identifiant" Avec cette action, nous avons immédiatement défini deux critères de recherche : par un identifiant unique et des champs personnalisés.

Nous avons le droit de choisir nous-mêmes les domaines. En cochant TIN, KPP et Nom, nous indiquerons immédiatement plusieurs critères de recherche. Confortable? Tout à fait, mais encore une fois, cela ne suffit pas. Et si nous voulons modifier les critères de recherche ? Par exemple, nous recherchons d’abord la combinaison TIN+KPP, et si nous ne trouvons rien, nous commençons à tenter notre chance avec le nom.

Un tel algorithme est tout à fait réalisable. 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 de champs de recherche :

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

Il y a 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, alors je vous recommande fortement de faire attention au « ». Vous devrez peut-être investir des ressources (du temps) dans la formation au début, mais cela sera plus que payant sur le premier projet plus ou moins sérieux.

À mon avis, la société 1C ignore injustement le sujet de l'utilisation de la conversion de données. Durant toute 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 convient tout de même de s'y familiariser.

La connaissance des plateformes reste nécessaire

"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, vous devrez donc passer du temps à apprendre. Sinon le principe reste le même.

Le but de cet article est de répondre aux premières questions sur CD3 et d'utiliser un exemple simple pour montrer comment affiner les règles standards. Les informations sont utiles pour les débutants et ceux qui ont déjà commencé à apprendre et qui ont de nouvelles questions.

Abréviations acceptées dans cette publication

KD2- Conversion des données de configuration, édition 2.0.
KD3- configuration Conversion des données, édition 3.0, configuration 3.0.5.3.
ED- format universelÉchange de données d'entreprise.

Réponses aux questions après une connaissance superficielle de KD3. Si vous savez pourquoi KD3 est nécessaire, vous n'êtes pas obligé de lire ce paragraphe ;)

Questions et réponses

  • KD3 est-il une nouvelle version de KD2 ? Non! Il s'agit d'un autre outil qui résout des problèmes similaires à KD2. Chaque outil a sa propre utilité.
  • Le KD3 est-il meilleur que le KD2 ? On ne peut pas les comparer, parce que... Ce différents instruments et chacun a ses avantages et ses inconvénients.
  • Pour modifier les règles d'échange KD3 dont vous avez besoin supprimer la configuration du support ? Non Pas besoin de supprimer du support ! Dans les configurations standard, vous pouvez normalement connecter un traitement externe avec des règles, et dans les configurations prenant en charge la plate-forme 8.3.10 et supérieure, vous pouvez modifier les règles à l'aide d'une extension.
  • Besoin de transférer les données des configurations fait soi-même. À des fins d’études, puis-je utiliser KD3 ? Si vous posez cette question, c’est probablement impossible. Pour KD3, la configuration doit inclure BSP 2.3 et supérieur avec synchronisation via un format universel. KD2 vous conviendra à 100%, KD3 est discutable.
  • Est-il possible d'utiliser KD3 pour des configurations standard modifiées ? Oui, vous pouvez. Si vos données non standard peuvent être transmises à l'aide de ED ou de l'attribut AdditionalInfo, alors tant mieux. Sinon, il existe une option pour changer le format d'échange (schéma XML). Dans ce cas, les capacités du KD3 seront presque égales à celles du KD2, mais le principal avantage du KD3 - l'universalité du format d'échange - disparaîtra.
  • Les configurations compatibles ED peuvent-elles être échangées entre elles ? Oui! Mais pour l'échange BP 3.0 - BP 3.0, lors de la création de la synchronisation, vous ne pouvez pas sélectionner BP 3.0. Pas de problème, sélectionnez « Autre programme ». Si vous avez besoin d'un échange unique, utilisez simplement le traitement « Upload Upload EnterpriseData » dans le menu Toutes les fonctions.
  • Après avoir mis à jour la configuration, devez-vous télécharger les dernières règles depuis le kit de distribution ? Non! Les règles sont contenues dans le module de configuration. Pour échanger avec d'autres bases de données 1C, vous n'avez pas besoin de télécharger les règles d'une autre base de données. Pourquoi? Détails dans cet article.
  • Après avoir mis à jour une base de données, devez-vous mettre à jour l’autre base de données participant à l’échange ? Non! Il n'est pas nécessaire de mettre à jour de manière synchrone toutes les bases de données participant à l'échange. C'est l'un des avantages du KD3.
  • Nos configurations ont été grandement améliorées, il existe de nouveaux types de documents et d'ouvrages de référence, KD3 peut-il les transférer ? Il est possible que cela ne soit pas possible sans changer le format. C'est l'un des "inconvénients" du KD3 par rapport au KD2.

Pourquoi alors avons-nous besoin de KD3 ? Avantages et inconvénients

Avantages de KD3

Regardons le principal avantage du CD3 en utilisant l'exemple d'une tâche fréquemment rencontrée. Il existe une configuration UT 11.3 qui n'est pas mise à jour pour une raison quelconque. Il est nécessaire d'organiser un échange avec BP 3.0, qui est constamment mis à jour vers la version actuelle.

Aucun problème.

  • Le format d'échange universel utilisé dans CD3 est conçu pour résoudre de tels problèmes.
  • Les règles d'échange dans UT ne sont pas créées pour être échangées avec le BP, mais pour être échangées avec le format universel EnterpriseData.
  • Si on opère en termes de CD2, alors l'UT échange avec la configuration ED, qui ne change pas. BP 3.0 échange également avec ED.

Chaque configuration possède ses propres règles d'échange avec ED. Ainsi, l'UT télécharge toujours les données dans le même format. La configuration BP 3.0, aussi nouvelle soit-elle, doit pouvoir accepter les données de ce format.

Il s'avère que dans l'UT, il n'y a pas lieu de s'inquiéter du fait que le BP modifie certains détails. La tâche est simple : télécharger sur ED, et la configuration de l'alimentation doit être capable d'accepter les données de ce format.

  • Étant donné que la configuration source est toujours téléchargée dans un seul format, toute configuration de récepteur peut charger des données à partir de ce format universel.
    Ceux. pour une combinaison arbitraire d'échanges UT - BP, UT - KA, UT - ERP, KA - BP, ERP - BP. pas besoin d'écrire des règles individuelles. Dans KD3, les règles sont universelles. Toute configuration prenant en charge l'échange au format universel peut échanger avec n'importe quelle configuration prenant en charge le format ED.

Le débogage des algorithmes et des règles est disponible dans la configuration elle-même, car toutes les règles sont du code provenant d'un module commun ou d'un traitement externe. Vous pouvez vous passer du CD3 pour corriger rapidement l'erreur.

Inconvénients de KD2

Les règles d'échange sont individuelles pour chaque couple de configurations. Pour toutes les combinaisons d'échange ci-dessus entre différents types configurations et différentes versions les configurations ont besoin de leurs propres règles d'échange. Par conséquent, pour résoudre le problème ci-dessus de l'échange d'UT 11.3 et de BP 3.0, il sera nécessaire de déboguer et d'affiner les règles d'échange après presque chaque mise à jour de BP 3.0.

Le débogage des algorithmes et des règles est difficile pour un programmeur débutant ou pour quelqu'un qui est rarement confronté à cette tâche. Les règles sont stockées dans un fichier XML. Une solution rapide n’est pas disponible. Il est nécessaire de charger les règles dans le CD2, de les corriger et de les réuploader.

Inconvénients du KD3

Le format universel impose des restrictions sur les types de documents et d'ouvrages de référence. Il est conçu pour des configurations typiques. Si vous disposez de détails ou d'un type de document non standard, des difficultés peuvent survenir lors de l'échange.

Pour activer la synchronisation ED, la configuration doit prendre en charge ces mécanismes. Tout cela est dans BSP 2.3 et supérieur. Ce n’est pas vraiment un inconvénient, c’est plutôt une fonctionnalité.

Le principal avantage s'estompe un peu en raison du délai limité de prise en charge du format. Cela a déjà été vécu par les utilisateurs de UT 11.1, UT 11.2, qui échangent avec BP 3.0. Les périodes de support sont répertoriées sur ce lien. Il indique que la période minimale garantie de support pour le format est d'un an, en fait environ 3 ans. Ainsi, si vous configurez la synchronisation aujourd'hui, vous ne pourrez pas mettre à jour la base de données UT 11 avant au moins un an, puis soit mettre à jour la configuration, soit simplement ajouter un nouveau format, ajouter petite monnaie dans le BSP et dans le règlement, si nécessaire. Comment faire? Sera précisé plus loin dans cet article.

Avantages de KD2

Les possibilités de KD2 sont infinies. Vous pouvez créer des règles d'échange pour n'importe quelle configuration sur n'importe quelle plateforme. De 1C 7.7 au dernier 8.3. Rien n'est requis dans la configuration, BSP n'est pas requis. Des règles peuvent être créées dans mode automatique et finalisé.

En relation avec les avantages et les inconvénients ci-dessus, il est recommandé d'utiliser KD3 pour les configurations typiques. KD2 peut être utilisé pour n'importe quelle configuration, mais compte tenu de ses inconvénients, n'oubliez pas qu'il est parfois plus conseillé d'utiliser KD3.

J'espère que nous comprenons pourquoi KD3 est nécessaire, continuons sur le fond.

Abréviations acceptées ci-dessous

BSP- Bibliothèque de sous-systèmes standards.
SOUS- règle de traitement des données.
OMP- règle de conversion d'objet.
PKPD- règle de conversion des données prédéfinies.
PKS- règle de conversion de propriété.

Prenons un exemple - il est nécessaire de modifier les règles standard pour l'échange de BP 3.0 et UT 11.3

Les étapes des instructions, qui s'ouvrent sur le CD3, sont indiquées sur fond jaune. La séquence d'étapes proposée dans cet article est différente, afin de ne pas se tromper et de terminer immédiatement logiquement l'action commencée.

Comment changer les règles ED ?
  1. Modifier le module avec des règles d'échange directement dans la configuration. Nous n'envisageons pas encore cette option, car... Pour comprendre ce qui doit être modifié et où, vous devez le faire au moins une fois dans CD3. Dans ce cas, il sera plus facile à l'avenir de résoudre rapidement les problèmes, de les déboguer dans le module et de les transférer sur le CD3 si nécessaire.
  2. Utiliser KD3.
    Comment cela se fait-il dans KD2 ? Nous déchargeons les métadonnées des deux configurations et les chargeons dans le CD2.
    Étape 1. Pour KD3, nous faisons la même chose - dans chaque configuration en mode entreprise avec traitement \tmplts\1c\Conversion\3_0_5_3\MD83Exp.epf télécharger les métadonnées de configuration,
    par exemple, dans le dossier " D:\Règles BP3\BP 3.0.54.15\", nom de fichier " MD.xml».

On ne sait pas dans quel but les paramètres de ce traitement sont masqués ; par conséquent, par défaut, les données des registres d'informations ne sont pas téléchargées. Éliminons cette lacune.
Dans la procédure ChangeProcessingMode() du formulaire principal, commentez la ligne

// Elements.Settings.Visibility = Faux ;

Nous sauvegardons le traitement, l'ouvrons en mode entreprise, plaçons l'indicateur sur « Décharger les registres d'informations » et le déchargeons.

Étape 3. Chargez le fichier précédemment créé " MD.xml"dans KD3, drapeau de section" DANS nouvelle version configurations».

Parce que dans KD3, une « configuration intermédiaire » (ED) est utilisée pour l'échange ; on charge également ses « métadonnées », qui est un schéma XML, un fichier avec l'extension « xsd ». Étape 2. Vous pouvez le prendre à partir de la configuration UT 11 ou BP 3.0. Ce sont les mêmes. Ouvrez la configuration, saisissez « entrer", on voit dans l'arbre Général – Packages XDTO des forfaits comme celui-ci : EnterpriseData_1_3_8, EnterpriseData_1_4_4 et similaires. Il s'agit des versions de format 1.3 et 1.4, respectivement, et 1.2, 1.1, 1.0 si disponibles. Faites un clic droit sur le package et sélectionnez « » dans le menu contextuel.

Étape 4. Dans la section CD3, sélectionnez les fichiers précédemment téléchargés avec l'extension « xsd ». Vous devez sélectionner un fichier! Choix multiple avec ExchangeMessage n'est pas nécessaire! Cela a été suggéré dans les anciennes instructions KD3 Versions précédentes. Dans le dernier CD3, cela n'est pas obligatoire.

Après avoir chargé le format dans la section Format de données - Formater l'arborescence des objets, sélectionnez une version de format. S'il y a des documents et des ouvrages de référence, alors vous avez téléchargé fichier correct. Sinon, recommencez avec un nouveau CD3 vide, chargez d'abord le format et vérifiez l'arborescence.

Étape 2. Après avoir chargé les métadonnées dans le CD3, nous procédons au chargement des règles d'échange standards.
Comment cela se fait-il dans KD2 ? Les règles sont chargées dans la conversion.
C'est presque la même chose dans KD3. Nous déchargeons les règles de la règle standard, créons une conversion, puis y chargeons les règles.

Déchargement des règles standards de la configuration pour chargement dans CD3

Les configurations sont échangées en utilisant la version commune maximale du format d'échange. Par exemple, une configuration a un format maximum de 1,5, une autre de 1,6, ce qui signifie qu'elles s'échangeront au format 1,5. Il suffit donc de décharger le format 1.5 des deux configurations et de le charger dans les règles.

On ouvre la configuration de BP 3.0 ou UT 11.3 en mode configurateur, dans la barre de recherche vous pouvez saisir « hommes université", ouvrez le module général. S'il s'agit de BP 3.0, ouvrez . Dans le module ouvert, allez dans le menu Fichier - Enregistrer une copie, enregistrez le fichier sous un nom arbitraire, par exemple " D:\Règles de BP3\BP 3.0.54.15\Module général Exchange Manager via le module Universal Format_».
Ouvrez la configuration de BP 3.0 ou UT 11.3 en mode entreprise, ouvrez le traitement \tmplts\1c\Conversion\3_0_5_3\Téléchargement des règles de synchronisation.epf

Inconvénient du traitement typique :

  • échoue souvent;
  • décharge les règles du traitement externe connecté au nœud, mais nous avons besoin de règles standard ;
  • ne fonctionne pas dans BP 3.0.53 et supérieur.

Amélioration du module du formulaire principal de traitement. Nous apportons des modifications aux procédures Lors de la création sur le serveur.

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) // Liste de sélection de version de format. FormatVersions = Nouvelle correspondance ; DataExchangeOverridable.OnReceiveAvailableFormatVersions(FormatVersions); Pour chaque ExchangePlan de DataExchangeRe-UseExchangePlansBSP() Boucle If DataExchangeRepeatThisExchangePlanXDTO(ExchangePlan) Then ExchangePlanFormatVersions = New Match ; VersionBSP243 = Général PurposeClientServer.CompareVersions(StandardSubsystemsServer.LibraryVersion(), "2.4.3.1") >= 0; ModuleDataExchangeServer = GeneralPurpose.GeneralModule("DataExchangeServer"); Si VersionBSP243 Then ExchangePlanFormatVersions = Data ExchangeModuleServer.CommunicationPlanSettingsValue(ExchangePlan, "ExchangeFormatVersions"); ElseExchangePlans[ExchangePlan].GetExchangeFormatVersions(ExchangePlanFormatVersions); fin si; Pour chaque ExchangePlanVersion de ExchangePlanFormatVersion CycleModuleManager = FormatVersions.Get(ExchangePlanVersion.Key); Si ManagerModule = Non défini ou ManagerModule<>ExchangePlanVersion.Value ThenFormatVersions.Insert(ExchangePlanVersion.Key, ExchangePlanVersion.Value); fin si; Fin du cycle ; fin si; Fin du cycle ; Pour chaque cycle FormatVersion FROM FormatVersion Elements.FormatVersionNumber.SelectionList.Add(FormatVersion.Key); Fin du cycle ; FormatVersionStorageAddress = PlaceInTemporaryStorage(FormatVersions, UniqueIdentifier); Fin de la procédure

  • Sélectionnez « Formater le numéro de version », par exemple « 1.3 »,
  • "Répertoire Exchange" - créez un dossier, par exemple ""
  • Appuie sur le bouton " Décharger».

Nous répétons ces étapes pour les autres versions du format et les enregistrons dans les dossiers appropriés « 1.4 », « 1.5 », etc. Pour BP 3.0, il suffit de télécharger tous les formats à partir de 1.3. Pour d'autres configurations à partir de 1.2 et supérieur.

Les règles ont été téléchargées, vous devez maintenant les charger sur le CD3. Dans KD2, les règles sont chargées simultanément à la création de la conversion. Dans KD3, vous devez créer une conversion et y charger les règles.
Dans la section KD3 Conversions - Conversions - Créer. . Sélectionnez une configuration. Pour plus de commodité, vous pouvez modifier le nom de la configuration en accédant au mode d'édition des éléments. Par exemple, au lieu de ComptabilitéEntreprises indiquer " BP 3.0.54.15" Accessoires Nom pas besoin de changer ! Nom les conversions peuvent être spécifiées de la même manière, par exemple : " BP 3.0.54.15" DANS partie tabulaire sélectionnez les versions de format prises en charge. Les versions de format sont celles que nous avons téléchargées depuis la base de données ci-dessus. Enregistrez la conversion.

Accédez à la rubrique Conversion - Chargement des règles de synchronisation à partir de fichiers.
:

    Emplacement de chargement : " Vers une conversion existante»

    Annuaire d'échange : " D:\Règles BP3\BP 3.0.54.15\1.3»

  • Fichier avec module d'échange : " D:\Rules BP3\BP 3.0.54.15\Module général Exchange Manager via Universal Format13_ Module.txt»
  • Conversion: " BP 3.0.54.15»

Lors du chargement des règles de synchronisation à partir de fichiers pour UT 11.3, une erreur apparaît " Champ d'objet introuvable". Raison - pour TekPKO.UseToReceive=False KD3 nécessite des informations sur l'option d'identification à la réception. Si cela ne figure pas dans le fichier de règles, une erreur se produit. Nous corrigeons ce malentendu. Soit supprimez ce formulaire du support, soit utilisez l'extension.

// La principale forme de traitement Chargement des règles de synchronisation à partir de fichiers // Avant d'apporter des modifications : // La procédure charge les règles de conversion des objets &Sur la procédure serveur LoadPKO() ... Fill inPropertyValues(TechPKO, AttributeStructure); // Option d'identification - logique spéciale. TechPKO.Identification Option = Enumerations.Object Identification Options [Attribute Structure.Identification Option] ; ElseIf ReadXML.NodeType = XMLNodeType.EndElement Then // Écrivez le logiciel chargé. ... // Les modifications sont marquées "//ED" // La procédure charge les règles de conversion d'objet &Sur le serveur Procédure LoadPKO() ... FillPropertyValues(TechPKO, AttributeStructure); // Option d'identification - logique spéciale. Si TechPKO.UseToReceive Then //ED TechPKO.IdentificationOption = Enumerations.ObjectIdentificationOptions[AttributeStructure.IdentificationOption]; fin si; ElseIf ReadXML.NodeType = XMLNodeType.EndElement Then // Écrivez le logiciel chargé. ...

Appuie sur le bouton " Télécharger». « Les gestionnaires sont destinés à une autre conversion : BP 3.0.44 (format 1.4). Continuer le téléchargement ?" Cliquez sur " Oui».
Sans fermer le formulaire, sélectionnez-en un autre « Annuaire d'échange" et appuyez sur le bouton " ". Nous répétons le chargement des règles pour chaque format dans la conversion actuelle plusieurs fois.
Après un téléchargement réussi, rendez-vous dans la rubrique « Conversions" - "Configuration des règles de conversion", ouvrez notre conversion à partir du formulaire de liste.
Si nous voyons , POD, etc., alors le chargement sur le CD3 a réussi.

Vérifier que les règles sont correctement chargées

Il s'agit d'une opération facultative ! Si vous utilisez une version du format dans les règles, vous n'avez pas besoin de vous assurer que le texte du module est identique.

  • Ouvrez le configurateur BP, créez un nouveau traitement externe, par exemple Nom " Synchronisation EDBP", synonyme " Synchronisation ED BP 3.0».
  • Dans KD3 sous la forme « Mise en place des règles d'échange"Cliquez sur le bouton "" et collez ce code du presse-papiers dans notre nouveau traitement.
  • Dans le configurateur d'alimentation, nous vérifions le module pour les erreurs de syntaxe. Nous sauvegardons le traitement.
  • créer un autre traitement vide dans le tiers, par exemple Nom " Synchronisation EDBP typique", synonyme " Synchronisation ED BP 3.0 typique" Copiez le texte du module général BP ManagerExchangeThroughUniversalFormat13 dans le module de traitement et enregistrez-le.

Comparons les deux traitements. Menu Fichier - Comparer des fichiers.

Si un module standard contient des procédures qui ne sont pas dans nos règles, cela signifie que vous n'avez pas chargé les règles dans la conversion pour tous les formats de données. Si nécessaire Nous chargeons les règles au format manquant dans la conversion et répétons la comparaison de nos règles avec les règles standard. Quand tu as atteint ton identité vous pouvez commencer à modifier les règles en toute sécurité. Il n'est pas nécessaire d'obtenir une identité complète si vous savez quel format d'échange ne sera pas utilisé lors de la synchronisation.

De la même manière, nous créons une conversion pour UT 11.3 dans KD3.

BP 3.0.54.15

  • Un chargement incorrect du logiciel a été détecté " Utilisateurs_annuaire". Doit être corrigé. Doit.
  • Dans PKO " Document_Inventaire des marchandises_Expédition"pour PKS" Responsable" le logiciel n'est pas précisé. Ouvrez, resélectionnez la propriété de configuration et la propriété de format pour que leur type soit renseigné, après quoi un choix sera disponible dans le champ " Règle de conversion de propriété". Sélectionner " Répertoire_Individus_Dispatch".

Regardons un exemple de modification

L'objectif principal de l'exemple est de montrer la possibilité de modifications pour transférer des données supplémentaires qui ne rentrent pas dans le format d'échange.

Il faut transférer les accessoires" TypeNomenclature" Répertoire "Nomenclature", type d'attribut " Répertoire.TypesNomenclature". Ce type de répertoire n'est pas repris par les règles standards de KD3 et n'est pas supporté par la version au format ED inférieure à 1.6.

Il existe plusieurs options pour résoudre ce problème

  • Amélioration du package XDTO, en ajoutant l'objet "Directory.Types of Nomenclature" au format. En conséquence, le principal avantage du format universel est perdu : il cesse d’être universel. L'amélioration du package XDTO sera nécessaire dans toutes les bases de données participant à l'échange.
  • Utilisez la propriété format " Détails supplémentaires", que l'on retrouve dans de nombreux objets. Nous ne considérerons pas cette option dans cet article en raison d'une certaine complexité. Prenons en compte qu'il existe une telle méthode.
  • Accessoires Information additionnelle. Il est présent dans l'en-tête de tous les objets de format. Tapez n'importe quelType. Conçu pour de tels cas. Utilisons-le comme le moyen le plus simple.

Avant de commencer à finaliser les règles standards, créons deux groupes dans le groupe de règles " Ajoutée», « Modifié" Cela se fait dans " Conversions -".
Nouvelle AML, logiciels, algorithmes, etc. Nous allons créer dans le groupe « Ajouté » des objets typiques auxquels nous apportons des modifications et les transférer dans le groupe « Modifié ». Cela facilitera la maintenance ultérieure des règles modifiées.

Alors, commençons.

Modifications des règles dans UT 11.3

Dans KD3 sous la forme « UT 11.3.4.12 Mise en place des règles d'échange» sur l'onglet Algorithmes créer un nouvel algorithme

  • Nom de l'algorithme « AdditionalInfoInsert »
  • Groupe : "Ajouté"

Paramètres : « Données XDTO, nom, valeur supplémentaire »

Code d'algorithme

Si DataXDTO.Property("AdditionalInfo") AND TypeValue(DataXDTO.AdditionalInfo) = Type("Structure") Then AdditionalData = DataXDTO.AdditionalInfo; Sinon, AdditionalData = Nouvelle structure ; fin si; AdditionalData.Insert(Nom, AdditionalValue); DataXDTO.Insert("Informations supplémentaires", Données supplémentaires);

Enregistrez l'algorithme et allez dans l'onglet " Règles de conversion d'objets»

Par le bouton " Trouver» cherchez « Nomenclature », ouvrez le PKO « Annuaire_Nomenclature_Dispatch" Allez dans l'onglet " Lors de l'envoi" Là, nous voyons le champ « Nom du gestionnaire : » « ». Vous pouvez y apporter des modifications directement.
Un code plus complexe nécessitant un débogage peut être écrit dans la configuration. Nous recherchons une procédure dans le module d'échange en UT 11.3 avec le nom « PKO_Directory_Nomenclature_Sending_WhenSendingData" et nous le finalisons là.
Pour transférer les modifications de UT 11.3 vers KD3, copiez l'intégralité de la procédure dans le presse-papiers, dans KD3 sous la forme « Mise en place des règles d'échange"Appuie sur le bouton "".

Pour notre exemple, le code est comme ceci

Si la valeur est remplie (IB Data.Item Type) Then //ED AdditionalInfoInsert (XDTO Data, "Item Type", Line (IB Data.Item Type.UniqueIdentifier ())); AdditionalInfoInsert (Données XDTO, "Item TypeName", Valeur d'attribut General Purpose.Object (IB Data.Nomenclature Type, "Name")); //AdditionalInfoInsert... //ajouter d'autres détails sur le service EndIf;

Après avoir transféré les modifications sur le CD3, appuyez sur le bouton " Enregistrer le module du gestionnaire d'échange" et transférez le code du tampon vers le module UT 11.3.

Modifications des règles dans BP 3.0

Nous apportons des modifications au PKO " Annuaire_Nomenclature_Receipt", sur l'onglet " Lors de la conversion de données XDTO", nom de la procédure " PKO_Directory_Nomenclature_Receipt_During Data ConversionXDTO".

Code ajouté au module "PKO_Directory_Nomenclature_Receipt_WhenConvertingDataXDTO"

Si DataXDTO.Property("AdditionalInfo") AND TypeValue(DataXDTO.AdditionalInfo) = Type("Structure") Alors //ED AdditionalData = DataXDTO.AdditionalInfo; Si AdditionalData.Property("Item Type") Alors Type de nomenclature = Données ExchangeXDTOServer.ObjectLink Par ObjectUIDXDTO(AdditionalData.Nomenclature Type, Type("DirectoryLink.Nomenclature Types"), Exchange Components); Si Item Type.GetObject() = Undefined And AdditionalData.Property("Nomenclature TypeName") Alors //Créez une nouvelle Nomenclature TypeObject = Directories.Nomenclature Types.CreateElement(); ItemTypeObject.SetLinkNew(NomenclatureType); Nomenclature TypeObject.Name = Données supplémentaires.Nomenclature TypeName ; // remplissez les autres détails du service FillPropertyValues(NomenclatureTypeObject,AdditionalData); NomenclatureTypeObject.Write(); Type d'élément = Nomenclature TypeObject.Link ; fin si; ReçuData.ItemType = ItemType ; fin si; fin si;

Le code seul ne suffit pas. Il est nécessaire d'ajouter un PCS avec la propriété de configuration " " et la case à cocher " sur l'onglet " Règles de conversion de propriété " Algorithme de conversion utilisé".

Nous transférons le module gestionnaire d'échanges vers le module de configuration BP 3 ou vers un traitement externe.

Comment charger les règles KD3 modifiées dans la base de données ?

Dans les configurations qui échangent des règles sur CD2, cela se fait dans les paramètres du nœud. Pour les règles créées dans le CD3, nous verrons uniquement la possibilité de modifier les règles d'inscription.

Les règles préparées dans KD3 peuvent être installées dans la configuration de trois manières

  1. Supprimez la configuration du support et apportez des modifications au module commun Gestionnaire Exchange via le format universel;
  2. Sur les configurations fonctionnant en mode compatibilité avec la plateforme 8.3.10 et supérieure, vous pouvez apporter des corrections au module commun à l'aide d'une extension.
  3. Connectez une extension qui remplace complètement le module général par des règles.
  4. Sans supprimer la configuration du support, connectez le traitement externe avec des règles au nœud ;

Avec la première option, tout est clair, c'est décrit dans la documentation, l'inconvénient est qu'il faut supprimer la configuration du support. La deuxième option - corriger la procédure sélectionnée avec une extension ne sera pas non plus difficile pour le programmeur 1C - il est nécessaire de comparer deux traitements avec des règles standard et avec celles modifiées comme décrit ci-dessus dans cet article, et d'apporter une modification à la procédure souhaitée .

Troisième option - utiliser une extension avec des règles d'échange dans un format universel actuellement le plus optimal. Il n'y a jusqu'à présent qu'un seul inconvénient : il est nécessaire de retirer le drapeau " Mode sans échec" lors de la connexion de cette extension. Cela limite son utilisation dans services cloud. Nous attendons une décision de 1C sur la procédure de remplacement des règles d'échange au format universel dans 1C Fresh.

Le fait est que vous devez trouver une section de code dans la configuration qui est chargée de sélectionner un module commun en fonction de la version du format d'échange et de remplacer la sélection du module par votre propre module. Exemple pour BP 3.0.67 :

//////// // Module général Échange de données remplacé par &Au lieu de ("À la réception de AvailableFormatVersions") Procédure ED_WhenReceiveAvailableFormatVersions(FormatVersions) ED_DataExchangeServer.WhenReceiveAvailableFormatVersions(FormatVersions); Fin de la procédure //////// // Synchronisation de la Synchronisation du format Denyvercal : le module Manager # Source (); Paramètres.ThisExchangePlanXDTO = True ; Settings.Warn À PROPOS des incompatibilités de version ExchangeRule = False ; Settings.ExchangeFormat = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData" ; FormatVersions = Nouvelle correspondance ; ED_DataExchangeServer.WhenReceiveAvailableFormatVersions(FormatVersions); //Paramètres ED.ExchangeFormatVersions = FormatVersions; Settings.ExchangePlanUsedInServiceModel = True ; Settings.Algorithms.WhenReceiveExchangeSettingsOptions = True ; Settings.Algorithms.WhenReceiveOptionDescriptionSettings = True ; Settings.Algorithms.ViewSelectionInteractiveUpload = True ; Settings.Algorithms.Configure Téléchargement interactif = True ; EndProcedure #EndIf //////// // Module général dans l'extension ED_Data ExchangeServer Procédure lors de la réception de AvailableFormatVersions(FormatVersions) ExportFormatVersions.Insert("1.2", ExchangeManagerThroughUniversalFormat); FormatVersions.Insert("1.3", ED_ExchangeManagerThroughUniversalFormat); FormatVersions.Insert("1.4", ED_ExchangeManagerThroughUniversalFormat); FormatVersions.Insert("1.5", ED_ExchangeManagerThroughUniversalFormat); FormatVersions.Insert("1.6", ED_ExchangeManagerThroughUniversalFormat); Fin de Procédure //////// // Module Général dans l'ED_Exchange Manager Via l'extension Format Universel // Conversion de BP 3.0.44 (format 1.6) du 27/11/2018 11:23:58 // Révision pour BP 3.0.67.x du 31/12... .

Considérons la 4ème option, qui n'est pas décrite dans la documentation, car une telle possibilité n’existe pas dans BSP. Cette option déjà dépassé. Traitement externe avec règles utilisé dans les premières versions avec un format d'échange universel. Désormais, 1C se débarrasse progressivement de cette fonctionnalité.

En mode entreprise, dans la rubrique administration, suivez le lien Synchronisation des données - Paramètres de synchronisation des données, appuie sur le bouton " Régler..."s'il n'y a qu'un seul paramètre ou " Changement", s'il y a plusieurs paramètres. Accédez au mode édition du formulaire via le menu " " , Développer " Groupe", allume-le là élément caché formes " ", " D'ACCORD".
Sur "l'onglet" Des informations de service "choisir" Chemin vers le gestionnaire d'échange", nous remplaçons notre traitement par les règles qui s'y trouvent.

Connexion du traitement externe avec des règles à BP 3.0.52 et supérieur

Dans BP 3.0.52 et versions ultérieures, pour des raisons inconnues, le traitement externe avec règles n'est pas utilisé. L'interface de connexion du traitement demeure. Merci au moins pour ça.

Vous pouvez activer le traitement avec des règles à l'aide d'une extension. Une correction doit être apportée au module commun" Échange de donnéesXDTOServeur", fonction " Versions au format d'échange".

Procédure EDm_GetExchangeFormatVersion(FormatVersions, InformationBaseNodeValue) Request = New Request("SELECT DIFFERENT | Data SynchronizationThroughUniversalFormat.PathToExchangeManager AS PathToExchangeManager, | Data SynchronizationThroughUniversalFormat.ExchangeFormatVersion AS VersionFor Exchange Mata | FROM | Exchange Plan. Synchronisation des données via le format universel COMMENT synchroniser les données via le Format universel | OÙ | Synchronisation des données via le format universel. Chemin d'accès au gestionnaire Exchange<>"""" | Et synchronisation des données via UniversalFormat.Link = &Link"); Request.SetParameter("Link", InformationBase Node); Selection = Request.Execute().Select(); While Selection.Next() Loop ProcessingName = Selection.PathToExchangeManager; If PAS à usage généralClientServer.DebugMode () Alors données de traitement = nouvelles données binaires (nom du traitement); Adresse de traitement = placer dans un stockage temporaire (données de traitement); Si usage général. Il existe une protection contre les actions dangereuses () Alors nom du traitement = traitements externes. Connect (adresse de traitement, usage général. Description de la protection sans avertissements ()); sinon nom du traitement = traitements externes. Connect (l'adresse de traitement fonctionne); EndIf; EndIf; ExchangeManager = ExternalProcessing.Create(ProcessingName); FormatVersions.Insert(Selection. ExchangeFormatVersion, ExchangeManager); EndCycle; EndProcedure &Instead("ExchangeFormatVersions") Fonction EDm_ExchangeFormatVersions(ValueInformationBaseNode) ExchangeFormatVersions = Nouvel effet de correspondance; If ValueFilled(InformationBaseNode) Then ExchangePlanName = InformationBaseNode.Metadata().Name; ExchangeFormatVersions = Données ExchangeServer.ExchangePlanSettingsValue(ExchangePlanName,"ExchangeFormatVersions"); EDm_GetExchangeFormatVersion (ExchangeFormatVersions, nœud InformationBase); Sinon, DataExchangeOverridden.WhenReceiveAvailableFormatVersions(ExchangeFormatVersions); fin si; Si ExchangeFormatVersions.Quantity() = 0, appelez alors l'exception StringFunctionsClientServer.Substitute ParametersIntoString(NStr("ru = "Aucune version de format d'échange n'est spécifiée. |Nom du plan d'échange : %1 |Procédure : obtenir ExchangeFormatVersions(<ВерсииФорматаОбмена>)""), InformationBaseNode.Metadata().Name); fin si; Résultat = Nouvelle correspondance ; Pour chaque version à partir du format Exchange Boucle de version Result.Insert(AbbrLP(Version.Key), Version.Value); Fin du cycle ; Retourner le résultat ; FinFonction

Comment déboguer les règles dans le traitement externe

    Dans le configurateur" Service -> Options -> Lancer 1C:Enterprise -> Option de lancement", précisez le paramètre " ".

  • Vous trouverez ci-dessous le code de l'extension, pour UT 11.4, KA 2.4, ERP 2.4. Le code pour BP 3.0 est donné ci-dessus. Module de gestion du plan Exchange Synchronisation des données via un format universel.

Code d'extension EDdébogage

&Au lieu de("GetExchangeFormatVersions") Procédure ED_GetExchangeFormatVersions(FormatVersions) UT Data Exchange.AvailableVersionsofUniversalFormat(FormatVersions); Request = New Request("SELECT DIFFERENT | Synchronisation des données via le format universel. PathToExchangeManager, | Synchronisation des données via le format universel. Version du format Exchange | FROM | Plan Exchange. Synchronisation des données via le format universel COMMENT synchroniser les données via le format universel | OÙ | Synchronisation des données via le format universel .PathToExchangeManager<>"""""); Selection = Query.Execute().Select(); While Selection.Next() Boucle ProcessingName = Selection.PathToExchangeManager; Si ce n'est PAS General PurposeClientServer.DebugMode() Then //ED ProcessingData = New BinaryData(ProcessingName );ProcessingAddress = PlaceInTemporaryStorage(ProcessingData); Si GeneralPurpose.ThereisProtectionFromDangerousActions() ThenProcessingName = ExternalProcessings.Connect(ProcessingAddress, GeneralPurpose.ProtectionDescriptionWithoutWarnings()); SinonProcessingName = ExternalProcessings.Connect(ProcessingAddress); EndIf; EndIf; Exchange Manager = ExternalProcessings .Create( ProcessingName); FormatVersions.Insert(Selection.ExchangeFormatVersions, ExchangeManager); EndCycle; EndProcedure &Instead("AvailableVersionsExchangeFormat") Procédure ED_AvailableVersionsExchangeFormat(FormatVersions)Data ExchangeUT.AvailableVersionsofUniversalFormat(FormatVersions); For request = New Request("SELECT DIVERS | Synchronisation des données via Universal Format.PathToExchangeManager, | Synchronisation des données via UniversalFormat.VersionExchangeFormat |FROM | Plan d'échange Synchronisation des données via le format universel COMMENT synchroniser les données via le format universel | Synchronisation des données via Universal Format.PathToExchangeManager<>"""""); Selection = Query.Execute().Select(); While Selection.Next() Boucle ProcessingName = Selection.PathToExchangeManager; Si ce n'est PAS General PurposeClientServer.DebugMode() Then //ED ProcessingData = New BinaryData(ProcessingName );ProcessingAddress = PlaceInTemporaryStorage(ProcessingData); Si GeneralPurpose.ThereisProtectionFromDangerousActions() ThenProcessingName = ExternalProcessings.Connect(ProcessingAddress, GeneralPurpose.ProtectionDescriptionWithoutWarnings()); SinonProcessingName = ExternalProcessings.Connect(ProcessingAddress); EndIf; EndIf; Exchange Manager = ExternalProcessings .Create( ProcessingName); FormatVersions.Insert (Selection.ExchangeFormatVersion, ExchangeManager); EndCycle; EndProcedure

Le débogage est plus simple à effectuer dans une base de données de fichiers. Nous définissons un point d'arrêt dans le traitement avec des règles. Pour trouver la procédure requise, nous utilisons KD3. On retrouve PKO, POD ou Algorithme, regarde " Nom du gestionnaire" ou " Nom de l'algorithme", recherchez cette procédure dans le module de règles. Après avoir édité le module, n'oubliez pas de copier la procédure dans le buffer et d'appuyer sur le bouton "" du CD3. Attention, la même conversion doit être ouverte.

C'est tout pour le moment. Ces informations sont déjà suffisantes pour qu'un programmeur 1C maîtrise indépendamment KD3 et le maintienne en état de fonctionnement manière moderne synchronisation entre les bases de données 1C. S'il reste encore des espaces vides, demandez, l'article sera complété et vous pourrez y revenir si vous avez oublié quelque chose.

Liens connus vers la documentation sur KD3 :
  • Centre de formation 1C n° 3, "Conversion de données 3.0" - http://www.1c-uc3.ru/konvert30.html
Vous pouvez étendre le champ d'application de KD3 à l'aide de ces publications :
  • - les configurations des versions précédentes sur plateforme 8.2 et inférieures sont converties en compatible ED.
Gagnez du temps et utilisez des règles toutes faites pour dernières versions les configurations peuvent être trouvées ici
  • - fonctionnalités étendues, corrections de bugs.

Imprimer (Ctrl+P)

Conversion de données, édition 3.0

Leçon 1. Se préparer à travailler avec KD3.0

Conversion de données, édition 3.0(Plus loin KD3.0) – est l’un des composants de la technologie d’échange de données via le format Données d'entreprise. KD3.0 ne remplace pas la configuration Conversion de données, édition 2.0(Plus loin KD2.0). Ce nouvelle norme, ce qui est très différent de KD 2.0. Objectif principal KD3.0 – il s'agit de la création d'un code de programme pour un module de gestionnaire d'échange, composé de procédures et de fonctions qui mettent en œuvre la logique de chargement des données présentées au format Données d'entreprise, ainsi que la logique de téléchargement des données dans le format.

Fig 1 Module gestionnaire général des échanges

KD3.0 peut être téléchargé depuis https://users.v8.1c.ru/

Révision 3.0.5.3, destinée à être utilisée avec la version du système
1C:Enterprise 8.3 n'est pas inférieur à 8.3.10 et l'édition 3.0.4.3 est destinée à être utilisée avec la version du système 1C:Enterprise 8.3 qui n'est pas inférieure à 8.3.8.

La livraison KD3.0 contient le traitement externe suivant

  • Traitement MD83Exp.epf« Téléchargement d'une description de la structure des métadonnées de la configuration 8.3 » – est destiné au téléchargement d'une description de la structure des métadonnées de toute configuration implémentée sur la plate-forme 1C:Enterprise 8.3.
  • Traitement Téléchargement des règles de synchronisation.epf« Téléchargement des règles de synchronisation via un format universel » utilisé lors de la préparation des fichiers de règles de conversion destinés à un chargement ultérieur dans la configuration « Conversion de données », édition 3.0.
  • Le fichier « Configuration Description.htm » contient une brève description
    principal Fonctionnalité configurations
    « Conversion de données », édition 3.0.

Informations complémentaires sur la configuration « Conversion de données », version 3.0
voir http://its.1c.ru/db/metod8dev#content:5846:hdoc

1. Se préparer à mettre en place des règles

Pour charger la structure de format, vous devez d'abord ouvrir la base de données de configuration en mode configurateur et télécharger les packages XDTO de la configuration dans des fichiers *.xsd.

Il est nécessaire de décharger tous les packages associés au format. Les noms des fichiers n'ont pas d'importance fondamentale. Vous devez également télécharger le package ExchangeMessage XDTO

Après avoir chargé le format XDTO sur le CD 3.0, les répertoires « Format Objects », « Format Properties », « Format Values ​​» sont renseignés

DANS ouvrage de référence « Format des objets » chargement:

  • Objets de type « ObjectTypeXDTO », qui reflètent les types de données de référence (documents, répertoires)
  • Objets de type « XDTOValueType » contenant une énumération. Ils reflètent des données prédéfinies (par exemple des énumérations)

DANS ouvrage de référence « Propriétés du format » chargement:

  • Propriétés des objets « ObjectTypeXDTO ». En même temps, les objets eux-mêmes sont ceux qui ont été chargés dans « Format des objets »
  • Objets de type « ObjectTypeXDTO » et leurs propriétés qui reflètent les parties tabulaires et les détails des parties tabulaires

Les propriétés des objets « XDTOValueType », qui sont des éléments de données prédéfinies, sont chargées dans le livre de référence « Format Values ​​». En même temps, les objets eux-mêmes sont ceux qui ont été chargés dans « Format des objets »

1. 2. Traitement « Chargement de la structure de configuration »

Ce traitement charge la structure des métadonnées de configuration dans l'infobase Conversion de données éd.3.

Pour télécharger des informations sur la structure de l'infobase, un traitement est utilisé MD83Exp.epf, inclus dans le kit de livraison pour la configuration KD3.0

Pour l'infobase dont la structure doit être déchargée, effectuez les étapes suivantes :

  1. Ouvrez l'infobase en mode Entreprise.
  2. Traitement externe ouvert MD83Exp.epf(Menu Fichier - Ouvrir).
  3. Spécifiez le nom du fichier dans lequel enregistrer la structure de l'infobase.
  4. Vérifiez les paramètres dans le formulaire de traitement (tous les indicateurs doivent être effacés).
  5. appuie sur le bouton Décharger.

Après avoir téléchargé la structure de configuration, les répertoires sont renseignés

  • Objets de métadonnées
  • Propriétés de l'objet
  • Valeurs des objets.

Annuaire Objets de métadonnées contient des informations sur les objets de métadonnées de configuration. Le type d'objets est enregistré dans l'attribut correspondant. En fonction de la valeur de l'attribut Type, les détails décrivant les propriétés de l'objet de métadonnées sont renseignés. Les détails des objets de métadonnées sont décrits dans le répertoire subordonné Propriétés de l'objet. Les valeurs des objets (valeurs d'énumération et noms d'éléments prédéfinis) sont décrites dans un répertoire subordonné Valeurs des objets.

Avant de charger les règles de synchronisation via un format universel, le format des données doit être chargé à partir de fichiers (à l'aide du traitement(voir clause 1.1), et la configuration pour laquelle les règles de synchronisation sont configurées doivent également être chargées. La configuration est chargée à l'aide du traitement ( voir point 1.2) . Notez également queélément de répertoire à créer Conversions . Pour convertir, vous devez spécifier la configuration et une ou plusieurs versions de format pour lesquelles la conversion est destinée.

1.3.1 Préparation des fichiers pour le chargement des règles

La préparation des fichiers est effectuée dans base d'informations, pour lequel l'échange s'effectuera sous un format universel (par exemple, Comptabilité d'entreprise ed.3.0).

Pour préparer les fichiers de règles, vous devez entrer dans l'infobase en mode Entreprise et lancer le traitement Mise en ligne des règles de synchronisation via un format universel, qui est inclus dans la livraison de la configuration Conversion de données éd.3.

Pour préparer un dossier avec un module gestionnaire, vous devez entrer dans la base d'informations en mode Configurateur et sauvegarder le module général Gestionnaire Exchange via le format universel V fichier texte. Vous pouvez spécifier n'importe quel nom de fichier.

Tous les fichiers préparés doivent être situés dans le même répertoire.

1.3.2 Chargement des règles de synchronisation

Effectué dans l'infobase Conversion de données éd.3 en traitant Chargement des règles de synchronisation à partir de fichiers.

Dans le formulaire de traitement, indiquez :

  • Répertoire Exchange dans lequel se trouvent les fichiers préalablement préparés
  • Conversion
  • Composition des données téléchargées
    • ou spécifiez l'option « tout »
    • ou sélectionnez le chargement sélectif et configurez la liste des règles à charger
  • Fichier avec le module gestionnaire d'échange (non requis si le chargement sélectif est effectué et que les gestionnaires ne sont pas chargés)
1.3.3 Fonctionnalités de chargement dans une base de données non vide
  • Si la règle chargée existe et qu'elle appartient à une seule conversion (celle en cours), la règle sera modifiée. Dans ce cas, l'analyse des différences entre les règles existantes et chargées n'est pas effectuée ; la règle est rechargée et écrite sans condition.
  • Si la règle chargée existe et qu'elle appartient à plusieurs éléments du répertoire Conversions, dont la conversion en cours, une nouvelle règle sera créée et liée à la conversion en cours. L’« ancienne » règle restera inchangée et restera liée aux autres conversions.
  • Les groupes de règles ne sont pas chargés. Mais si la règle a été attribuée à un groupe, lors du rechargement dans cette règle cette information restera.