1c xml με βάση το παράδειγμα σχήματος xsd. Μια σύντομη περιγραφή της δημιουργίας ενός αρχείου XML χρησιμοποιώντας το σχήμα XSD χρησιμοποιώντας το παράδειγμα δημιουργίας μεταφόρτωσης στατιστικών αναφορών για την Ομοσπονδιακή Τελωνειακή Υπηρεσία. Προσθήκη πακέτου XDTO

Σχόλιο: Σχήματα δεδομένων XML (XSD). Δημιουργία σχήματος XSD στο Visual Studio .NET. Δημιουργία πληκτρολογημένου αντικειμένου DataSet. Λήψη πληροφοριών σχετικά με τη δομή ενός αντικειμένου DataSet. Φόρτωση εγγράφων XML και σχημάτων XSD σε πληκτρολογημένα και κανονικά αντικείμενα DataSet. Μέθοδοι ReadXml και ReadXmlSchema. Καταγραφή του περιεχομένου και της δομής ενός πληκτρολογημένου και κανονικού αντικειμένου DataSet. Μέθοδοι WriteXml και WriteXmlSchema

Πληκτρολογήθηκε αντικείμενο DataSet. Ανάγνωση και εγγραφή εγγράφων XML

Σχήματα δεδομένων XML (XSD)

Σχήματα δεδομένων 1 Ακριβής μετάφραση του εγγράφου σχήματος XML -< Σχήμα εγγράφου XML>, ωστόσο θα συνεχίσουμε να χρησιμοποιούμε τον όρο "σχήμα δεδομένων XML".Το XSD (XML Schema Document, XSD) είναι ένας εναλλακτικός τρόπος κατασκευής κανόνων για έγγραφα XML. Σε σύγκριση με τα DTD, τα σχήματα είναι πιο ισχυρά για τον ορισμό πολύπλοκων δομών δεδομένων, παρέχουν έναν σαφέστερο τρόπο περιγραφής της γραμματικής μιας γλώσσας και μπορούν εύκολα να εκσυγχρονιστούν και να επεκταθούν. Ένα σχήμα XSD μπορεί να περιέχει τις ακόλουθες πληροφορίες:

  • αναπαράσταση σχέσεων μεταξύ στοιχείων δεδομένων, παρόμοια με τις σχέσεις ξένου κλειδιού μεταξύ πινάκων σε μια σχεσιακή βάση δεδομένων.
  • αναπαράσταση μοναδικών αναγνωριστικών παρόμοιων με ένα πρωτεύον κλειδί.
  • προδιαγραφή τύπουδεδομένα για κάθε μεμονωμένο στοιχείο και χαρακτηριστικό σε ένα έγγραφο XML.

Για να δημιουργήσετε ένα σχήμα δεδομένων στο Visual Studio .NET, μεταβείτε στο File\New\File στο κύριο μενού και επιλέξτε XML Schema από τη λίστα των προτύπων (βλ. Εικ. 11.3). Εμφανίζεται ένα παράθυρο που λέει "Για να ξεκινήσετε, σύρετε αντικείμενα από το παράθυρο Εξερεύνηση διακομιστή ή Εργαλειοθήκη στον χώρο εργασίας (περιοχή σχεδίασης) ή κάντε δεξί κλικ" (Εικόνα 11.1):


Ρύζι. 11.1.

Το θέμα είναι ότι είμαστε σε λειτουργία σχεδίασης. Μεταβείτε στη λειτουργία κώδικα κάνοντας κλικ στο κουμπί (XML):

Η πρώτη γραμμή είναι η γνωστή ένδειξη ότι το σχήμα είναι ένα έγγραφο XML με ριζικό στοιχείο xs:schema . Το πρόθεμα xs: δίνει πρόθεμα σε όλα τα στοιχεία του σχήματος για να υποδείξει τον χώρο ονομάτων του. Η δεύτερη γραμμή περιέχει μια μεγάλη, λεπτομερή και συχνά εντελώς περιττή περιγραφή του σχήματος (συγκρίνετε με παρόμοιο κώδικα για σελίδες HTML). Για σωστή λειτουργία, αρκεί να περιοριστούμε στην ακόλουθη αναπαράσταση:

Ωστόσο, τα ενσωματωμένα εργαλεία οπτικοποίησης του στούντιο υποθέτουν την παρουσία αυτής της "κεφαλίδας", επομένως δεν πρέπει να αφαιρεθεί. Η δημιουργία ενός σχήματος που περιγράφει ένα δεδομένο έγγραφο XML στο Visual Studio .NET είναι μια αρκετά απλή εργασία. Ας δημιουργήσουμε το ακόλουθο έγγραφο XMLEasy.xml:

1

Μεταβαίνουμε στην καρτέλα (Δεδομένα) και βλέπουμε μόνο μία καταχώρηση (Εικ. 11.2).


Ρύζι. 11.2.

Μπορείτε να δημιουργήσετε ένα σχήμα που περιγράφει αυτό το έγγραφο με διάφορους τρόπους: στο κύριο μενού, επιλέξτε το στοιχείο "XML \ Δημιουργία σχήματος" (Εικ. 11.3, A), σε λειτουργία XML, επιλέξτε το ίδιο στοιχείο στο μενού περιβάλλοντος (Εικ. 11.3, B), σε λειτουργία XML, επιλέξτε το ίδιο στοιχείο στο μενού περιβάλλοντος (Εικ. 11.3, B), στα Δεδομένα, επιλέξτε αυτό το στοιχείο στο μενού περιβάλλοντος (Εικ. 11.3, C) και τέλος, στη λειτουργία δεδομένων, κάντε κλικ στο κουμπί της γραμμής εργαλείων XML (Εικ. 11.3, Δ).


Ρύζι. 11.3.

Σε κάθε περίπτωση, το περίγραμμα του εγγράφου εμφανίζεται με τη μορφή πίνακα (Εικ. 11.4). Ας αφήσουμε τη λειτουργία Schema προς το παρόν και ας μεταβούμε στη λειτουργία (XML).


Ρύζι. 11.4.

Το περιβάλλον παρήγαγε κώδικα XML που περιγράφει τη δομή του εγγράφου:

Αυτό περιλαμβάνει επίσης την περιγραφή που απαιτείται για τον περαιτέρω χειρισμό του σχήματος χρησιμοποιώντας αντικείμενα ADO .NET. Στο έγγραφο προέλευσης XMLEasy.xml, εμφανίστηκε ένας σύνδεσμος προς το σχήμα δεδομένων:

Το έγγραφο XMLEasy.xsd δημιουργήθηκε αυτόματα στον ίδιο κατάλογο όπου βρίσκεται το XMLEasy.xml.

Για να μάθετε να κατανοείτε τα σχήματα XSD, θα πρέπει πρώτα να εργαστείτε με την περιγραφή των δεδομένων στην καθαρή της μορφή, χωρίς πρόσθετα στοιχεία. Ο Πίνακας 11.1 δείχνει πολλά απλά έγγραφα XML και τα σχήματά τους, που δημιουργούνται χωρίς δέσμευση σε αντικείμενα ADO .NET.

Πίνακας 11.1. Παραδείγματα δημιουργίας σχημάτων XSD
Περιεχόμενα του εγγράφου XML Περιεχόμενα σχήματος XSD

1

Περιγραφή
Σε ένα έγγραφο XMLEasy.xml, το στοιχείο TOUR είναι το ριζικό στοιχείο που περιέχει το θυγατρικό στοιχείο IDTOUR. Το γενικό σχήμα για το ριζικό στοιχείο έχει ως εξής:

: Περιεχόμενο στοιχείου...

Τα παιδικά στοιχεία περιγράφονται ως εξής:

Περιεχόμενα του εγγράφου XML Περιεχόμενα σχήματος XSD

1 Κύπρος 25.000,00 RUB Η τιμή των δύο κουπονιών ενηλίκων περιλαμβάνει την τιμή ενός παιδιού (έως 7 ετών) 2 Ελλάδα 32.000,00 RUB Ισχύουν ειδικές εκπτώσεις τον Αύγουστο και τον Σεπτέμβριο 3 Ταϊλάνδη 30.000,00 RUB Χωρίς να συμπεριλαμβάνονται τα αεροπορικά εισιτήρια 4 Ιταλία 26.000,00 RUB Το πρωινό στο ξενοδοχείο περιλαμβάνεται στην τιμή της ξενάγησης 5 Γαλλία 27.000,00 RUB Οι επιπλέον εκδρομές δεν περιλαμβάνονται στην τιμή της εκδρομής

Περιγραφή
Το ριζικό στοιχείο TABLE περιέχει ένα στοιχείο TOUR, το οποίο με τη σειρά του αποτελείται από μια ομάδα θυγατρικών στοιχείων. Το στοιχείο επιλογής ελέγχει την επιλογή άλλων στοιχείων, με την τιμή "χωρίς περιορισμό" του χαρακτηριστικού maxOccurs να υποδεικνύει ότι οι ομάδες TOUR μπορούν να είναι απεριόριστες.

: :

Περιεχόμενα του εγγράφου XML Περιεχόμενα σχήματος XSD

1 Κύπρος 25.000,00 RUB 1 Η τιμή των δύο κουπονιών ενηλίκων περιλαμβάνει την τιμή ενός παιδιού (έως 7 ετών)


Ρύζι. 11.5.
Περιγραφή
Ο τύπος δεδομένων του στοιχείου IDTOUR ορίστηκε σε int, ο τύπος δεδομένων του στοιχείου CLOSED ορίστηκε σε boolean και οι υπόλοιποι ορίστηκαν στον προεπιλεγμένο τύπο δεδομένων συμβολοσειράς. Μπορείτε να αλλάξετε τον τύπο δεδομένων απευθείας στη λειτουργία σχήματος δεδομένων XML, αλλά είναι πιο βολικό να χρησιμοποιήσετε τη λειτουργία σχήματος (σε αυτήν την περίπτωση η λειτουργία θα ονομάζεται DataSet) επιλέξτε τον τύπο δεδομένων από την αναπτυσσόμενη λίστα (Εικ. 11.5) :

Στο λογισμικό του μαθήματος θα βρείτε όλα τα αρχεία αυτού του πίνακα στον φάκελο XSD (Code\Glava5\XSD).

Η ρύθμιση ενός τύπου δεδομένων σε ένα έγγραφο XML (ο Πίνακας 11.1 είναι το πιο πρόσφατο παράδειγμα) είναι ένας τρόπος περιορισμού του περιεχομένου. Πρόσθετα χαρακτηριστικά χρησιμοποιούνται για τον περιορισμό της τιμής ενός δεδομένου τύπου. Στο ακόλουθο τμήμα σχήματος, η τιμή του στοιχείου PRICE πρέπει να είναι μεταξύ 50 και 100:

Για να περιορίσετε ένα έγγραφο XML σε ορισμένες σταθερές τιμές, χρησιμοποιήστε την ακόλουθη κατασκευή:

Εδώ το στοιχείο NAME μπορεί να λάβει μόνο μία σταθερή τιμή από πέντε ονόματα χωρών.

Η ανάπτυξη ενός σχήματος XSD είναι πολύ δουλειά. Τα οπτικά εργαλεία στο Visual Studio .NET κάνουν αυτήν την εργασία πολύ πιο εύκολη. Για να κατακτήσετε τις βασικές έννοιες, συνιστάται να μάθετε πολλά σχήματα εγγράφων XML που δημιουργούνται αυτόματα. Οι πίνακες 11.2-11.4 παρέχουν μια περιγραφή των κύριων στοιχείων και χαρακτηριστικών που μπορούν να συναντηθούν.

Πίνακας 11.2. Στοιχεία σχήματος XSD
Στοιχείο Περιγραφή
όλα Τα ένθετα στοιχεία μπορούν να οριστούν με οποιαδήποτε σειρά
σχόλιο Γονικό στοιχείο στοιχείων σχολίου Και
όποιος Τυχόν ένθετα στοιχεία
οποιοδήποτε Χαρακτηριστικό Οποιεσδήποτε ιδιότητες
appInfo Στοιχείο σχολίου. Καθορίζει τον τίτλο του σχήματος
Χαρακτηριστικό Χαρακτηριστικό
ομάδα χαρακτηριστικών Ομάδα χαρακτηριστικών
επιλογή Επιλογή άλλων στοιχείων. Ανάλογο του χειριστή "|" στο DTD
σύνθετο περιεχόμενο Περιορισμοί ή επεκτάσεις μοντέλουσύνθετο τύπο περιεχομένου
σύνθετος τύπος Πολύπλοκο στοιχείο
τεκμηρίωση Στοιχείο σχολίου. Παρέχει πληροφορίες σχετικά με το σχήμα
στοιχείο Στοιχείο
επέκταση Επεκτάσεις στοιχείων
πεδίο Δήλωση πεδίου. Εφαρμόζεται μέσα σε ένα στοιχείο για να ορίσετε πεδία
ομάδα Ομάδα στοιχείων
εισαγωγή Εισαγωγή δήλωσης τύπου από άλλο σχήμα
περιλαμβάνω Συμπερίληψη διαφορετικού σχήματος σε έναν υπάρχοντα χώρο ονομάτων
κλειδί Καθορισμός στοιχείου ή χαρακτηριστικού με ένα κλειδί που δείχνει σε άλλο στοιχείο
μπρελόκ Καθορισμός του στοιχείου ή του χαρακτηριστικού στο οποίο παραπέμπει το κλειδί
λίστα Ένα στοιχείο που μπορεί να περιέχει μια λίστα τιμών
επαναπροσδιορίσει Παράκαμψη στοιχείων που έχουν ήδη δηλωθεί
περιορισμός Περιορισμός στοιχείων
σχήμα Στοιχείο ρίζας σχήματος
εκλέκτορας Επιλογέας για την επιλογή στοιχείων XML
αλληλουχία Ακολουθία άλλων στοιχείων. Ανάλογο του τελεστή "," στο DTD
απλόΠεριεχόμενο Ένα μοντέλο του οποίου τα περιεχόμενα αντιπροσωπεύουν μόνο δεδομένα χαρακτήρων
απλόΤύπος Απλό στοιχείο
ένωση Ένα στοιχείο ή χαρακτηριστικό που μπορεί να έχει πολλαπλές σημασίες
μοναδικός Ένα στοιχείο ή χαρακτηριστικό που πρέπει να έχει μοναδική τιμή
Πίνακας 11.3. Χαρακτηριστικά - Περιορισμοί σχήματος XSD
Χαρακτηριστικό Περιγραφή
απαρίθμηση Κατάλογος τιμών
μήκος Μήκος
μέγιστο μήκος Μέγιστο μήκος
λεπτοΜήκος Ελάχιστο μήκος
maxExclusive Μέγιστη αξία
maxInclusive Συμπεριλαμβάνεται η μέγιστη αξία
minΑποκλειστικό Ελάχιστη τιμή
minInclusive Συμπεριλαμβανομένης της ελάχιστης αξίας
fractionDigits Αριθμός δεκαδικών ψηφίων σε κλασματικούς αριθμούς
totalDigits Αριθμός ψηφίων
πρότυπο Δείγμα (μοτίβο) περιεχομένων στοιχείων
Προκαθορισμένο Προεπιλεγμένη τιμή στοιχείου ή χαρακτηριστικού
elementFormDefault Ρύθμιση ιδιοτήτων ενός τοπικού στοιχείου όπως καθολικά ορίζεται
σταθερός Σταθερό στοιχείο ή τιμή χαρακτηριστικού
μορφή Τα τοπικά δηλωμένα στοιχεία ορίζονται σε συγκεκριμένες περιπτώσεις εγγράφων
Τύπος αντικειμένου Τύπος στοιχείου λίστας
Τύποι μέλους Τύπος μελών που χρησιμοποιούνται στο σωματείο
maxOccurs Μέγιστος αριθμός εμφανίσεων ενός στοιχείου
minΣυμβαίνει Ελάχιστος αριθμός εμφανίσεων ενός στοιχείου
μικτός Καθορισμός στοιχείου που έχει μικτό τύπο
όνομα Όνομα στοιχείου ή χαρακτηριστικού
χώρο ονομάτων Χώρος ονομάτων
χωρίς χώρο ονομάτων Καθορίζοντας τη θέση του σχηματικού εγγράφου,
SchemaLocation χωρίς προκύπτοντες χώρους ονομάτων
μηδενικός Προσδιορισμός ότι ένα στοιχείο μπορεί να έχει μια κενή τιμή NULL (μηδέν)
αναφ Ορισμός αναφοράς σε ένα καθολικά καθορισμένο στοιχείο
schemaLocation Εντοπισμός του κυκλώματος
SubstitutionGroup Καθορισμός αντικατάστασης στοιχείων με άλλα στοιχεία
targetNamespace Χώρος ονομάτων σχήματος που προκύπτει
τύπος Τύπος αντικειμένου
χρήση Είτε το στοιχείο απαιτείται είτε όχι
αξία Σχηματική τιμή στοιχείου
xsi: μηδέν Ρύθμιση του πραγματικού περιεχομένου ενός στοιχείου null (NULL) σε ένα έγγραφο XML
xsi:schemaLocation Η πραγματική θέση του στοιχείου στο έγγραφο XML
xsi:type Ο πραγματικός τύπος του στοιχείου στο έγγραφο XML

Εμφανίστηκε η εργασία δημιουργίας ενός αρχείου XML με βάση ένα σχήμα XSD. Η αναζήτηση στα φόρουμ οδήγησε σε μεγάλο αριθμό συζητήσεων σχετικά με μια παρανόηση της διαδικασίας, και μόνο μερικά άρθρα που εξηγούσαν την ουσία. Οι άνθρωποι έκαναν ερωτήσεις, πάλεψαν με τη λύση, αλλά αφού το πρόβλημα ενέδωσαν σε αυτούς, απλώς εξαφανίστηκαν χωρίς να περιγράψουν τον μηχανισμό. Αυτό οδήγησε στη δημιουργία μιας απλής περιγραφής της διαδικασίας.
ΥΣΤΕΡΟΓΡΑΦΟ. Μην ορκίζεστε πολύ, στόχος μου δεν ήταν να δημιουργήσω κάποιο είδος επιστημονικού άρθρου χρησιμοποιώντας αυστηρά τη σωστή ορολογία, αλλά απλώς να βοηθήσω να κάνουμε το πρώτο βήμα προς την κατανόηση του πολύ ισχυρού μηχανισμού ανταλλαγής μέσω XML.
Π.Π.Σ. Πρέπει να κάνω αμέσως επιφύλαξη ότι το αρχείο μεταφόρτωσης που επισυνάπτεται στο άρθρο είναι μόνο ένα πρότυπο που δημιουργεί μόνο μέρος της απαιτούμενης δομής αρχείου XML, επειδή Η δουλειά μου με αυτήν τη λήψη ήταν μάλλον εκπαιδευτική (η αντιγραφή του προηγούμενου εγγράφου εξαγωγής στον ιστότοπο της FCS και η λήψη μόνο του πίνακα του τμήματος των Προϊόντων από ένα αρχείο Excel φαινόταν πιο αποτελεσματική λύση) και η έλλειψη χρόνου δεν το επέτρεψε να ολοκληρώσω τη δημιουργία ολόκληρης της δομής, βασισμένη μόνο σε εκτιμήσεις τελειομανίας.

Έτσι, έχοντας εγγραφεί στον ιστότοπο της FCS, κατέστη σαφές ότι για τη δημιουργία εγγράφων στατιστικής αναφοράς για τις εξαγωγές, είναι απαραίτητο να πραγματοποιήσετε λήψη δεδομένων από τα έγγραφα διαχείρισης εμπορίου πωλήσεων αγαθών και υπηρεσιών και να δημιουργήσετε ένα αρχείο για λήψη.

Υπάρχουν δύο πιθανές επιλογές λήψης.

Πρώτον: φόρτωση του τμήματος πίνακα με Προϊόντα από αρχείο Excel (αυτή η επιλογή επιλέχθηκε ως επιλογή εργασίας, επειδή είχε τα πλεονεκτήματα ότι δεν χρειαζόταν να ασχοληθείτε με την επεξεργασία της "Κεφαλίδας" του εγγράφου, αλλά μπορούσατε απλώς να αντιγράψετε το προηγούμενο, αλλάζοντας το στην "Κεφαλίδα" "τι απαιτούνταν).

Δεύτερον: δημιουργία ενός αρχείου XML σύμφωνα με το σχήμα που λήφθηκε από τον ιστότοπο της FCS με τη μορφή «Λευκώματος μορφών για ηλεκτρονικές φόρμες εγγράφων». Το άλμπουμ περιέχει έναν αρκετά μεγάλο αριθμό σχημάτων XSD. Βρήκαν ένα διάγραμμα του «Στατιστικό Έντυπο Λογιστικής για την Κίνηση Εμπορευμάτων» και επιπλέον αρχεία με περιγραφές των τύπων για αυτό. Τα διαγράμματα επισυνάπτονται στο άρθρο στο αρχείο με επεξεργασία.

Για να προβάλουμε σχήματα XSD, χρησιμοποιήσαμε το δωρεάν Microsoft XML Notepad 2007.

Η εικόνα δείχνει το κύριο αρχείο με το σχήμα XSD "Στατιστική φόρμα για τη λογιστική για την κίνηση των αγαθών." Η εικόνα υπογραμμίζει τα κύρια μπλοκ του σχήματος XSD που πρέπει να το κατανοήσουμε.

Από το διάγραμμα είναι σαφές ότι πρέπει να λάβουμε ένα αρχείο XML γεμάτο με τη δομή που καθορίζεται στον κλάδο "xs:element" του τύπου StaticFormType.

Η δομή μπορεί να είναι αρκετά περίπλοκη (όπως στην περίπτωσή μας). Με περιγραφές τύπων που υπάρχουν απευθείας στον κλάδο, τοποθετημένες σε ξεχωριστό κλάδο ή ακόμη και σε άλλο αρχείο.

Αυτή η δομή έχει έναν τύπο StaticFormType, ο οποίος με τη σειρά του αποτελείται από έναν βασικό τύπο BaseDocType, ένα σύνολο αντικειμένων διαφορετικών τύπων και χαρακτηριστικών κειμένου.

Ο βασικός τύπος BaseDocStyle ορίζεται σε διαφορετικό αρχείο (και χώρο ονομάτων)
.

Αυτό το αρχείο περιέχει πολλούς τύπους που δεν χρησιμοποιούνται στην περίπτωσή μας.

Τώρα ας προχωρήσουμε στην εργασία σε 1C. Με λίγα λόγια, αυτό που πρέπει να κάνουμε καταλήγει στα εξής:

1. Το XDTO Factory δημιουργείται

OurFactoryXDTO = CreateFactoryXDTO(ArrayFullFileNamesWithXSDSchemas);

2. Στο εργοστάσιο XDTO δημιουργούνται όλοι οι σύνθετοι τύποι δεδομένων, τους οποίους στη συνέχεια θα συμπληρώσουμε στο δημιουργημένο αρχείο XML:

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

Οι τύποι δεδομένων που περιλαμβάνονται σε έναν συγκεκριμένο τύπο μπορούν να ληφθούν από τη συλλογή των ιδιοτήτων του:

CUOrganizationType = StaticFormType.Properties.Get("Consignee").Type; NameType = CUOrganizationType.Properties.Get("OrganizationName").Type; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Type; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Τύπος;

3. Όταν έχουν δημιουργηθεί όλοι οι σύνθετοι τύποι δεδομένων, δημιουργούμε μια δομή αρχείου XML που βασίζεται σε αυτούς, που αποτελείται από αντικείμενα XDTO Factory:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType); // συλλογή με έγγραφα 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);

Ταυτόχρονα, συμπληρώστε τις στοιχειώδεις (απλούς τύπους) λεπτομέρειες.

4. Και τέλος, ξεφορτώνουμε τα πάντα από το XDTO Factory σε ένα αρχείο:

Αρχείο XML = Νέα καταχώρηση XML(); FileXML.OpenFile(FileName); FileXML.WriteXMLDeclaration(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Close();

ΥΣΤΕΡΟΓΡΑΦΟ. Το αρχείο περιέχει ένα αρχείο προτύπου μεταφόρτωσης σε XML (δημιουργούνται μόνο ορισμένες λεπτομέρειες, που αντικατοπτρίζουν όλες τις περιπτώσεις όπου το αρχείο έχει συμπληρωθεί) και σχήματα XSD.

Αποσυμπιέστε όλα τα αρχεία σε έναν συγκεκριμένο κατάλογο.

Θα δημιουργηθεί XML σε αυτό.

Η μορφή XML είναι πολύ δημοφιλής κατά την ανταλλαγή διαφόρων εγγράφων κειμένου μεταξύ συστημάτων πληροφοριών. Η δυνατότητα δημιουργίας μιας μοναδικής δομής για έγγραφα επιτρέπει τη χρήση του σε πολλούς τομείς - ηλεκτρονικές βιβλιοθήκες, WEB, εισαγωγή/εξαγωγή και πολλούς άλλους. Χωρίς τη δυνατότητα εύκολης εργασίας με αυτήν τη μορφή, τα συστήματα 1C δεν θα είχαν αποκτήσει τέτοια δημοτικότητα. Δεδομένου ότι το 1C χρησιμοποιεί ενεργά τεχνολογίες WEB, κάθε προγραμματιστής πρέπει να μπορεί να διαβάζει XML και να γράφει πληροφορίες σε αυτό.

Αναπαράσταση και ανάγνωση αρχείων XML

Ένα από τα βασικά πλεονεκτήματα της γλώσσας σήμανσης XML είναι η αρκετά βολική και διαισθητική δομή και σύνταξη της. Κατά τη δημιουργία του, οι συγγραφείς έθεσαν στόχο να δημιουργήσουν μια γλώσσα σήμανσης που θα ήταν εύκολη στην ανάγνωση τόσο από ανθρώπους όσο και από υπολογιστές. Σήμερα, η XML έχει αναπτυχθεί ευρέως σε άλλες μορφές, αλλά παραμένει δημοφιλής και ευρέως χρησιμοποιούμενη. Η δομή του αρχείου XML είναι χτισμένη σύμφωνα με το ακόλουθο σχήμα:

Για να εξετάσετε ένα παράδειγμα εισαγωγής δεδομένων στο 1C, το αρχείο που παρουσιάζεται παραπάνω θα είναι αρκετό. Για να μπορέσει η γραπτή διαδικασία να διαβάσει το αρχείο XML, αρκεί να περάσετε τη διαδρομή προς το ίδιο το αρχείο σε αυτό. Αυτό μπορεί να γίνει μέσω της διεπαφής, επιτρέποντας στους χρήστες να προσδιορίσουν οι ίδιοι το αρχείο ή με επεξεργασία με σκληρό κώδικα στο κείμενο.

Ένας από τους δημοφιλείς τρόπους εργασίας με XML μεγέθους έως 100 MB σε 1C είναι η χρήση του μοντέλου αντικειμένου εγγράφου (DOM). Το νόημά του είναι η διαδοχική επεξεργασία όλων των κόμβων εγγράφων που αντιπροσωπεύονται σε XML. Στην ενσωματωμένη γλώσσα 1C, αυτός ο αλγόριθμος μοιάζει με αυτό:

  1. Δήλωση των μηχανισμών με τους οποίους διαβάζεται το αρχείο XML. Βρόχος για τη διέλευση κόμβων.
  2. Ανάγνωση δεδομένων και χαρακτηριστικών σε έναν κόμβο.
  3. Έξοδος πληροφοριών. Εάν είναι απαραίτητο, σε αυτό το στάδιο η εγγραφή μπορεί να γίνει σε μεταβλητές ή απευθείας στους απαραίτητους πίνακες.
  4. Ολοκλήρωση του μηχανισμού.
Διαδικασία &OnServer ReadOnServer(PathToFile) //δήλωση μηχανισμών Μηχανισμός ανάγνωσης = New ReadingXML; Reader.OpenFile(PathToFile); Builder = New BuilderDOM; Document = Builder.Read(Reader); //βρόχος για διέλευση κόμβων Για κάθε στοιχείο Από το Document.DocumentElement.ChildrenNodes Βρόχος //ανάγνωση δεδομένων If element.NodeName = "Product" Τότε προϊόν = στοιχείο; Για κάθε τιμή From product.ChildrenNodes Cycle If values.NodeName = "Name" τότε Name = values; Color = Name.Attributes.GetNamedElement("Color"); ElseIf values.NodeName = "Τιμή" τότε Κόστος = τιμές; Currency = Cost.Attributes.GetNamedItem("Currency"); τέλος εαν; EndCycle; //output messages Notify("Name: " + Name.TextContent + "; color: "+Color.Value +"; Price: "+Cost.TextContent + "; Currency: "+Currency.Value); τέλος εαν; EndCycle; //κλείσιμο του μηχανισμού Non-MechanismReading.Close(); Τέλος Διαδικασίας

Ως αποτέλεσμα, εμφανίζουμε μηνύματα στον χρήστη με τα εισαγόμενα δεδομένα. Μπορείτε επίσης να τοποθετήσετε όλα τα δεδομένα στην επιθυμητή δομή και, βάσει αυτής, να προγραμματίσετε τη δημιουργία ενός εγγράφου ή εγγραφών στον κατάλογο. Η ταχύτητα της εργασίας 1C με xml είναι αρκετά υψηλή, επομένως αυτή η μορφή χρησιμοποιείται όλο και περισσότερο κατά την ανταλλαγή δεδομένων με άλλες πηγές.

Για να ανεβάσουμε πληροφορίες, θα χρειαστεί επίσης να αλληλεπιδράσουμε με αρχεία XML. Ας δούμε ένα παράδειγμα εγγραφής που χρησιμοποιεί το αντικείμενο πλατφόρμας 1C XML Εγγραφή και μεταφόρτωση δεδομένων στο αντικείμενο. Τα κύρια πλεονεκτήματά του είναι η απλότητα του κώδικα και η ταχύτητα επεξεργασίας δεδομένων. Ο αλγόριθμος από την πλευρά του διακομιστή για τη σύνταξη ενός αρχείου XML μπορεί να αναπαρασταθεί ως διάφορα διαδοχικά βήματα:

  1. Συνδεθείτε στο αρχείο xml.
  2. Δημιουργούμε στοιχεία κεφαλής και γράφουμε δεδομένα σε αυτά. Εάν θέλετε να ανεβάσετε μεγάλο όγκο πληροφοριών σε ένα αρχείο XML, τότε σε αυτό το στάδιο θα χρησιμοποιήσετε βρόχους. Να είστε προσεκτικοί και να θυμάστε ότι το αίτημα δεδομένων πρέπει να γίνεται πριν από τον βρόχο και όχι σε αυτόν.
  3. Κλείστε το αρχείο.
//ανοίξτε το αρχείο Nomenclatura.xml και γράψτε το στοιχείο κεφαλής RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem("Προϊόντα"); //επιλογή δεδομένων για την εγγραφή SelectionFromDirectory = Directories.Nomenclature.Select(); //κύκλος στον οποίο πραγματοποιείται η εγγραφή κατά τον κύκλο SelectingFromDirectory.Next() //εγγραφή νέων δεδομένων RecordToFile.RecordStartofElement("Product"); RecordInFile.RecordAttribute("Name", SelectionFromDirectory.Name); WriteToFile.WriteAttribute("InitialPrice", Line(SelectionFromDirectory.InitialPrice)); WriteToFile.WriteEndElement(); EndCycle; //Κλείστε το στοιχείο κεφαλής και το αρχείο WriteVFile.WriteEndElement(); WriteInFile.Close();

Μηχανισμός XDTO σε 1C

Οι προγραμματιστές εταιρειών 1C έχουν δημιουργήσει τον δικό τους μηχανισμό για την ανταλλαγή πληροφοριών μέσω XML - XDTO (XML Data Transfer Objects). Ξεκινώντας από την έκδοση 8.1, η πλατφόρμα έχει τη δυνατότητα να ανταλλάσσει δεδομένα με άλλα συστήματα χωρίς να εμβαθύνει στα ζητήματα της δημιουργίας ενός αρχείου XML. Τα περισσότερα τεχνικά ζητήματα αντιμετωπίζονται από το 1C και το μόνο που έχουμε να κάνουμε είναι να υποδείξουμε τα δεδομένα που είναι απαραίτητα για τη δημιουργία XML. Είναι αλήθεια ότι για αυτό ο προγραμματιστής πρέπει να κάνει κάποιους χειρισμούς εκ των προτέρων.

Για να φορτώσετε ένα αρχείο XML χρησιμοποιώντας XDTO, πρέπει να πούμε στο 1C τη δομή του αρχείου. Μεταδίδεται μέσω ενός συνόλου διαγραμμάτων που μπορούν να δημιουργηθούν σε ένα πρόγραμμα επεξεργασίας κειμένου ή χρησιμοποιώντας ένα εξειδικευμένο πρόγραμμα. Το αρχείο που προκύπτει θα πρέπει να περιγράφει τη γενική δομή και τους τύπους δεδομένων που χρησιμοποιούνται στο αρχείο XML. Πριν διαβάσει ή γράψει νέα XML, ο προγραμματιστής πρέπει να φορτώσει το σχήμα του στη διαμόρφωση στα πακέτα XDTO.

Σε αυτήν την περίπτωση, θα δημιουργήσουμε ένα απλό πακέτο με το χέρι, έτσι ώστε το 1C να κατανοήσει τη δομή του αρχείου του παραδείγματός μας. Προκειμένου η δημιουργία του αρχείου να ολοκληρωθεί με επιτυχία, πρέπει να σκεφτούμε στο σχήμα ότι έχουμε ένα στοιχείο κεφαλής και ένα συνημμένο με χαρακτηριστικά. Το δημιουργημένο σχήμα πρέπει να εξαχθεί σε ένα αρχείο σε μορφή xsd και να μεταφερθεί μαζί με το xml, έτσι ώστε το άλλο μέρος να μην χρειάζεται να ασχοληθεί με τη δομή και να δημιουργήσει ξανά το πακέτο xdto.


Ένας αλγόριθμος διακομιστή παρόμοιος με τον προηγούμενο θα σας βοηθήσει να αποθηκεύσετε τη νέα XML στον σκληρό σας δίσκο. Η μόνη διαφορά είναι η ανάγκη προσθήκης δεδομένων για 1 προϊόν στο εργοστάσιο XDTO - ένας ειδικός μηχανισμός της πλατφόρμας 8.3 1C. Εάν υπάρχει ανάγκη να δημιουργήσετε περισσότερα επίπεδα ένθεσης, θα πρέπει να περιγράψετε κάθε στοιχείο κεφαλής.

//Άνοιγμα του αρχείου XML RecordVFile = New RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Δηλώστε στο 1C ποιος τύπος δεδομένων πρέπει να δημιουργηθεί - στοιχείο κεφαλής AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); //επιλογή δεδομένων για μεταφόρτωση SelectionFromDirectory = Directories.Nomenclature.Select(); //Προσθήκη μεμονωμένων προϊόντων στο στοιχείο κεφαλής Ενώ Επιλέξτε από τον κύκλο Directory.Next() Product = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Product")); Product.Name = Επιλέξτε από το Directory.Name; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts.Add(Product); EndCycle; //γράψτε τα δεδομένα και κλείστε το αρχείο FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteInFile.Close();

Οι μηχανισμοί που εξετάζονται είναι αρκετά καθολικοί και, εάν ρυθμιστούν σωστά, μπορούν να λύσουν τα περισσότερα προβλήματα. Ωστόσο, υπάρχουν πολλές αποχρώσεις στην αλληλεπίδραση μεταξύ 1C και XML. Είναι πολύ πιο αποτελεσματικό να τα μελετάτε σε πραγματικές συνθήκες και όχι σε δοκιμαστικές εργασίες στις οποίες η επεξεργασία ενός αρχείου XML επιλύει μάλλον στενά προβλήματα.

Αυτό το κεφάλαιο θα σας δείξει πώς να γράφετε σχήματα XML. Θα μάθετε επίσης ότι το διάγραμμα μπορεί να γραφτεί με διαφορετικούς τρόπους.

Έγγραφο XML

Ας δούμε αυτό το έγγραφο XML που ονομάζεται "shiporder.xml":

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
Τζον Σμιθ

Όλα Νόρντμαν

Langt 23

4000 Στάβανγκερ
Νορβηγία


Empire Burlesque
Ειδική έκδοση
1
10.90


Κρύψτε την καρδιά σας
1
9.90

Το παραπάνω έγγραφο XML αποτελείται από ένα ριζικό στοιχείο, "shiporder", το οποίο περιέχει ένα απαιτούμενο χαρακτηριστικό που ονομάζεται "orderid". Το στοιχείο "shiporder" περιέχει τρία διαφορετικά θυγατρικά στοιχεία: "orderperson" , "shipto" και "item" . Το στοιχείο "στοιχείο" εμφανίζεται δύο φορές και περιέχει ένα στοιχείο "τίτλος", ένα προαιρετικό στοιχείο "σημείωση", ένα στοιχείο "ποσότητα" και ένα στοιχείο "τιμή".

Η παραπάνω γραμμή: Xmlns: XSI="http://www.w3.org/2001/XMLSchema-instance" λέει στον αναλυτή XML ότι αυτό το έγγραφο πρέπει να επικυρωθεί με σχήμα. Γραμμή: XSI: noNamespaceSchemaLocation = "shiporder.xsd" υποδεικνύει πού βρίσκονται τα σχηματικά (εδώ βρίσκεται στον ίδιο φάκελο με το "shiporder.xml") .

Δημιουργία σχήματος XML

Τώρα θέλουμε να δημιουργήσουμε ένα σχήμα για το παραπάνω έγγραφο XML.

Θα ξεκινήσουμε ανοίγοντας ένα νέο αρχείο, το οποίο θα ονομάσουμε "shiporder.xsd". Για να δημιουργήσουμε ένα σχήμα θα μπορούσαμε απλώς να ακολουθήσουμε τη δομή στο έγγραφο XML και να ορίσουμε κάθε στοιχείο όπως το βρίσκουμε. Θα ξεκινήσουμε με μια τυπική δήλωση XML ακολουθούμενη από ένα στοιχείο xs:schema που ορίζει το σχήμα:



...

Στο παραπάνω σχήμα χρησιμοποιούμε τυπικούς χώρους ονομάτων (xs) και το URI που σχετίζεται με αυτόν τον χώρο ονομάτων είναι ο ορισμός της γλώσσας του σχήματος, ο οποίος έχει την τυπική τιμή http://www.w3.org/2001/XMLSchema.

Στη συνέχεια, πρέπει να ορίσουμε ένα στοιχείο "shiporder". Αυτό το στοιχείο έχει ένα χαρακτηριστικό και περιέχει άλλα στοιχεία, επομένως το αντιμετωπίζουμε ως σύνθετο τύπο. Τα θυγατρικά στοιχεία ενός στοιχείου "shiporder" περιβάλλονται από ένα xs: στοιχείο ακολουθίας που ορίζει μια διατεταγμένη ακολουθία υποστοιχείων:




...


Στη συνέχεια πρέπει να ορίσουμε το στοιχείο "orderperson" ως απλό τύπο (καθώς δεν περιέχει χαρακτηριστικά ή άλλα στοιχεία). Ο τύπος (xs:string) έχει πρόθεμα με ένα πρόθεμα χώρου ονομάτων που σχετίζεται με το σχήμα XML, το οποίο καθορίζει έναν προκαθορισμένο τύπο δεδομένων σχήματος:










Με τη βοήθεια σχημάτων μπορούμε να προσδιορίσουμε τον αριθμό των πιθανών εμφανίσεων για ένα στοιχείο με χαρακτηριστικά MaxOccurs και MinOccurs. Το MaxOccurs καθορίζει τον μέγιστο αριθμό εμφανίσεων για ένα στοιχείο και το MinOccurs καθορίζει τον ελάχιστο αριθμό εμφανίσεων για ένα στοιχείο. Η προεπιλεγμένη τιμή τόσο για το MaxOccurs όσο και για το MinOccurs είναι 1!

Τώρα μπορούμε να ορίσουμε το στοιχείο "στοιχείο". Αυτό το στοιχείο μπορεί να εμφανίζεται πολλές φορές σε ένα στοιχείο "shiporder". Αυτό καθορίζεται ορίζοντας το χαρακτηριστικό maxOccurs του στοιχείου "item" σε "unbounded", πράγμα που σημαίνει ότι μπορεί να υπάρχουν τόσες εμφανίσεις του στοιχείου "item" όσες θέλει ο συγγραφέας. Σημειώστε ότι το στοιχείο "σημείωση" είναι προαιρετικό. Το ορίσαμε θέτοντας το χαρακτηριστικό minOccurs στο μηδέν:










Τώρα μπορούμε να δηλώσουμε το χαρακτηριστικό "shiporder" του στοιχείου. Επειδή αυτό είναι ένα απαιτούμενο χαρακτηριστικό, καθορίζουμε use="required".

Σημείωση: Οι δηλώσεις χαρακτηριστικών πρέπει να είναι πάντα τελευταίες:

Ακολουθεί μια πλήρης λίστα του αρχείου σχήματος που ονομάζεται "shiporder.xsd":





























Ξεχωριστά κυκλώματα

Η προηγούμενη μέθοδος σχεδίασης είναι πολύ απλή, αλλά μπορεί να είναι δύσκολο να διαβαστεί και να διατηρηθεί όταν τα έγγραφα είναι πολύπλοκα.

Η επόμενη μέθοδος σχεδίασης βασίζεται στον καθορισμό όλων των στοιχείων και των χαρακτηριστικών και στη συνέχεια στην αναφορά τους χρησιμοποιώντας το χαρακτηριστικό ref.

Ακολουθεί η νέα σχεδίαση του σχηματικού αρχείου ("shiporder.xsd"):








































Χρήση επώνυμων τύπων

Η τρίτη μέθοδος σχεδίασης ορίζει κλάσεις ή τύπους, που επιτρέπει την επαναχρησιμοποίηση των ορισμών στοιχείων. Αυτό γίνεται με την ονομασία των στοιχείων simpleTypes και complexTypes και, στη συνέχεια, αναφορά σε αυτά μέσω του χαρακτηριστικού type του στοιχείου.

Ακολουθεί η τρίτη σχεδίαση του σχηματικού αρχείου ("shiporder.xsd"):

































Το στοιχείο περιορισμού υποδεικνύει ότι ο τύπος δεδομένων προήλθε από τον χώρο ονομάτων τύπου δεδομένων W3C XML Schema. Επομένως, το ακόλουθο απόσπασμα σημαίνει ότι η τιμή του στοιχείου ή του χαρακτηριστικού πρέπει να είναι η τιμή μιας συμβολοσειράς:

Το στοιχείο περιορισμού χρησιμοποιείται συχνότερα για την εφαρμογή περιορισμών σε στοιχεία. Δείτε τις παρακάτω γραμμές από το παραπάνω διάγραμμα:





Αυτό καθορίζει ότι η τιμή του στοιχείου ή του χαρακτηριστικού πρέπει να είναι μια συμβολοσειρά, πρέπει να είναι ακριβώς έξι χαρακτήρες ανά γραμμή και αυτοί οι χαρακτήρες πρέπει να είναι ένας αριθμός μεταξύ 0 και 9.

Το XDTO είναι ένας μηχανισμός 1C που απαιτείται κατά τη δημιουργία και χρήση υπηρεσιών web σε 1C.

Τα πακέτα XDTO 1C σάς επιτρέπουν να περιγράψετε τη δομή του απαιτούμενου αρχείου XML για τη μετατροπή δεδομένων από και προς XML.

Για όσους ενδιαφέρονται, ας δούμε την ερώτηση πιο αναλυτικά.

Τα αρχεία XML μεταδίδονται μέσω του Διαδικτύου και μπορούν να διαβαστούν από πολλά προγράμματα.

Γίνονται αντιληπτοί - αυτό σημαίνει ότι είναι ενσωματωμένο στον κώδικά τους - εάν συναντήσετε ένα συγκεκριμένο όνομα στοιχείου στο αρχείο XML - το αντιλαμβάνεστε έτσι και κάντε αυτό.

Επομένως, εάν χρησιμοποιήσουμε το όνομα στοιχείου Apple, τότε υπάρχει μια αρκετά μεγάλη πιθανότητα κάποιο άλλο πρόγραμμα να «νομίζει» ότι αυτή είναι η Apple που γνωρίζει, αλλά εννοούσαμε κάτι δικό μας.

Για να μην συμβεί αυτό και για να υποδείξουμε ξεκάθαρα ότι η Apple μας είναι διαφορετική από όλες τις άλλες, το όνομα του χώρου ονομάτων μπορεί να καθοριστεί στο αρχείο - ένα πρόθεμα που χρησιμοποιείται πριν από το όνομα των στοιχείων.

Ο χώρος ονομάτων (στα αγγλικά namespace) ορίζεται ως εξής - xmlns:SpaceName = "URL", για παράδειγμα:
xmlns:store = "http://store.ru"

Γιατί χρειάζεστε μια διεύθυνση URL;

Επομένως, καθορίζεται ένα συγκεκριμένο μοναδικό αναγνωριστικό, το οποίο προσδιορίζει επίσης τον συγγραφέα του χώρου ονομάτων.

Φυσικά, θεωρείται ότι το άτομο που υπέδειξε τον χώρο ονομάτων είναι ένα εξαιρετικά ειλικρινές άτομο και υπέδειξε τον ιστότοπό του και δεν χρησιμοποιεί πολλούς διαφορετικούς χώρους ονομάτων με έναν ιστότοπο.

Παρεμπιπτόντως, συνήθως υποδεικνύουν όχι μόνο τη διεύθυνση URL του ιστότοπου, αλλά τη διεύθυνση URL ενός συγκεκριμένου φακέλου στον ιστότοπο, έτσι ώστε αν συμβεί οτιδήποτε, μπορείτε να δημιουργήσετε έναν άλλο χώρο ονομάτων σε άλλο φάκελο του ιστότοπου για χρήση σε διαφορετική κατάσταση.

Ένα αντικείμενο είναι μια συγκεκριμένη δομή δεδομένων, αυτάρκης, που περιέχει όλα τα δεδομένα της.

Εφόσον τα δομημένα δεδομένα περιγράφονται σε XML, δηλαδή με τη μορφή μιας δομής που έχει τις δικές της ιδιότητες κ.λπ., μπορούν να θεωρηθούν ως αντικείμενα.

Στο παράδειγμα που δίνεται, αυτό θα μπορούσε να είναι ένα αντικείμενο LIST με μια ιδιότητα και ένα ένθετο στοιχείο.

Το DOM είναι ένας τρόπος αντιμετώπισης ενός αρχείου XML όχι ως κείμενο σε συγκεκριμένη μορφή, αλλά ως μια συλλογή αντικειμένων με ιδιότητες, πεδία κ.λπ.

Περιγραφή του αρχείου XML

Εάν χρησιμοποιούμε ένα αρχείο συγκεκριμένης δομής συνεχώς για ανταλλαγή μεταξύ δύο προγραμμάτων, πιθανότατα θα θέλαμε:

  • Για να χρησιμοποιούνται ορισμένα ονόματα
  • Να έχουμε εκείνα τα στοιχεία που περιμένουμε (τα οποία "πρέπει να υπάρχουν για να χρησιμοποιηθούν στην ανταλλαγή μας")
  • Έτσι ώστε τα χαρακτηριστικά να περιέχουν τους τύπους που περιμένουμε (συμβολοσειρά, αριθμός, κ.λπ.).

Υπάρχουν τα ακόλουθα πρότυπα μορφής αρχείου για την περιγραφή της δομής XML (τα οποία αποθηκεύονται επίσης σε ένα αρχείο απλού κειμένου):

  • Επέκταση DTD – Ορισμός τύπου εγγράφου
  • Επέκταση XSD – XML Shema.

Και οι δύο μορφές περιγράφουν πώς πρέπει να είναι το έγγραφο. Η διαδικασία ελέγχου εάν η XML συμμορφώνεται με το πρότυπο που περιγράφεται σε ένα τέτοιο αρχείο ονομάζεται επαλήθευση.

Το XDTO 1C είναι ένα εργαλείο που σας επιτρέπει να προσθέσετε μια περιγραφή ενός αρχείου XML στη διαμόρφωση. Ή μάλλον, δεν είναι το αρχείο που περιγράφεται, αλλά συγκεκριμένες δομές XML.

Για να υποδείξετε τους τύπους που μπορούν να χρησιμοποιηθούν, χρησιμοποιείται μια λίστα ή μια βιβλιοθήκη τύπων, η οποία ονομάζεται εργοστάσιο XDTO 1C.

Αυτό το εργοστάσιο καθορίζει τόσο απλούς τύπους (συμβολοσειρά, αριθμό, ημερομηνία), που χρησιμοποιούνται συνήθως σε άλλες γλώσσες, προγράμματα κ.λπ., αλλά και τύπους 1C, που χρησιμοποιούνται σε 1C και σε συγκεκριμένη διαμόρφωση.

Το ίδιο το εργοστάσιο XDTO 1C αποτελείται από πολλά πακέτα. Οι βασικοί τύποι περιγράφονται σε ένα πακέτο που ονομάζεται www.w3.org

Οι τύποι δεδομένων τρέχουσας διαμόρφωσης περιγράφονται στο πακέτο http://v8.1c.ru/8.1/data/enterprise/current-config

Οι ίδιοι οι τύποι ονομάζονται σύμφωνα με το όνομα στο πρόγραμμα διαμόρφωσης με την προσθήκη μιας αγγλόφωνης φόρμας (CatalogRef, CatalogObject, DocumentRef, DocumentObject), για παράδειγμα:

CatalogObject.Ονοματολογία

Προσθήκη του πακέτου XDTO 1C

Όλο αυτό ακούγεται σίγουρα ωραίο. Και δεν έχουμε φτάσει ακόμα στο θέμα του XSLT - έναν τρόπο να μετατρέψουμε τα αρχεία XML σε κάτι άλλο, όπως HTML. Το θέμα της XML είναι εξαιρετικά μεγάλο και δύσκολο να καλυφθεί ακόμη και σε ξεχωριστό βιβλίο.

Το καθήκον μας είναι να κατανοήσουμε ότι το XDTO 1C μας επιτρέπει να περιγράψουμε ποια στοιχεία πρέπει να έχει ένα πακέτο XML που πρέπει να δημιουργηθεί ή να διαβαστεί.

Τα πακέτα XDTO 1C βρίσκονται στη διαμόρφωση στον κλάδο Πακέτα General/XDTO 1C.

Μπορείτε να προσθέσετε το πακέτο XDTO στο 1C με μη αυτόματο τρόπο (cool!), αλλά είναι καλύτερο να λάβετε το αντίστοιχο αρχείο XSD με μια έτοιμη περιγραφή του σχήματος.

Μπορείτε να λάβετε μια περιγραφή του σχήματος XSD για αντικείμενα οποιασδήποτε διαμόρφωσης κάνοντας κλικ στον κλάδο Πακέτα General/XDTO 1C και επιλέγοντας το στοιχείο μενού Εξαγωγή σχήματος διαμόρφωσης XML.

Το αρχείο είναι κείμενο, μπορείτε να το επεξεργαστείτε στο Σημειωματάριο των Windows, αφαιρώντας περιττά αντικείμενα που δεν χρειάζεστε.

Μπορείτε να προσθέσετε ένα έτοιμο σχήμα XSD στο 1C κάνοντας δεξί κλικ στον κλάδο πακέτων General/XDTO 1C και επιλέγοντας το στοιχείο μενού Εισαγωγή σχήματος XML.

Χρησιμοποιώντας τον μηχανισμό XDTO 1C

Η εργασία με το XDTO 1C σημαίνει μετατροπή τιμών σε και από XML.

Η εργασία πραγματοποιείται με τη χρήση αντικειμένων γλώσσας 1C Ανάγνωση XML/Writing XML.

Όταν εργάζεστε με τον μηχανισμό XDTO 1C, πρέπει να υποδείξετε το πακέτο με το οποίο εργάζεστε. Αυτό μπορεί να είναι ένα τυπικό πακέτο (που συζητήθηκε παραπάνω, βλέπε XDTO) ή ένα πακέτο που προστέθηκε στη διαμόρφωση. Το πακέτο αναγνωρίζεται από τη διεύθυνση URL που καθορίζεται στο πακέτο.

Οι δύο βασικοί απλοί τρόποι εργασίας είναι:

  • Serialization - αυτόματη μετατροπή τιμών από 1C σε XML και αντίστροφα
  • Δημιουργία αντικειμένου, συμπλήρωση των πεδίων του, εγγραφή σε XML (και, κατά συνέπεια, ανάγνωση από XML και μετά ανάγνωση των πεδίων του).

Παράδειγμα σειριοποίησης τιμών:
Serializer = New SerializerXDTO(FactoryXDTO);
Αρχείο XML = Νέα καταχώρηση XML();
FileXML.OpenFile("FileName");
Serializer.WriteXML(XMLFile, Value1C);

Παράδειγμα ανάγνωσης/εγγραφής αντικειμένου:

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