Maison / Réseaux sociaux / Création de xml selon le schéma xsd 1c. Un objet DataSet typé. Lecture et écriture de documents XML. Représenter un fichier XML et le lire

Création de xml selon le schéma xsd 1c. Un objet DataSet typé. Lecture et écriture de documents XML. Représenter un fichier XML et le lire

Ce chapitre vous montrera comment écrire des schémas XML. Vous apprendrez également que le schéma peut être écrit de différentes manières.

Document XML

Regardons ce document XML appelé "shiporder.xml" :

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
John Smith

Ola Nordmann

Langgt 23

4000 Stavanger
Norvège


Empire burlesque
Édition spéciale
1
10.90


cache ton coeur
1
9.90

Le document XML ci-dessus se compose d'un élément racine, "shiporder" , qui contient un attribut obligatoire appelé "orderid" . L'élément "shiporder" contient trois éléments enfants différents : "orderperson" , "shipto" et "item" . L'élément "item" apparaît deux fois et contient un élément "title" , un élément "note" facultatif, un élément "quantity" et un élément "price".

La ligne ci-dessus : Xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance" indique à l'analyseur XML que ce document doit être validé par un schéma. Ligne : xsi : noNamespaceSchemaLocation="shiporder.xsd" indique où se trouve le schéma quoi et (le voici dans le même dossier que "shiporder.xml") .

Création d'un schéma XML

Nous voulons maintenant créer un schéma pour le document XML ci-dessus.

Nous allons commencer par ouvrir un nouveau fichier, que nous appellerons "shiporder.xsd" . Afin de créer un schéma, nous pourrions simplement suivre la structure du document XML et définir chaque élément tel que nous le trouvons. Nous commencerons par une déclaration XML standard suivie de xs : l'élément de schéma qui définit le schéma :



...

Dans le schéma ci-dessus, nous utilisons les espaces de noms standard (xs) , et l'URI associé à cet espace de noms est la définition du langage de schéma, qui a la valeur standard http://www.w3.org/2001/XMLSchema.

Ensuite, nous devons définir l'élément "shiporder". Cet élément a un attribut et contient d'autres éléments, nous le traitons donc comme un type complexe. Éléments enfants L'élément "shiporder" est entouré de xs : un élément de séquence qui définit une séquence ordonnée de sous-éléments :




...


Nous devons ensuite définir l'élément "orderperson" comme un type simple (puisqu'il ne contient aucun attribut ou autre élément). Le type (xs:string) est précédé du préfixe d'espace de noms associé au schéma XML, qui spécifie le type de données prédéfini du schéma :










Avec les schémas, nous pouvons déterminer le nombre d'occurrences possibles pour un élément avec les attributs MaxOccurs et MinOccurs. MaxOccurs spécifie le nombre maximum d'occurrences pour un élément et MinOccurs spécifie le nombre minimum d'occurrences pour un élément. La valeur par défaut pour MaxOccurs et MinOccurs est 1 !

Nous pouvons maintenant définir l'élément "item". Cet élément peut apparaître plusieurs fois dans l'élément "shiporder". Ceci est déterminé en définissant l'attribut maxOccurs de l'élément "item" sur "unbounded" , ce qui signifie qu'il peut y avoir autant d'occurrences de l'élément "item" que l'auteur le souhaite. Notez que l'élément "note" est facultatif. Nous l'avons déterminé en définissant l'attribut minOccurs sur zéro :










Nous pouvons maintenant déclarer l'attribut "shiporder" de l'élément. Puisqu'il s'agit d'un attribut obligatoire, nous spécifions use="required".

Remarque : Les déclarations d'attribut doivent toujours venir en dernier :

Ici liste complète fichier de schéma appelé "shiporder.xsd" :





























Circuits séparés

La méthode de conception précédente est très simple, mais peut être difficile à lire et à maintenir lorsque les documents sont complexes.

La méthode de conception suivante est basée sur la définition de tous les éléments et attributs, puis sur leur référencement à l'aide de l'attribut ref.

Ici nouveau design fichier de schéma ("shiporder.xsd") :








































Utilisation de types nommés

La troisième méthode de conception définit des classes ou des types, ce qui vous permet de réutiliser les définitions d'éléments. Cela se fait en nommant les éléments simpleTypes et complexTypes, puis en s'y référant via l'attribut type de l'élément.

Voici le troisième design du fichier de schéma ("shiporder.xsd") :

































L'élément de contrainte indique que le type de données a été dérivé de l'espace de noms de type de données W3C XML Schema. Ainsi, l'extrait de code suivant signifie que la valeur d'un élément ou d'un attribut doit être une valeur de chaîne :

L'élément de contrainte est plus couramment utilisé pour appliquer des contraintes aux éléments. Regardez les lignes suivantes du diagramme ci-dessus :





Cela indique que la valeur de l'élément ou de l'attribut doit être une chaîne, qu'elle doit comporter exactement six caractères par chaîne et que ces caractères doivent être un nombre compris entre 0 et 9.

Il y avait une tâche de création d'un fichier XML basé sur le schéma XSD. La recherche sur les forums a conduit à de nombreuses discussions liées à un manque de compréhension du processus, et à seulement quelques articles expliquant l'essence. Les gens ont posé des questions, ont lutté avec la solution, mais après que la tâche leur a succombé, ils ont tout simplement disparu sans décrire le mécanisme. Cela a incité la création descriptif simple traiter.
PS Ne jurez pas trop, mon but n'était pas de créer une sorte d'article scientifique en utilisant strictement la terminologie correcte, mais simplement d'aider à faire le premier pas vers la compréhension d'un mécanisme d'échange XML très puissant.
P.P.S. Il convient de noter tout de suite que le fichier de téléchargement joint à l'article n'est qu'un blanc qui ne crée qu'une partie de la structure requise du fichier XML, car. mon travail avec ce téléchargement était plus de nature éducative (copier le document d'exportation précédent sur le site Web de FCS et télécharger à partir du fichier Excel uniquement partie tabulaire La marchandise semblait être une solution plus efficace), et le manque de temps n'a pas permis de terminer la création de l'ensemble de la structure, basée uniquement sur des considérations perfectionnistes.

Ainsi, après s'être enregistré sur le site Web du Service fédéral des douanes, il est devenu clair que pour créer des documents de rapport statistique sur l'exportation, vous devez télécharger les données des documents Ventes de biens et services de l'Administration du commerce et créer un fichier à télécharger .

Il existe deux options de téléchargement.

Tout d'abord : charger la section tabulaire avec les produits de fichier Excel(Cette option a été choisie comme option de travail, car elle présentait l'avantage de ne pas s'embarrasser du traitement de "l'en-tête" du document, mais vous pouviez simplement copier la précédente, en modifiant ce qui était requis dans "l'en-tête" ).

Deuxièmement : création d'un fichier XML selon le schéma téléchargé sur le site Internet de FCS sous la forme d'un « Album de formats pour les formulaires électroniques de documents ». L'album suffit un grand nombre de Schémas XSD. Ils ont trouvé le schéma de la "Forme statistique de comptabilisation du mouvement des marchandises" et fichiers supplémentaires avec des descriptions de type pour cela. Les schémas sont attachés à l'article dans l'archive avec traitement.

Le bloc-notes Microsoft XML 2007 gratuit a été utilisé pour afficher les schémas XSD.

L'image montre le fichier principal avec le schéma XSD "Forme statistique de comptabilisation du mouvement des marchandises". L'image met en évidence les principaux blocs du schéma XSD dont nous avons besoin pour le comprendre.

On peut voir sur le diagramme que nous devons obtenir un fichier XML rempli avec la structure spécifiée dans la branche "xs: element" du type StaticFormType.

La structure peut être assez complexe (comme dans notre cas). Avec des descriptions de type présentes directement dans la branche, déplacées vers une branche distincte, ou même situées dans un autre fichier.

Cette structure est de type StaticFormType, qui à son tour se compose du type de base BaseDocType, un ensemble d'objets différents types et les attributs de texte.

Le type de base BaseDocStyle est décrit dans un autre fichier (et espace de noms)
.

Ce fichier contient également beaucoup de types qui ne sont pas utilisés dans notre cas.

Passons maintenant au travail en 1C. En un mot, ce que nous devons faire se résume à ce qui suit :

1. L'usine XDTO est créée

OurXDTOFactory = CreateXDTOFactory(ArrayFullFileNamesWithXSDSchemas);

2. Tous les types de données complexes sont créés dans l'usine XDTO, que nous remplirons plus loin fichier créé XML :

StaticFormType = MyFactoryXDTO.Type("urn:customs.ru:Information:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");

Les types de données inclus dans un certain type peuvent être obtenus à partir de la collection de ses propriétés :

CUOrganizationType = StaticFormType.Properties.Get("Consignataire").Type ; NameType = CUOrganizationType.Properties.Get("OrganizationName").Type ; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Type ; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Type ;

3. Lorsque tous les types de données complexes sont créés, nous créons une structure de fichier XML basée sur eux, composée d'objets XDTO Factory :

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType); // collection avec documents NewDocuments = MyXDTOFactory.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "Lettre de voiture"); NewDocuments.PrDocumentNumber = MyXDTOFactory.Create(PrDocumentNumberType, "123-number"); NewDocuments.PrDocumentDate = MyXDTOFactory.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(NouveauxDocuments);

En même temps, nous remplissons les détails élémentaires (types simples).

4. Et enfin, nous déchargeons tout de la XDTO Factory dans un fichier :

XMLFile = New XMLWriter(); FichierXML.OpenFile(FileName); FichierXML.WriteDeclarationXML(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FichierXML.Close();

PS L'archive contient un fichier vide de déchargement en XML (seuls certains détails sont créés qui reflètent tous les cas de remplissage du fichier) et des schémas XSD.

Décompressez tous les fichiers dans un répertoire.

XML y sera créé.

L'erreur indiquant que le fichier ne correspond pas au schéma XSD est courante lorsque le système ne peut pas lire les données du rapport. En général, de telles erreurs se produisent souvent chez les personnes et il est assez facile de les gérer.

Vous devez d'abord comprendre ce que signifie le schéma XSD afin de comprendre à quoi exactement votre fichier ne correspond pas.

Donc XSD est langage de programmation, il décrit la structure de votre rapport. La structure comprend, par exemple, les paramètres du contenu du rapport, le type, le type, ainsi que la syntaxe des données, les sections contenant des informations.

Il s'avère que le schéma XSD est une description de la structure de votre rapport réalisé dans l'un des langages de programmation. Si des informations incorrectes sont saisies dans le rapport, elles seront simplement illisibles pour le schéma, c'est pourquoi le système génère une erreur indiquant que le fichier ne correspond pas au schéma XSD.

Cela indique que les informations que vous avez entrées ne peuvent pas être lues dans le langage de programmation, par conséquent, le programme les reconnaît comme incorrectes.

Il convient de noter que ce problème peut survenir à la suite de données mal saisies(par exemple, vous avez fait une erreur lors de la saisie du TIN de l'organisation) et en raison du format incorrect de saisie des données (par exemple, vous avez indiqué des espaces ou des tirets supplémentaires).

Cependant, ce n'est pas la seule raison pour laquelle un fichier ne correspond pas à un schéma XSD. Cette erreur Cela peut également se produire en raison du fait qu'une version obsolète du programme dans lequel vous effectuez une déclaration est installée sur votre appareil, et également si la mise à jour du programme n'est pas installée dans l'administration fiscale elle-même.

Afin de résoudre une erreur dans un schéma XSD, vous devrez vérifier l'exactitude de toutes les données, que vous avez entré, ainsi que pour préciser si une mise à jour du programme dans lequel vous travaillez est sortie. Cependant, avant de vérifier le fichier, regardez attentivement le texte de l'erreur qu'il vous donne.

Le fait est que dans certaines situations, après le texte indiquant que le fichier ne correspond pas au schéma, il y a deux-points, puis la cause de ce problème est indiquée. Si la cause n'est pas indiquée dans l'erreur elle-même, mettez à jour le programme vers la dernière version.

Une fois la mise à jour terminée, essayez de soumettre à nouveau votre rapport. Si, après la mise à jour du fichier, une erreur se produit à nouveau, vous devez cherchez-y un problème. Si vous travaillez dans le programme 1C, vous pouvez vérifier le fichier à l'aide d'un bouton spécial appelé "vérifier sur Internet".

Si les deux paragraphes précédents ne vous ont pas permis d'identifier le problème, alors vérifiez que vous avez rempli tous les champs obligatoires, que vous avez correctement saisi toutes les données, car beaucoup d'entre elles doivent être remplies avec des chiffres, auquel cas il est très facile de faire une faute de frappe.

De plus, vous devez vérifier tous les champs pour les espaces supplémentaires, les tirets et autres caractères. Si vous avez vérifié l'intégralité du fichier et que vous ne trouvez pas d'erreur, ou si vous avez réussi à trouver une erreur, mais que vous ne pouvez en aucun cas la corriger, vous devez absolument contacter le support technique le programme avec lequel vous faites rapport ou à ses développeurs.

Afin de décider ce problème avec l'aide des développeurs du programme, vous devrez envoyer certains documents, tels que le fichier lui-même, dans lequel se trouve le rapport, le protocole de notification que l'ordinateur vous donne.

De plus, les développeurs peuvent vous demander des informations sur votre organisation, ainsi que d'autres informations qu'ils jugent nécessaires, vous devez les fournir, sinon le problème ne sera pas résolu.

Donc, si vous essayez de soumettre un rapport à l'administration fiscale, mais que le fichier donne une erreur indiquant qu'il ne correspond pas au schéma XSD, cela signifie que votre rapport ne peut pas être envoyé, car le programme ne peut pas lire les données que vous avez saisies.

Mais il ne faut pas paniquer, car dans la plupart des cas ce problème résolu tout simplement et vite. De plus, si vous avez envoyé le rapport à temps, mais qu'il n'a pas été accepté en raison d'un format incorrect, la taxe pas droit à une amendeà vous de ne pas avoir soumis le rapport à temps. Tout d'abord, faites attention au texte de l'erreur elle-même, peut-être que la raison de son apparition y est déjà indiquée.

En fait, il ne peut y avoir que deux raisons. Ou vous avez installé sur votre appareil ancienne version programmes, avec lequel vous faites un rapport, dans ce cas, il est facile de résoudre le problème, il vous suffit de télécharger le plus Dernière mise à jour, vous pouvez généralement le trouver sur le site Web du programme que vous utilisez. La deuxième raison peut être que vous avez rempli certaines données de manière incorrecte ou que vous n'avez rempli aucun champ du tout.

Dans ce cas, vous devez vérifier votre fichier, tout en vous rappelant que le programme peut le considérer comme une erreur même espace étrange . Si vous ne trouvez pas la cause de l'erreur, vous pouvez contacter soutien technique programmes, des experts vous aideront certainement à résoudre votre problème.

Le format XML est très populaire dans l'échange de divers document texte entre systèmes d'information. La possibilité de créer une structure unique pour les documents lui permet d'être utilisé dans de nombreux domaines - bibliothèques numériques, WEB, import/export, et bien d'autres. Sans la possibilité de travailler facilement avec ce format, les systèmes 1C n'auraient pas pu gagner une telle popularité. Étant donné que 1C utilise activement les technologies WEB, chaque développeur doit être capable de lire XML et d'y écrire des informations.

Représenter un fichier XML et le lire

L'un des principaux avantages du langage de balisage XML est une structure et une syntaxe assez pratiques et intuitives. Lors de sa création, les auteurs se sont fixé pour objectif de créer un langage de balisage facile à lire par les humains et les ordinateurs. À ce jour, XML a été largement développé dans d'autres formats, mais reste populaire et largement utilisé. La structure du fichier XML est construite selon le schéma suivant :

Pour considérer un exemple d'importation de données dans 1C, le fichier ci-dessus suffira. Pour que la procédure écrite puisse lire le fichier XML, il suffit de lui passer le chemin du fichier lui-même. Cela peut être fait via l'interface, permettant aux utilisateurs de spécifier eux-mêmes le fichier, ou codé en dur dans le texte de traitement.

L'une des façons les plus courantes de travailler avec XML jusqu'à 100 Mo en 1C consiste à utiliser le modèle d'objet de document (DOM). Sa signification est de traiter séquentiellement tous les nœuds du document, représentés en XML. Dans le langage 1C intégré, cet algorithme ressemble à ceci :

  1. Déclarer les mécanismes par lesquels le fichier XML est lu ; Boucle pour traverser les nœuds ;
  2. Lire des données et des attributs dans un nœud ;
  3. Sortie d'informations. Si nécessaire, à ce stade, l'écriture dans les variables ou immédiatement dans les tables nécessaires peut avoir lieu ;
  4. Achèvement du mécanisme.
&AtServer Procedure ReadAtServer(PathToFile) //Déclaration des mécanismesReadMechanism = New XMLReader; ReadMechanism.OpenFile(PathToFile); Constructeur = Nouveau constructeur DOM ; Document = Builder.Read(ReadMechanism); //boucle pour traverser les nœuds Pour chaque élément From Document.DocumentElement.ChildrenNodes Boucle //lecture des données If element.NodeName = "Product" Then product = element; Pour chaque valeur From Product.ChildNodes Loop If values.NodeName = "Name" then Name = values; Couleur = Nom.Attributes.GetNamedElement("Couleur"); ElseIf values.NodeName = "Price" then Cost = values ; Devise = Cost.Attributes.GetNamedItem("Currency"); Fin si; FinCycle ; //messages de sortie Report("Name: " + Name.TextContent + "; color: "+Color.Value +"; Price: "+Cost.TextContent + "; Currency: "+Currency.Value); Fin si; FinCycle ; //fermeture du mécanisme FinProcédure

En conséquence, nous affichons des messages à l'utilisateur avec des données importées. Vous pouvez également mettre toutes les données dans la structure souhaitée et, en fonction de celle-ci, programmer la création d'un document ou d'entrées dans le répertoire. La vitesse de 1C avec xml est assez élevée, ce format est donc de plus en plus utilisé lors de l'échange de données avec d'autres sources.

Pour télécharger des informations, nous devrons également interagir avec des fichiers Format XML. Prenons un exemple d'enregistrement utilisant l'objet de plateforme 1C WriteXML et téléchargeons les données selon la nomenclature. Ses principaux avantages sont la simplicité du code et la rapidité de traitement des données. L'algorithme serveur d'écriture d'un fichier XML peut être représenté en plusieurs étapes séquentielles :

  1. Nous nous connectons au fichier xml;
  2. Nous créons des éléments principaux et y écrivons des données. Si vous souhaitez décharger une grande quantité d'informations dans un fichier XML, vous utiliserez à ce stade des boucles. Attention à ne pas oublier que la requête de données doit être faite avant la boucle, pas dans celle-ci ;
  3. Nous fermons le dossier.
//ouvre le fichier Nomenclatura.xml et écrit l'élément principal WriteToFile = New WriteXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteToFile.3writeStartItem("Marchandises"); //sélectionnez les données pour l'enregistrement SelectionFromDirectory = Directories.Nomenclature.Select(); //cycle dans lequel l'enregistrement a lieu Boucle While SelectionFromDirectory.Next() //écriture de nouvelles données WriteToFile.WriteItemBeginning("Item"); WriteToFile.WriteAttribute("Nom", SelectionFromCatalog.Name); WriteToFile.WriteAttribute("InitialPrice", String(SelectionFromCatalog.InitialPrice)); WriteToFile.WriteEndElement(); FinCycle ; //Ferme l'élément head et le fichier WriteToFile.WriteEndElement(); WriteToFile.Close();

Mécanisme XDTO en 1C

Les développeurs de la société 1C ont créé leur propre mécanisme d'échange d'informations via XML - XDTO (XML Data Transfer Objects). À partir de la version 8.1, la plate-forme a la capacité d'échanger des données avec d'autres systèmes sans se plonger dans les problèmes de génération d'un fichier XML. La plupart des problèmes techniques sont pris en charge par 1C, et nous n'avons qu'à indiquer les données nécessaires pour former le XML. Certes, pour cela, le développeur doit faire quelques manipulations à l'avance.

Pour charger un fichier XML à l'aide de XDTO, nous devons indiquer à 1C la structure du fichier. Il est transmis à travers un ensemble de schémas que vous pouvez créer dans un éditeur de texte ou utiliser un programme spécialisé. Le résultat devrait être un fichier décrivant structure globale et les types de données utilisés dans le fichier XML. Avant de lire ou d'écrire un nouveau XML, le développeur doit charger son schéma dans la configuration dans la section "Packages XDTO".

Dans ce cas, nous allons créer un package simple de nos mains afin que 1C comprenne la structure de notre fichier par exemple. Pour que la génération du fichier se termine avec succès, nous devons refléter dans le schéma que nous avons un élément principal et une pièce jointe avec des attributs. Le schéma créé doit être exporté vers un fichier xsd et transféré avec xml afin que l'autre côté n'ait pas besoin de gérer la structure et de recréer le package xdto.


Enregistrer le nouveau XML dans Disque dur un algorithme côté serveur similaire au précédent aidera. La seule différence est la nécessité d'ajouter des données pour 1 produit à l'usine XDTO - un mécanisme spécial de la plate-forme 8.3 1C. S'il est nécessaire de faire plus de niveaux d'imbrication, vous devrez décrire chaque élément principal.

//Ouvre le fichier XML WriteToFile = New WriteXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Spécifiez 1C quel type de données doit être créé - élément principal AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); //sélectionnez les données à télécharger SelectionFromDirectory = Directories.Nomenclature.Select(); //Ajouter des produits individuels à l'élément principal ByeDirectory Selection.Next() loop Product = XDTO Factory.Create(XDTO Factory.Type("http://wiseadviceXML.org","Product")); Product.Description = SelectionFrom the Directory.Description ; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts.Add(Product); FinCycle ; //écrit les données et ferme le fichier FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteToFile.Close();

Les mécanismes considérés sont assez universels et réglage correct peut résoudre la plupart des problèmes. Cependant, il y a beaucoup de nuances dans l'interaction entre 1C et XML. Il est beaucoup plus efficace de les étudier en conditions réelles, et non sur des tâches de test, dans lesquelles le traitement d'un fichier XML résout des tâches assez étroites.

Plateformes: 1C : Entreprise 8.3, 1C : Entreprise 8.2, 1C : Entreprise 8.1
Configurations: Toutes configurations

2012-11-25
34938

XDTO est un mécanisme nécessaire lors de la création et de l'exécution de services Web. Les packages XDTO décrivent la structure du fichier XML requis pour modifier les données depuis et vers XML.

XML est un moyen de décrire une structure de données complexe dans un fichier texte ordinaire. Il décrit non seulement les données elles-mêmes, mais également les champs dans lesquels elles sont stockées.
Voici un exemple de fichier XML de base :

XML pour les nuls

Noms (étiquettes) utilisés dans fichier donné- root, list, name, el - peuvent être absolument arbitraires. Les règles de base pour générer un fichier XML sont immédiatement visibles depuis sa structure :
- Il est possible d'imbriquer des éléments ;

Début d'élément<Имя>, la fin est le même nom, mais avec l'ajout du caractère "/".

Un élément peut être :
- éléments imbriqués ;
- Texte.

Chaque élément peut avoir des propriétés (attributs), ils ont une valeur et un nom. En XML, il est interdit d'utiliser des caractères, car plusieurs d'entre eux sont utilisés directement pour XML, par exemple "<» и «>". La façon de décrire en XML est très pratique à utiliser lors d'échanges avec d'autres programmes tiers et il est utilisé dans le mécanisme d'échange de données 1C.

Espace de noms

Un fichier XML commence par un en-tête décrivant la version XML, l'encodage, etc... Un en-tête XML n'est pas strictement nécessaire et très souvent il n'est tout simplement pas utilisé. Dans l'en-tête, il est également possible de définir - des espaces de noms.

Les fichiers XML sont transmis sur Internet et sont acceptés par de nombreux programmes différents. Perçu - cela signifie que leur code a une protection - si vous rencontrez un certain nom d'élément dans le fichier XML, vous devez le percevoir de cette manière et faire exactement cela. Par conséquent, lorsque nous utilisons la balise IBM, il y a de fortes chances qu'un autre programme pense qu'il s'agit d'IBM, connu de lui, alors que nous voulions dire quelque chose qui nous est propre.

Afin d'éviter cela et afin d'indiquer clairement la différence entre notre IBM et tous les autres, il est possible de définir le nom de l'espace de noms dans le fichier - un préfixe utilisé avant le nom des éléments.

Vous pouvez définir un espace de noms (namespace) comme suit - xmlns : Préfixe (NameSpace) = « URL », exemple :
xmlns:store = "http://site.ru"

Pourquoi une URL est-elle nécessaire ? Qui a déjà pensé et regarde plus loin - bien sûr, l'espace de noms que nous avons inventé peut également ne pas être unique, c'est-à-dire n'importe qui d'autre peut également l'utiliser. C'est pourquoi un identifiant unique spécial est spécifié, qui détermine en même temps l'exécuteur de l'espace de noms.

Naturellement, l'implication est que la personne qui a spécifié l'espace de noms est exceptionnellement honnête. Il pointe vers son propre site et n'utilise pas plusieurs espaces de noms différents avec un seul site. En règle générale, l'URL du site et l'URL d'un dossier spécifique sur le site sont spécifiés, de sorte qu'il est possible de créer un autre espace de noms dans n'importe quel dossier de ce site, pour son utilisation dans n'importe quelle situation.

DOM

Un objet est une structure de données spécifique qui se suffit à elle-même et contient toutes ses données.

En raison du fait que dans le fichier XML il y a une description des données structurées, c'est-à-dire des données sous la forme d'une structure qui a ses propres propriétés et ainsi de suite, respectivement, elles peuvent être considérées comme des objets. Dans l'exemple considéré, un objet LIST avec des propriétés et un élément imbriqué peut être utilisé.

DOM est un moyen de visualiser un fichier XML non pas comme du texte dans un format spécifique, mais comme un ensemble d'objets avec des champs, des propriétés, etc.

Par contre cette méthode travail, s'applique exigences élevées aux performances du PC, comme DOM traite (forme une structure sous forme d'objets) l'intégralité du fichier XML en une seule fois, quelle que soit sa taille, et il ne peut tout simplement pas "digérer" des fichiers volumineux (plus de 4 Go).

Pour l'analyse de fichiers volumineux, SAX est utilisé, cette méthode d'analyse d'un fichier est basée sur la lecture séquentielle du fichier, et non sur la construction de toute sa structure en une seule fois .

Description du fichier XML

Si nous utilisons un fichier d'une structure particulière tout le temps pour échanger entre 2 programmes, alors nous voudrions probablement ce qui suit :

À utiliser titres spécifiques;
- N'utiliser que les éléments que nous attendons (qui "doivent exister pour être utilisés dans l'échange") ;
- Pour que seuls les types attendus par nous (numéro, chaîne, etc.) soient indiqués dans les attributs.

Pour décrire une structure XML, il existe les formats de fichier suivants (également stockés dans un fichier texte brut) :

L'extension DTD est Définition du type de document ;
- L'extension XSD est XML Shema.

Ces formats décrivent ce que le document devrait être. La procédure de contrôle de conformité XML décrite dans un tel fichier standard est appelée vérification.

XDTO

XDTO est un objet 1C qui permet d'ajouter une description de fichier XML à la configuration. Plus précisément, ce n'est pas le fichier lui-même qui est décrit, mais certaines structures XML.

Pour indiquer les types utilisables - une liste est utilisée, une bibliothèque de types - appelée fabrique XDTO. Cette usine spécifie non seulement types simples(date, chaîne, nombre), qui sont utilisés dans d'autres programmes, langages, etc., mais aussi des types 1C utilisés dans 1C et dans une certaine configuration.

L'usine XDTO comprend plusieurs packages. Les types initiaux sont décrits dans un package appelé www.w3.org Les types de données dans la configuration sont décrits dans le package http://v8.1c.ru/8.1/data/enterprise/current-config

Ces types sont nommés selon les noms dans le configurateur avec l'ajout de la forme anglaise (CatalogRef, DocumentObject, CatalogObject, DocumentRef), par exemple :

CatalogObject.AccountsCatalogObject.Accounts

Ajout d'un package XDTO

Nous sommes arrivés au sujet de XSLT, un moyen de transformer des fichiers XML en autre chose, comme des fichiers HTML. Le sujet de XML est extrêmement vaste et plus d'un livre a été écrit dessus.

Notre tâche est de comprendre que XDTO vous permet de décrire les éléments qui doivent se trouver dans le package XML qui doit être lu ou généré. Les packages XDTO se trouvent dans la configuration 1C et dans la branche Général - packages XDTO.

Il est possible d'ajouter manuellement un package XDTO à 1C, mais il est préférable d'obtenir le fichier XSD correspondant avec un prêt Description détaillée schème. Une description du schéma des objets XSD de n'importe quelle configuration peut être obtenue en cliquant sur la branche Général - XDTO-packages et en sélectionnant l'élément "Exporter le schéma des données de configuration XML" dans le menu.

Cette fichier texte, vous pouvez modifier dans Bloc-notes Windows, tout en supprimant les objets inutiles (inutiles pour vous). Il est possible d'ajouter un schéma XSD prêt à l'emploi à 1C en cliquant avec le bouton droit sur la branche Général - Packages XDTO et en sélectionnant l'élément "Importer le schéma XML" dans le menu.

Travailler avec XDTO en 1C est la transformation de valeurs de XML et en XML. Ceci est fait en utilisant des objets du langage 1C Lecture XML/XMLÉcriture.

Lorsque vous travaillez avec XDTO, vous devez spécifier le package avec lequel vous travaillez directement. Il peut s'agir soit d'un package générique (voir la discussion ci-dessus, XDTO) soit d'un package ajouté à la configuration.

Le package est identifié par l'URL spécifiée dans le package. Il existe deux manières principales de travailler, à savoir :

Sérialisation - changement automatique valeurs de XML à 1C et vice versa ;

Remplir les champs d'un objet, sa création et son écriture en XML (ainsi que, respectivement, la lecture à partir de XML et la lecture ultérieure de ses champs).

Imaginons un exemple de sérialisation de valeur :

Sérialiseur = Nouveau sérialiseur XDTO (usine XDTO) ;
Fichier XML = Nouvelle écriture XML();
XMLFile.OpenFile("NomFichier");
Sérialiseur.WriteXML(XMLFile, 1C Value);

Fonction inverse - Sérialiseur. XMLReading(), utilisé à partir des objets 1C du langage ReadingXML.
Un exemple d'écriture/lecture d'un objet :

Répertoire XDTOObject = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Contractors"));
Fill inPropertyValues(XDTOObject Directory, Directory.Counterparties.FindBy Attribute("Name", "Ivanov).Link);

Ensuite, vous pouvez écrire l'objet créé en XML exactement de la même manière que la sérialisation. Lors de la lecture de XML de la même manière que celle décrite ci-dessus, ce n'est pas une valeur XDTO qui peut être renvoyée, mais un tel objet.

Lors de la création de l'objet XDTO, une structure est créée qui est similaire à la structure de l'objet de configuration (sauf, bien sûr, si vous créez l'objet de configuration à partir du package spécifié dans l'exemple ci-dessus). Les champs typiques (nom, code, etc.) sont en anglais, et l'objet est créé vide, il doit donc être rempli, séparément pour chaque champ ou à l'aide de la fonction FillPropertyValues