Contacts

Le fichier 1c ne contient pas de définition de schéma XSD. Objet DataSet typé. Lire et écrire des documents XML

Ce chapitre va vous montrer comment écrire des schémas XML. Vous apprendrez également que le diagramme peut être rédigé 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

Longueur 23

4000 Stavanger
Norvège


Burlesque Empire
É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 « article » apparaît deux fois et contient un élément « titre », un élément « note » facultatif, un élément « quantité » et un élément « prix ».

La ligne ci-dessus : Xmlns: XSI="http://www.w3.org/2001/XMLSchema-instance" indique à l'analyseur XML que ce document doit être validé par le schéma. Ligne : XSI : noNamespaceSchemaLocation = "shiporder.xsd" indique où se trouvent les schémas (ici, il se trouve 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 ». Pour 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 d'un élément xs:schema qui définit le schéma :



...

Dans le schéma ci-dessus, nous utilisons des 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 un élément « shiporder ». Cet élément a un attribut et contient d'autres éléments, nous le traitons donc comme un type complexe. Les éléments enfants d'un élément « shiporder » sont entourés d'un élément xs: séquence qui définit une séquence ordonnée de sous-éléments :




...


Ensuite, nous devons 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éfixé par un préfixe d'espace de noms associé au schéma XML, qui spécifie un type de données de schéma prédéfini :










À l'aide de 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 au sein d'un é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 avons défini cela 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 instructions d'attribut doivent toujours venir en dernier :

Voici une liste complète du 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.

Voici le nouveau design du fichier schématique ("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 y faisant référence via l'attribut type de l'élément.

Voici la troisième conception du fichier schématique ("shiporder.xsd") :

































L'élément de contrainte indique que le type de données a été dérivé de l'espace de noms du type de données W3C XML Schema. Ainsi, l'extrait 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, elle doit contenir exactement six caractères par chaîne et ces caractères doivent être un nombre compris entre 0 et 9.

Annotation: Schémas de données XML (XSD). Créez un schéma XSD dans Visual Studio .NET. Créez un DataSet typé. Obtenir des informations sur la structure de l'objet DataSet. Chargement de documents XML et de schémas XSD dans des DataSets typés et réguliers. Méthodes ReadXml et ReadXmlSchema. Enregistrement du contenu et de la structure d'un DataSet typé et régulier. Méthodes WriteXml et WriteXmlSchema

Objet DataSet typé. Lire et écrire des documents XML

Schémas de données XML (XSD)

Schémas de données 1 Traduction exacte du document de schéma XML -< Schéma de document XML>, nous continuerons cependant à utiliser le terme « schéma de données XML ». Les XSD (XML Schema Document, XSD) constituent une manière alternative de construire des règles pour les documents XML. Comparés aux DTD, les schémas sont plus puissants pour définir des structures de données complexes, fournissent un moyen plus clair de décrire la grammaire d'un langage et peuvent être facilement modernisés et étendus. Un schéma XSD peut contenir les informations suivantes :

  • représentation des relations entre les éléments de données, similaires aux relations de clé étrangère entre les tables dans une base de données relationnelle ;
  • représentation d'identifiants uniques similaires à une clé primaire ;
  • spécification du type données pour chaque élément et attribut individuel dans un document XML.

Pour créer un schéma de données dans Visual Studio .NET, dans le menu principal, accédez à Fichier \ Nouveau \ Fichier et sélectionnez Schéma XML dans la liste des modèles (voir Figure 11.3). Une fenêtre apparaît avec l'inscription « Pour commencer, faites glisser les objets de la fenêtre de l'Explorateur de serveur ou de la Boîte à outils vers l'espace de travail (zone de conception) ou faites un clic droit » (Fig. 11.1) :


Riz. 11.1.

Le fait est que nous sommes en mode conception. Passez en mode code en cliquant sur le bouton (XML) :

La première ligne indique désormais familièrement que le schéma est un document XML avec xs:schema comme élément racine. Le préfixe xs : préfixe tous les éléments du schéma pour indiquer son espace de noms. La deuxième ligne contient une description longue, détaillée et souvent totalement inutile du schéma (à comparer avec un code similaire pour les pages HTML). Pour un fonctionnement correct, il suffit de se limiter à la représentation suivante :

Cependant, les moteurs de rendu intégrés au studio s'attendent à ce que cet « en-tête » existe, il ne doit donc pas être supprimé. Créer un schéma décrivant un document XML donné dans Visual Studio .NET est une tâche assez simple. Créons le document XMLEasy.xml suivant :

1

Nous passons à l'onglet (Données) et ne voyons qu'un seul enregistrement (Fig. 11.2).


Riz. 11.2.

Vous pouvez créer un schéma qui décrit ce document de plusieurs manières : dans le menu principal, sélectionnez l'élément « XML \ Créer un schéma » (Fig. 11.3, A), en mode XML, sélectionnez le même élément dans le menu contextuel (Fig. 11.3, B), en mode XML, sélectionnez le même élément dans le menu contextuel (Fig. 11.3, B), dans Données, sélectionnez cet élément dans le menu contextuel (Fig. 11.3, C), et enfin, en mode Données, cliquez sur le bouton de la barre d'outils XML (Fig. 11.3, D).


Riz. 11.3.

Dans tous les cas, le plan du document apparaît sous la forme d'un tableau (Fig. 11.4). Quittons le mode Schéma pour l'instant et passons en mode (XML).


Riz. 11.4.

L'environnement a généré du code XML décrivant la structure du document :

Cela inclut également la description nécessaire pour manipuler davantage le schéma à l'aide d'objets ADO .NET. Dans le document source XMLEasy.xml, un lien vers le schéma de données est apparu :

Le document XMLEasy.xsd a été automatiquement créé dans le même répertoire où se trouve XMLEasy.xml.

Afin d'apprendre à comprendre les schémas XSD, vous devez d'abord travailler avec la description des données sous leur forme pure, sans éléments supplémentaires. Le tableau 11.1 présente plusieurs documents XML simples et leurs schémas, générés sans liaison avec les objets ADO .NET.

Tableau 11.1. Exemples de création de schémas XSD
Contenu du document XML Contenu du schéma XSD

1

Description
Dans un document XMLEasy.xml, l'élément TOUR est l'élément racine contenant l'élément enfant IDTOUR. Le schéma général de l’élément racine est le suivant :

: Contenu de l'élément...

Les éléments enfants sont décrits comme ceci :

Contenu du document XML Contenu du schéma XSD

1 Chypre 25 000,00 RUB Le prix de deux bons adultes comprend le prix d'un enfant (jusqu'à 7 ans) 2 Grèce 32 000,00 RUB Des réductions spéciales s'appliquent en août et septembre 3 Thaïlande 30 000,00 RUB Sans compter le billet d'avion 4 Italie 26 000,00 RUB Le petit-déjeuner à l'hôtel est inclus dans le prix de la visite 5 France 27 000,00 RUB Les excursions supplémentaires ne sont pas incluses dans le prix du voyage

Description
L'élément racine TABLE contient un élément TOUR, lui-même constitué d'un groupe d'éléments enfants. L'élément Choice contrôle la sélection d'autres éléments, la valeur « illimitée » de l'attribut maxOccurs indiquant que les groupes TOUR peuvent être illimités.

: :

Contenu du document XML Contenu du schéma XSD

1 Chypre 25 000,00 RUB 1 Le prix de deux bons adultes comprend le prix d'un enfant (jusqu'à 7 ans)


Riz. 11.5.
Description
Le type de données de l'élément IDTOUR a été défini sur int , le type de données de l'élément CLOSED a été défini sur boolean et le reste a été défini sur le type de données chaîne par défaut. Vous pouvez modifier le type de données directement en mode schéma de données XML, mais il est plus pratique d'utiliser le mode Schéma (dans ce cas le mode s'appellera DataSet) sélectionnez le type de données dans la liste déroulante (Fig. 11.5) :

Dans le logiciel du cours vous trouverez tous les fichiers de cette table dans le dossier XSD (Code\Glava5\XSD).

Définir un type de données dans un document XML (le tableau 11.1 est le dernier exemple) est un moyen de limiter le contenu. Des attributs supplémentaires sont utilisés pour contraindre la valeur d'un type donné. Dans le fragment de schéma suivant, la valeur de l'élément PRICE doit être comprise entre 50 et 100 :

Pour limiter un document XML à certaines valeurs fixes, utilisez la construction suivante :

Ici, l'élément NAME ne peut prendre qu'une seule valeur fixe sur cinq noms de pays.

Développer un schéma XSD demande beaucoup de travail. Les outils visuels de Visual Studio .NET facilitent grandement cette tâche. Pour maîtriser les concepts de base, il est conseillé d'apprendre plusieurs schémas de documents XML générés automatiquement. Les tableaux 11.2 à 11.4 fournissent une description des principaux éléments et attributs pouvant être rencontrés.

Tableau 11.2. Éléments du schéma XSD
Élément Description
tous Les éléments imbriqués peuvent être définis dans n'importe quel ordre
annotation Élément parent des éléments de commentaire Et
n'importe lequel Tous les éléments imbriqués
anyAttribute Tous les attributs
Informations sur l'application Élément de commentaire. Spécifie le titre du schéma
attribut Attribut
grouped'attributs Groupe d'attributs
choix Sélection d'autres éléments. Analogue de l'opérateur "|" en DTD
contenu complexe Restrictions ou extensions de modèle type de contenu complexe
Type complexe Élément complexe
Documentation Élément de commentaire. Fournit des informations sur le schéma
élément Élément
extension Extensions d'éléments
champ Déclaration de champ. S'applique à l'intérieur d'un élément pour définir des champs
groupe Groupe d'éléments
importer Importer une déclaration de type depuis un autre schéma
inclure Inclure un schéma différent dans un espace de noms existant
clé Spécification d'un élément ou d'un attribut avec une clé pointant vers un autre élément
référence clé Spécifier l'élément ou l'attribut vers lequel pointe la clé
liste Un élément pouvant contenir une liste de valeurs
redéfinir Remplacer les éléments déjà déclarés
restriction Contrainte d'élément
schéma Élément racine du schéma
sélecteur Sélecteur de sélection d'éléments XML
séquence Séquence d'autres éléments. Analogue de l'opérateur "," dans DTD
contenu simple Un modèle dont le contenu représente uniquement des données de caractères
Type simple Élément simple
syndicat Un élément ou un attribut qui peut avoir plusieurs significations
unique Un élément ou un attribut qui doit avoir une valeur unique
Tableau 11.3. Attributs – Limites du schéma XSD
Attribut Description
énumération Liste de valeurs
longueur Longueur
longueur maximale Longueur maximale
Longueur minimale Longueur minimale
maxExclusif Valeur maximum
maxInclus Valeur maximale incluse
minExclusif Valeur minimum
minInclusif Valeur minimale incluse
fractionChiffres Nombre de décimales dans les nombres fractionnaires
totalChiffres Nombre de chiffres
modèle Échantillon (modèle) du contenu de l'élément
défaut Valeur d'élément ou d'attribut par défaut
elementFormDefault Définition des propriétés d'un élément local comme définies globalement
fixé Élément fixe ou valeur d'attribut
formulaire Les membres déclarés localement sont définis dans des instances de document spécifiques
type d'élément Type d'élément de liste
Types de membres Type de membres utilisés dans le syndicat
maxOccurs Nombre maximum d'occurrences d'un élément
minSe produit Nombre minimum d'occurrences d'un élément
mixte Spécification d'un élément qui a un type mixte
nom Nom de l'élément ou de l'attribut
espace de noms Espace de noms
aucun espace de noms Préciser l'emplacement du document schématique,
Emplacement du schéma n'ayant aucun espace de noms résultant
nul Déterminer qu'un élément peut avoir une valeur NULL vide (nil)
réf Définition d'une référence à un élément défini globalement
schémaEmplacement Localisation du circuit
groupe de substitution Définir le remplacement d'éléments par d'autres éléments
espace de noms cible Espace de noms du schéma résultant
taper Type d'élément
utiliser L'élément est-il obligatoire ou non ?
valeur Valeur de l'élément schématique
xsi : nul Définition du contenu réel d'un élément vide (NULL) dans un document XML
xsi:emplacement du schéma L'emplacement réel de l'élément dans le document XML
xsi:type Le type réel de l'élément dans le document XML

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 d'y remédier.

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, des sections contenant des informations.

Il s'avère que le schéma XSD est description de la structure de votre rapport, exécuté dans l'un des langages de programmation. Si des informations incorrectes sont saisies dans le rapport, elles seront tout 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 signifie que les informations que vous avez saisies ne peuvent pas être lues dans le langage de programmation, le programme les reconnaît donc comme incorrectes.

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

Cependant, ce n'est pas la seule raison pour laquelle le fichier n'est pas conforme au schéma XSD. Cette erreur peut également se produire si une version obsolète du programme dans lequel vous effectuez la déclaration est installée sur votre appareil, ainsi que si l'administration fiscale elle-même n'a pas installé de mise à jour du programme.

Afin de résoudre l'erreur dans le schéma XSD, vous devrez vérifiez que toutes les données sont correctes, que vous avez saisi, et vérifiez également s'il y a eu une mise à jour pour le programme dans lequel vous travaillez. Cependant, avant de vérifier le fichier, examinez attentivement le texte de l'erreur qu'il vous renvoie.

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 de l'erreur elle-même n'est pas indiquée, 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, le fichier génère à nouveau une erreur, vous devez alors cherchez le problème là-bas. 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 points précédents ne vous ont pas aidé à identifier le problème, alors vérifiez si vous avez rempli tous les champs obligatoires, si vous avez saisi correctement toutes les données, car beaucoup d'entre eux doivent être renseignés 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 parvenez pas à la corriger, vous devez absolument contacter le support technique le programme avec lequel vous réalisez le rapport ou à ses développeurs.

Afin de résoudre 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 certaines 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.

Ainsi, si vous essayez d'envoyer un rapport à l'administration fiscale, mais que le fichier renvoie une erreur indiquant qu'il n'est pas conforme 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 ne paniquez pas, 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, alors le bureau des impôts n'a pas le droit d'infliger une amende vous pour 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 l'avez-vous installé sur votre appareil ? ancienne version du programme, 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 la dernière mise à jour, elle se trouve généralement sur le site Web du programme que vous utilisez. La deuxième raison peut être que vous avez mal rempli certaines données ou que vous n'avez rempli aucun champ du tout.

Dans ce cas, vous devez vérifier votre fichier, mais vous devez vous rappeler que le programme peut même le considérer comme une erreur. espace étrange. Si vous ne trouvez pas la cause de l'erreur, vous pouvez contacter le support technique du programme, où des spécialistes vous aideront certainement à résoudre votre problème.

XDTO est un mécanisme 1C nécessaire lors de la création et de l'utilisation de services Web dans 1C.

Les packages XDTO 1C vous permettent de décrire la structure du fichier XML requis pour la conversion de données vers et depuis XML.

Pour ceux que cela intéresse, regardons la question plus en détail.

Les fichiers XML sont transmis sur Internet et peuvent être lus par de nombreux programmes.

Ils sont perçus - cela signifie que cela est intégré dans leur code - si vous rencontrez un certain nom d'élément dans le fichier XML - percevez-le comme ceci et faites ceci.

Par conséquent, si nous utilisons le nom d'élément Apple, il y a de fortes chances qu'un autre programme « pense » qu'il s'agit de l'Apple qu'il connaît, mais nous parlions de quelque chose qui nous est propre.

Pour éviter que cela ne se produise et pour indiquer clairement que notre Apple est différente de toutes les autres, le nom de l'espace de noms peut être spécifié dans le fichier - un préfixe utilisé avant le nom des éléments.

L'espace de noms (en anglais namespace) est défini comme ceci - xmlns:SpaceName = « URL », par exemple :
xmlns:store = "http://store.ru"

Pourquoi avez-vous besoin d'une URL ?

Par conséquent, un identifiant unique est spécifié, qui identifie également l'auteur de l'espace de noms.

Naturellement, on suppose que la personne qui a indiqué l'espace de noms est une personne extrêmement honnête et a indiqué son site et n'utilise pas plusieurs espaces de noms différents avec un seul site.

À propos, ils indiquent généralement non seulement l'URL du site, mais également l'URL d'un dossier spécifique sur le site, de sorte que si quelque chose se produit, vous pouvez créer un autre espace de noms dans un autre dossier sur le site pour une utilisation dans une situation différente.

Un objet est une structure de données spécifique, autonome, contenant toutes ses données.

Puisque les données structurées sont décrites en XML, c'est-à-dire sous la forme d'une structure qui possède ses propres propriétés, etc., elles peuvent être considérées comme des objets.

Dans l'exemple donné, il pourrait s'agir d'un objet LIST avec une propriété et un élément imbriqué.

DOM est une manière de traiter un fichier XML non pas comme du texte dans un format spécifique, mais comme une collection d'objets avec des propriétés, des champs, etc.

Description du fichier XML

Si nous utilisons constamment un fichier d'une certaine structure pour échanger entre deux programmes, nous voudrions probablement :

  • Faire utiliser certains noms
  • Avoir les éléments que nous attendons (qui "doivent être là pour être utilisés dans notre échange")
  • Pour que les attributs contiennent les types que l'on attend (chaîne, nombre, etc.).

Les normes de format de fichier suivantes existent pour décrire la structure XML (qui sont également stockées dans un fichier texte brut) :

  • Extension DTD – Définition du type de document
  • Extension XSD – XML Shema.

Les deux formats décrivent à quoi devrait ressembler le document. La procédure permettant de vérifier si XML est conforme à la norme décrite dans un tel fichier est appelée vérification.

XDTO 1C est un outil qui permet d'ajouter une description d'un fichier XML à la configuration. Ou plutôt, ce n'est pas le fichier qui est décrit, mais des structures XML spécifiques.

Pour indiquer les types pouvant être utilisés, une liste ou une bibliothèque de types est utilisée, appelée usine XDTO 1C.

Cette usine spécifie à la fois des types simples (chaîne, nombre, date), qui sont couramment utilisés dans d'autres langages, programmes, etc., mais aussi des types 1C, qui sont utilisés dans 1C et dans une configuration spécifique.

L'usine XDTO 1C elle-même se compose de plusieurs packages. Les types de base sont décrits dans un package appelé www.w3.org

Les types de données de configuration actuels sont décrits dans le package http://v8.1c.ru/8.1/data/enterprise/current-config

Les types eux-mêmes sont nommés selon le nom dans le configurateur avec l'ajout d'un formulaire en anglais (CatalogRef, CatalogObject, DocumentRef, DocumentObject), par exemple :

CatalogObject.Nomenclature

Ajout du package XDTO 1C

Tout cela a certainement l’air cool. Et nous n'avons pas encore abordé le sujet du XSLT - un moyen de transformer des fichiers XML en autre chose, comme du HTML. Le sujet du XML est extrêmement vaste et difficile à aborder, même dans un livre séparé.

Notre tâche est de comprendre que XDTO 1C nous permet de décrire les éléments que doit contenir un package XML qui doit être généré ou lu.

Les packages XDTO 1C se trouvent dans la configuration dans la branche Général/Packages XDTO 1C.

Vous pouvez ajouter le package XDTO à 1C manuellement (cool !), mais il est préférable d'obtenir le fichier XSD correspondant avec une description toute faite du schéma.

Une description du schéma XSD pour les objets de n'importe quelle configuration peut être obtenue en cliquant sur la branche Général/XDTO 1C Packages et en sélectionnant l'élément de menu Exporter le schéma de configuration XML.

Le fichier est du texte, vous pouvez le modifier dans le Bloc-notes Windows, en supprimant les objets inutiles dont vous n'avez pas besoin.

Vous pouvez ajouter un schéma XSD prêt à l'emploi à 1C en cliquant avec le bouton droit sur la branche Packages Général/XDTO 1C et en sélectionnant l'élément de menu Importer un schéma XML.

Utilisation du mécanisme XDTO 1C

Travailler avec XDTO 1C signifie convertir des valeurs vers et depuis XML.

Le travail est réalisé à l'aide d'objets langage 1C Lecture XML/Ecriture XML.

Lorsque vous travaillez avec le mécanisme XDTO 1C, vous devez indiquer le package avec lequel vous travaillez. Il peut s'agir d'un package standard (discuté ci-dessus, voir XDTO) ou d'un package ajouté à la configuration. Le package est identifié par l'URL spécifiée dans le package.

Les deux principales façons simples de travailler sont :

  • Sérialisation - conversion automatique des valeurs de 1C vers XML et vice versa
  • Créer un objet, remplir ses champs, écrire en XML (et, par conséquent, lire à partir de XML puis lire ses champs).

Exemple de sérialisation de valeur :
Serializer = Nouveau SerializerXDTO (FactoryXDTO);
Fichier XML = Nouvelle entrée XML ();
FileXML.OpenFile("NomFichier");
Serializer.WriteXML (XMLFile, Value1C);

Exemple de lecture/écriture d'un objet :

DirectoryObjectXDTO = FactoryXDTO.Create(FactoryXDTO.Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Warehouses"));
FillPropertyValues(DirectoryObjectXDTO, DirectoryLink1C);

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 au manque de compréhension du processus, et seulement à quelques articles expliquant l'essence. Les gens ont posé des questions, ont eu du mal à trouver une solution, mais après avoir succombé à la tâche, ils ont tout simplement disparu sans décrire le mécanisme. Cela a incité à créer une description simple du processus.
P.S. Ne jurez pas trop, mon objectif n'était pas de créer une sorte d'article scientifique utilisant strictement la bonne terminologie, 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 d'emblée 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 plutôt de nature pédagogique (copier le document d'exportation précédent sur le site FCS et télécharger uniquement la partie tabulaire des Marchandises à partir du fichier Excel semblait être une solution plus efficace), et le manque de temps n'a pas fonctionné permettez-moi de terminer la création de l'ensemble de la structure, basée uniquement sur le perfectionnisme.

Ainsi, après vous être inscrit sur le site Web du Service fédéral des douanes, il est devenu clair que pour créer des documents de déclaration statistique sur les exportations, 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 pour télécharger.

Il existe deux options de téléchargement.

Premièrement : charger la partie tabulaire avec les produits à partir d'un fichier Excel (cette option a été choisie comme option de travail, car elle présentait l'avantage de ne pas avoir à se soucier du traitement de « l'en-tête » du document, mais de simplement copier le précédent, en le changeant dans le « Header » « ce qui était requis).

Deuxièmement : créer un fichier XML selon le schéma téléchargé sur le site FCS sous la forme d'un « Album de formats de formulaires de documents électroniques ». L'album contient un assez grand nombre de schémas XSD. Ils ont trouvé un schéma du « Formulaire statistique de comptabilisation du mouvement des marchandises » et des fichiers supplémentaires avec des descriptions des types correspondants. Les schémas sont joints à l'article dans l'archive avec traitement.

Pour afficher les schémas XSD, nous avons utilisé le logiciel gratuit Microsoft XML Notepad 2007.

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

D'après le diagramme, il est clair 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 types présentes directement dans la branche, placées dans une branche distincte, ou même situées dans un autre fichier.

Cette structure a un type StaticFormType, qui à son tour consiste en un type de base BaseDocType, un ensemble d'objets de différents types et attributs de texte.

Le type de base BaseDocStyle est défini dans un fichier (et un espace de noms) différent
.

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

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

1. XDTO Factory est en cours de création

OurFactoryXDTO = CreateFactoryXDTO (ArrayFullFileNamesWithXSDSchemas);

2. Dans l'usine XDTO, tous les types de données complexes sont créés, que nous remplirons ensuite dans le fichier XML créé :

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("Consignee").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 ont été créés, nous créons une structure de fichiers XML basée sur eux, composée d'objets XDTO Factory :

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

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

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

Fichier XML = Nouvelle entrée XML (); FileXML.OpenFile(FileName); FileXML.WriteXMLDeclaration(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Close();

P.S. L'archive contient un fichier modèle de téléchargement au format XML (seuls certains détails sont créés, reflétant tous les cas où le fichier est rempli) et des schémas XSD.

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

XML y sera créé.



Avez-vous aimé l'article? Partagez-le