1c 8.2 crearea xml pe baza xsd. Obiect DataSet tastat. Citirea și scrierea documentelor XML

01.11.2019 Siguranță

Adnotare: Scheme de date XML (XSD). Crearea unei scheme XSD în mediu Studio vizual.NET. Crearea unui obiect DataSet tipizat. Obținerea de informații despre structura unui obiect DataSet. Încărcarea documentelor XML și a schemelor XSD în obiecte DataSet tipizate și obișnuite. Metodele ReadXml și ReadXmlSchema. Înregistrarea conținutului și structurii unui obiect DataSet tip și obișnuit. Metodele WriteXml și WriteXmlSchema

Obiect DataSet tastat. Citirea și scrierea documentelor XML

Scheme de date XML (XSD)

Scheme de date 1 Traducerea exactă a documentului XML Schema -< Schema documentului XML>, totuși vom continua să folosim termenul „schemă de date XML”. XSD (XML Schema Document, XSD) sunt cale alternativă reguli pentru construirea documentelor XML. În comparație cu DTD-urile, schemele sunt mai puternice pentru definirea structurilor complexe de date, oferă o modalitate mai clară de a descrie gramatica unei limbi și pot fi ușor modernizate și extinse. O schemă XSD poate conține următoarele informații:

  • reprezentarea relațiilor dintre elementele de date, similare relațiilor de cheie străină dintre tabele dintr-o bază de date relațională;
  • reprezentarea identificatorilor unici similar cu o cheie primară;
  • specificarea tipului date pentru fiecare element și atribut individual dintr-un document XML.

Pentru a crea o schemă de date în Visual Studio .NET, mergeți la File\New\File din meniul principal și selectați XML Schema din lista de șabloane (vezi Fig. 11.3). Apare o fereastră care spune „Pentru a începe, trageți obiectele din fereastra Server Explorer sau Toolbox în spațiul de lucru (zona de proiectare) sau faceți clic dreapta” (Figura 11.1):


Orez. 11.1.

Ideea este că suntem în modul design. Treceți la modul cod făcând clic pe butonul (XML):

Prima linie este indicația familiară că schema este un document XML cu un element rădăcină xs:schema . Prefixul xs: prefixează toate elementele schemei pentru a indica spațiul de nume. A doua linie conține o descriere lungă, detaliată și adesea complet inutilă a schemei (comparați cu codul similar pentru paginile HTML). Pentru o funcționare corectă, este suficient să vă limitați la următoarea reprezentare:

Cu toate acestea, instrumentele de vizualizare încorporate ale studioului presupun prezența acestui „antet”, așa că nu ar trebui să fie eliminat. Crearea unei scheme care descrie un document XML dat în Visual Studio .NET este o sarcină destul de simplă. Să creăm următorul document XMLEasy.xml:

1

Trecem la fila (Date) și vedem o singură intrare (Fig. 11.2).


Orez. 11.2.

Puteți crea o schemă care descrie acest document în mai multe moduri: în meniul principal, selectați „XML\Create Schema” (Fig. 11.3, A), în modul XML în meniul contextual selectați același element (Fig. 11.3, B), în modul Data selectați acest element în meniul contextual (Fig. 11.3, C) și, în final, în modul Data, faceți clic pe butonul din bara de instrumente XML (Fig. 11.3, D) .


Orez. 11.3.

În orice caz, conturul documentului apare sub forma unui tabel (Fig. 11.4). Să părăsim modul Schema pentru moment și să trecem la modul (XML).


Orez. 11.4.

Mediul a generat cod XML care descrie structura documentului:

Aceasta include, de asemenea, descrierea necesară pentru a manipula în continuare schema folosind obiecte ADO .NET. În documentul sursă XMLEasy.xml, a apărut un link către schema de date:

Documentul XMLEasy.xsd a fost creat automat în același director în care se află XMLEasy.xml.

Pentru a învăța să înțelegeți schemele XSD, ar trebui mai întâi să lucrați cu descrierea datelor în forma sa pură, fără elemente suplimentare. Tabelul 11.1 prezintă câteva documente XML simple și schemele acestora, generate fără legarea de obiecte ADO .NET.

Tabelul 11.1. Exemple de creare a schemelor XSD
Conținutul documentului XML Conținutul schemei XSD

1

Descriere
Într-un document XMLEasy.xml, elementul TOUR este elementul rădăcină care conține element copil IDTOUR. Schema generala pentru elementul rădăcină are următoarea formă:

: Conținutul elementului...

Elementele copil sunt descrise astfel:

Conținutul documentului XML Conținutul schemei XSD

1 Cipru 25.000,00 RUB Prețul a două vouchere pentru adulți include prețul unui copil (până la 7 ani) 2 Grecia 32.000,00 RUB În august și septembrie se aplică reduceri speciale 3 Tailanda 30.000,00 RUB Nu include biletul de avion 4 Italia 26.000,00 RUB Micul dejun la hotel este inclus în prețul turului 5 Franţa 27.000,00 RUB Excursiile suplimentare nu sunt incluse în prețul turului

Descriere
Elementul rădăcină TABLE conține un element TOUR, care, la rândul său, constă dintr-un grup de elemente copil. Elementul choice controlează selecția altor elemente, valoarea „nelimitată” a atributului maxOccurs indicând faptul că grupurile TOUR pot fi nelimitate.

: :

Conținutul documentului XML Conținutul schemei XSD

1 Cipru 25.000,00 RUB 1 Prețul a două vouchere pentru adulți include prețul unui copil (până la 7 ani)


Orez. 11.5.
Descriere
Tipul de date al elementului IDTOUR a fost setat la int , tipul de date al elementului ÎNCHIS a fost setat la boolean , iar restul au fost setat la tipul de date implicit șir. Puteți schimba tipul de date direct în modul Schema de date XML, dar este mai convenabil să utilizați modul Schema (în acest caz modul se va numi DataSet) selectați tipul de date din lista derulantă (Fig. 11.5) :

ÎN software Pentru curs veți găsi toate fișierele acestui tabel în folderul XSD (Code\Glava5\XSD).

Setarea unui tip de date într-un document XML (Tabelul 11.1 este cel mai recent exemplu) este o modalitate de a limita conținutul. Atributele suplimentare sunt folosite pentru a constrânge valoarea unui anumit tip. În următorul fragment de schemă, valoarea elementului PRICE trebuie să fie între 50 și 100:

Pentru a limita un document XML la unele valori fixe, utilizați următorul construct:

Aici elementul NAME poate lua o singură valoare fixă ​​din cinci nume de țări.

Dezvoltarea unei scheme XSD este destul de multă muncă. Instrumentele vizuale din Visual Studio .NET fac această sarcină mult mai ușoară. Pentru a stăpâni conceptele de bază, este recomandabil să înveți mai multe scheme de documente XML generate automat. Tabelele 11.2-11.4 oferă o descriere a principalelor elemente și atribute care pot fi întâlnite.

Tabelul 11.2. Elemente de schemă XSD
Element Descriere
toate Elementele imbricate pot fi definite în orice ordine
adnotare Elementul părinte al elementelor de comentariu Și
orice Orice elemente imbricate
oriceAtribut Orice atribute
info app Element de comentariu. Specifică titlul schemei
atribut Atribut
attributeGroup Grup de atribute
alegere Selectarea altor elemente. Analog al operatorului „|” în DTD
complexContent Restricții sau extensii de model tip de conținut complex
complexType Element complex
documentație Element de comentariu. Oferă informații despre schemă
element Element
extensie Extensii de elemente
camp Declarație de teren. Se aplică în interiorul unui element pentru a defini câmpuri
grup Grup de elemente
import Importul unei declarații de tip dintr-o altă schemă
include Includerea unei scheme diferite într-un spațiu de nume existent
cheie Specificarea unui element sau atribut cu o cheie care indică un alt element
cheieref Specificarea elementului sau atributului către care indică cheia
listă Un element care poate conține o listă de valori
redefiniți Suprascrierea elementelor deja declarate
restricţie Constrângere element
schemă Element rădăcină de schemă
selector Selector pentru selectarea elementelor XML
secvenţă Succesiunea altor elemente. Analog al operatorului "," în DTD
simpleContent Un model al cărui conținut reprezintă doar date de caractere
simpleType Element simplu
uniune Un element sau un atribut care poate avea mai multe semnificații
unic Un element sau atribut care trebuie să aibă valoare unică
Tabelul 11.3. Atribute - Limitări ale schemei XSD
Atribut Descriere
enumerare Lista de valori
lungime Lungime
lungime maxima Lungime maxima
minLungime Lungime minima
maxExclusive Valoare maximă
maxInclusive Valoarea maximă inclusiv
minExclusiv Valoarea minima
minInclusiv Valoarea minimă inclusiv
fractionDigits Numărul de zecimale în numere fracționale
totalDigits Numărul de cifre
model Eșantion (model) de conținut al elementului
Mod implicit Valoarea implicită a elementului sau a atributului
elementFormDefault Setarea proprietăților unui element local așa cum sunt definite global
fix Element fix sau valoare de atribut
formă Elementele declarate local sunt definite în cazuri specifice de document
categorie de obiect Tipul articolului din listă
MemberTypes Tipul de membri utilizați în unire
maxApare Numărul maxim de apariții ale unui element
minApare Numărul minim de apariții ale unui element
amestecat Specificarea unui element care are un tip mixt
Nume Nume element sau atribut
spatiu de nume Spațiu de nume
noNamspace Specificarea locației documentului schematic,
SchemaLocation neavând spații de nume rezultate
anulabil Determinarea faptului că un element poate fi gol Valoare NULL(zero)
ref Setarea unei referințe la un element definit global
schemaLocation Localizarea circuitului
substitutionGroup Definirea înlocuirii elementelor cu alte elemente
targetNamspace Spațiul de nume al schemei rezultat
tip Categorie de obiect
utilizare Este necesar sau nu elementul?
valoare Valoarea elementului schematic
xsi:nil Setarea conținutului real al unui element gol (NULL) într-un document XML
xsi:schemaLocation Locația reală a elementului în documentul XML
xsi:tip Tipul real al elementului din documentul XML

Platforme: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Configurații: Toate configurațiile

2012-11-25
34938

XDTO este un mecanism care este necesar la crearea și rularea serviciilor web. Pachetele XDTO sunt folosite pentru a descrie structura fișierului XML necesar pentru a modifica datele din și către XML.

XML este o modalitate de a descrie o structură de date complexă într-un fișier text obișnuit. Descrie nu numai datele în sine, ci și câmpurile în care sunt stocate.
Iată un exemplu de bază fișier XML:

XML pentru manechin

Nume (etichete) folosite în acest fișier- rădăcină, listă, nume, el - pot fi complet arbitrare. Regulile de bază pentru crearea unui fișier XML sunt imediat vizibile din structura acestuia:
- Este posibil să cuibărească elemente;

Începutul elementului<Имя>, finalul este același nume, dar cu adăugarea unui caracter „/”.

În interiorul elementului pot fi amplasate următoarele:
- Elemente imbricate;
- Text.

Fiecare element poate avea proprietăți (atribute), valoarea și numele acestora sunt indicate. Este interzisă utilizarea oricăror caractere în XML, deoarece mai multe dintre ele sunt folosite direct pentru XML, de exemplu "<» и «>" Modul de a-l descrie în XML este foarte convenabil pentru utilizare atunci când faceți schimburi cu alții programe de la terțiși este utilizat în mecanismul de schimb de date 1C.

Spațiu de nume

Un fișier XML începe cu un antet care descrie versiunea XML, codificarea etc... Antetul în XML nu este în întregime necesar și de foarte multe ori pur și simplu nu este folosit. Antetul poate defini și un spațiu de nume.

Fișierele XML sunt transmise prin Internet și sunt înțelese de mulți diverse programe. Ele sunt percepute - asta înseamnă că există o protecție în codul lor - dacă dai peste un anumit nume de element într-un fișier XML, atunci trebuie să îl percepi în acest fel și să faci exact acest lucru. Prin urmare, atunci când folosim eticheta IBM, există șanse destul de mari ca un alt program să creadă că acesta este IBM, cunoscut de el, în timp ce noi am vrut să spunem ceva de-al nostru prin asta.

Pentru a preveni acest lucru și pentru a indica clar diferența dintre IBM-ul nostru și toate celelalte, este posibil să specificați numele spațiului de nume în fișier - un prefix folosit înaintea numelui elementelor.

Puteți defini un spațiu de nume după cum urmează - xmlns:Prefix (NameSpace) = „URL”, exemplu:
xmlns:store = "http://site.ru"

De ce este necesar un URL? Cei care s-au gândit deja la asta și caută mai departe - desigur, spațiul de nume pe care l-am inventat poate să nu fie unic, adică. îl poate folosi oricine altcineva. De aceea special identificator unic, care definește și executorul spațiului de nume.

Desigur, se presupune că persoana care a specificat spațiul de nume este complet sinceră. Acesta indică propriul site și nu utilizează mai multe spații de nume diferite cu un singur site. De regulă, specificați atât URL-ul site-ului, cât și URL-ul unui anumit folder de pe site, astfel încât să fie posibilă crearea unui alt spațiu de nume în orice folder de pe acest site, pentru utilizarea lui în orice situație.

DOM

Un obiect este o structură de date specifică care este autonomă și conține toate datele sale.

Datorită faptului că fișierul XML descrie date structurate, adică date sub forma unei structuri care are propriile sale proprietăți și așa mai departe, în consecință, le puteți privi ca obiecte. Exemplul de mai sus poate folosi un obiect LIST cu proprietăți și un element imbricat.

DOM este o modalitate de a trata un fișier XML nu ca text într-un format specific, ci ca un set de obiecte cu câmpuri, proprietăți și multe altele.

La contra aceasta metoda de lucru, există cerințe mari la performanța PC-ului, deoarece DOM procesează (formează o structură sub formă de obiecte) întregul fișier XML simultan, indiferent de dimensiunea acestuia, și fișierele marime mare(mai mult de 4 GB) pur și simplu nu poate „digera”.

Pentru a analiza fișiere mari, se utilizează SAX; această metodă de analizare a unui fișier se bazează pe citirea secvențială a fișierului și nu pe construirea întregii sale structuri simultan .

Descrierea fișierului XML

Dacă folosim în mod constant un fișier cu o anumită structură pentru a comunica între 2 programe, atunci probabil că ne-am dori următoarele:

A fi folosit nume specifice;
- Că sunt folosite doar acele elemente pe care le așteptăm (care „trebuie să existe pentru a fi folosite în schimb”);
- Pentru ca atributele să indice doar acele tipuri pe care le așteptăm (număr, șir etc.).

Următoarele formate de fișiere sunt disponibile pentru descrierea structurilor XML (stocate și într-un fișier text simplu):

Extensia DTD este Document Type Definition;
- Extensia XSD este XML Shema.

Aceste formate descriu cum ar trebui să fie documentul. Procedura de verificare a conformității XML, care este descrisă într-un astfel de fișier standard, se numește verificare.

XDTO

XDTO este un obiect 1C care vă permite să adăugați o descriere a unui fișier XML la configurație. Mai precis, nu fișierul în sine este descris, ci anumite structuri XML.

Pentru a indica tipurile care pot fi utilizate, se folosește o listă, o bibliotecă de tipuri, numită fabrica XDTO. Această fabrică specifică nu numai tipuri simple (data, șir, număr) care sunt utilizate în alte programe, limbi etc., ci și tipuri 1C care sunt utilizate în 1C și într-o anumită configurație.

XDTO Factory include mai multe pachete. Tipurile inițiale sunt descrise într-un pachet numit www.w3.org Tipurile de date din configurație sunt descrise în pachet http://v8.1c.ru/8.1/data/enterprise/current-config

Aceste tipuri sunt denumite în conformitate cu numele din configurator cu adăugarea formei engleze (CatalogRef, DocumentObject, CatalogObject, DocumentRef), de exemplu:

CatalogObject.Conturi

Adăugarea unui pachet XDTO

Am ajuns la subiectul XSLT - o modalitate de a transforma fișierele XML în altceva, de ex. fișiere HTML. Subiectul XML este extrem de vast și s-au scris mai multe cărți despre el.

Sarcina noastră este să înțelegem că XDTO ne permite să descriem elementele care trebuie să fie în pachetul XML care trebuie citit sau generat. Pachetele XDTO sunt situate în configurația 1C și în ramura General - pachete XDTO.

Este posibil să adăugați manual un pachet XDTO la 1C, dar cel mai bine este să obțineți fișierul XSD corespunzător cu un fișier gata făcut. descriere detaliata sistem. O descriere a schemei de obiect XSD a oricărei configurații poate fi obținută făcând clic pe ramura General - pachete XDTO și selectând „ Export XML scheme de date de configurare.”

Acest fisier text, Puteți edita în Windows Notepad, în timp ce eliminați obiectele inutile (care nu sunt necesare pentru dvs.). Puteți adăuga o schemă XSD gata făcută la 1C făcând clic dreapta pe ramura General - pachete XDTO și selectând „Import XML schema” din meniu.

Lucrul cu XDTO în 1C înseamnă conversia valorilor din XML în XML. Acest lucru se face folosind obiecte limbaj 1C Citiți XML/XMLWrite.

Când lucrați cu XDTO, trebuie să specificați pachetul cu care lucrați direct. Poate fi fie un pachet standard (vezi discuția de mai sus, XDTO), fie un pachet adăugat la configurație.

Pachetul este identificat prin adresa URL specificată în pachet. Există două moduri principale de lucru:

Serializare - schimbare automată valori de la XML la 1C și invers;

Completarea câmpurilor unui obiect, crearea acestuia și scrierea lui în XML (precum citirea din XML și, ulterior, citirea câmpurilor acestuia).

Să ne imaginăm un exemplu de serializare a valorii:

Serializator = Nou Serializator XDTO (XDTO Factory);
Fișier XML = Înregistrare XML nouă();
XMLFile.OpenFile("FileName");
Serializer.WriteXML(XMLFile, 1C Value);

Funcția inversă este Serializatorul. XMLReading (), folosit din obiectele 1C ale limbajului XML Reading.
Exemplu de scriere/citire a unui obiect:

Director XDTOObject = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Counterparties"));
Completați înPropertyValues(DirectoryXDTOObject, Directory.Counterparties.FindByProperties(„Nume”, „Ivanov”).Link);

Apoi puteți scrie obiectul creat în XML exact în același mod ca și serializarea. Când citiți XML în același mod ca cel discutat mai sus, este posibil să nu fie returnată o valoare XDTO, ci doar un astfel de obiect.

La crearea unui obiect XDTO, se creează o structură care este similară cu structura unui obiect de configurare (cu excepția cazului în care, desigur, creați un obiect de configurare din pachetul specificat în exemplul de mai sus). Câmpurile tipice (nume, cod etc.) sunt în limba engleză, iar obiectul este creat gol, deci trebuie completat, fiecare câmp separat sau folosind funcția FillPropertyValues

Formatul XML este foarte popular pentru schimbul de diverse documente textîntre sisteme de informare. Abilitatea de a crea o structură unică pentru documente îi permite să fie utilizat în multe domenii - biblioteci electronice, WEB, import/export și multe altele. Fara posibilitate lucru confortabil cu acest format, sistemele 1C nu ar fi putut câștiga o asemenea popularitate. Deoarece 1C utilizează în mod activ tehnologiile WEB, fiecare dezvoltator trebuie să fie capabil să citească XML și să scrie informații în el.

Reprezentarea și citirea fișierelor XML

Unul dintre avantajele cheie ale limbajului de marcare XML este structura și sintaxa sa destul de convenabilă și intuitivă. Când l-au creat, autorii și-au stabilit un obiectiv de a crea un limbaj de marcare care să fie ușor de citit atât de oameni, cât și de computere. Astăzi, XML a fost dezvoltat pe scară largă în alte formate, dar rămâne popular și utilizat pe scară largă. Structura fișierului XML este construită după următoarea schemă:

Pentru a lua în considerare un exemplu de import de date în 1C, fișierul prezentat mai sus va fi suficient. Pentru ca procedura scrisă să poată citi fișierul XML, este suficient să treci în el calea către fișierul însuși. Acest lucru se poate face prin interfață, permițând utilizatorilor să specifice fișierul ei înșiși sau prin procesare hard-coded în text.

Una dintre modalitățile populare de a lucra cu XML cu o dimensiune de până la 100 MB în 1C este utilizarea Document Object Model (DOM). Sensul său este de a procesa secvenţial toate nodurile de document reprezentate în XML. În limbajul 1C încorporat, acest algoritm arată astfel:

  1. Declararea mecanismelor prin care se produce acest lucru Citirea XML fişier; Buclă pentru a traversa nodurile;
  2. Citirea datelor și atributelor într-un nod;
  3. Ieșire de informații. Dacă este necesar, în această etapă scrierea poate apărea în variabile sau direct în tabelele necesare;
  4. Finalizarea mecanismului.
&OnServer Procedura ReadOnServer(PathToFile) //declararea mecanismelor Reading Mechanism = New ReadingXML; Reader.OpenFile(PathToFile); Builder = New BuilderDOM; Document = Builder.Read(Reader); //buclă pentru a parcurge nodurile Pentru fiecare element Din Document.DocumentElement.ChildrenNodes Buclă //citirea datelor Dacă element.NodeName = "Produs" Apoi produs = element; Pentru fiecare valoare Din product.ChildrenNodes Cycle If values.NodeName = "Nume" atunci Nume = valori; Culoare = Name.Attributes.GetNamedElement("Color"); ElseIf values.NodeName = „Preț”, apoi Cost = valori; Currency = Cost.Attributes.GetNamedItem("Currency"); endIf; EndCycle; //mesaje de ieșire Notify("Nume: " + Nume.TextContent + "; culoare: "+Color.Value +"; Preț: "+Cost.TextContent + "; Moneda: "+Currency.Value); endIf; EndCycle; //închiderea mecanismului Non-MechanismReading.Close(); Sfârșitul procedurii

Ca urmare, afișăm mesaje utilizatorului cu datele importate. De asemenea, puteți introduce toate datele structura dorită iar pe baza acestuia programează crearea unui document sau a unor intrări în director. Viteza de lucru 1C cu xml este destul de mare, așa că acest format este din ce în ce mai folosit atunci când se fac schimb de date cu alte surse.

Pentru a încărca informații, vom avea nevoie și de interacțiunea cu fișierele format XML. Să ne uităm la un exemplu de înregistrare folosind obiectul platformei 1C Înregistrare XML și încărcare a datelor pe articol. Principalele sale avantaje sunt simplitatea codului și viteza de procesare a datelor. Algoritmul server-side pentru scrierea unui fișier XML poate fi reprezentat ca mai mulți pași secvențiali:

  1. Conectați-vă la fișierul xml;
  2. Creăm elemente principale și le scriem date. Dacă doriți să încărcați o cantitate mare de informații într-un fișier XML, atunci în această etapă veți folosi bucle. Fiți atenți și amintiți-vă că cererea de date trebuie făcută înaintea buclei, și nu în ea;
  3. Închideți fișierul.
//deschideți fișierul Nomenclatura.xml și scrieți elementul de cap RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem(„Produse”); //selectați datele pentru înregistrare SelectionFromDirectory = Directories.Nomenclature.Select(); //ciclul în care are loc înregistrarea în timp ce ciclul SelectingFromDirectory.Next() //scrierea datelor noi RecordToFile.RecordStartofElement("Produs"); RecordInFile.RecordAttribute(„Nume”, SelectionFromDirectory.Name); WriteToFile.WriteAttribute("InitialPrice", Line(SelectionFromDirectory.InitialPrice)); WriteToFile.WriteEndElement(); EndCycle; //Închide elementul head și fișierul WriteVFile.WriteEndElement(); WriteInFile.Close();

Mecanismul XDTO în 1C

Dezvoltatorii companiei 1C și-au creat propriul mecanism pentru schimbul de informații prin XML - XDTO (XML Data Transfer Objects). Începând cu versiunea 8.1, platforma are capacitatea de a face schimb de date cu alte sisteme fără a se aprofunda în problemele generării unui fișier XML. Majoritate probleme tehnice 1C preia controlul și tot ce trebuie să facem este să indicăm datele necesare pentru a genera XML-ul. Adevărat, pentru aceasta, dezvoltatorul trebuie să facă unele manipulări în avans.

Pentru a încărca un fișier XML folosind XDTO, trebuie să spunem lui 1C structura fișierului. Se transmite printr-un set de diagrame care pot fi create într-un editor de text sau folosind un program specializat. Fișierul rezultat ar trebui să descrie structura generală și tipurile de date utilizate în fișierul XML. Înainte de a citi sau scrie XML nou, dezvoltatorul trebuie să-și încarce schema în configurația din Pachete XDTO.

În acest caz, vom crea manual un pachet simplu, astfel încât 1C să înțeleagă structura fișierului nostru exemplu. Pentru ca generarea fișierului să se termine cu succes, trebuie să reflectăm în schemă că avem un element head și un atașament cu atribute. Schema creată trebuie exportată într-un fișier în format xsd și transferată împreună cu xml, astfel încât cealaltă parte nu trebuie să se ocupe de structura și să creeze din nou pachetul xdto.


Salvați noul XML în HDD Un algoritm de server similar cu cel anterior va ajuta. Singura diferență este necesitatea de a adăuga date pentru 1 produs în fabrica XDTO - un mecanism special al platformei 8.3 1C. Dacă este nevoie să creați mai multe niveluri de imbricare, va trebui să descrieți fiecare element cap.

//Deschideți fișierul XML RecordVFile = New RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Indica la 1C ce tip de date trebuie create - element head AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); //selectați datele pentru încărcare SelectionFromDirectory = Directories.Nomenclature.Select(); //Adăugați produse individuale la elementul principal în timp ce selectați din ciclul Directory.Next() Product = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Product")); Product.Name = Selectați din Directory.Name; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts.Add(Produs); EndCycle; //scrieți datele și închideți fișierul FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteInFile.Close();

Mecanismele luate în considerare sunt destul de universale şi setare corectă poate rezolva majoritatea problemelor. Cu toate acestea, există destul de multe nuanțe în interacțiunea dintre 1C și XML. Este mult mai eficient să le studiezi în condiții reale, și nu pe sarcini de testare în care procesarea unui fișier XML rezolvă probleme destul de înguste.

O eroare care afirmă că fișierul nu este conform cu schema XSD este obișnuită când sistemul nu poate citi datele din raport. În general, oamenii fac adesea astfel de greșeli și sunt destul de ușor de rezolvat.

În primul rând, trebuie să înțelegeți ce înseamnă o schemă XSD pentru a înțelege exact cu ce nu respectă fișierul dvs.

Deci XSD este limbaj de programare, descrie structura raportului dvs. Structura include, de exemplu, parametri ai conținutului raportului, tipul, aspectul, precum și sintaxa datelor, secțiuni care conțin informații.

Se pare că schema XSD este descrierea structurii raportului dvs, executat într-unul dintre limbajele de programare. Dacă în raport sunt introduse informații incorecte, acestea vor fi pur și simplu ilizibile pentru schemă, motiv pentru care sistemul generează o eroare care afirmă că fișierul nu corespunde schemei XSD.

Aceasta înseamnă că informațiile pe care le-ați introdus nu pot fi citite în limbajul de programare, prin urmare programul le recunoaște ca fiind incorecte.

Este de remarcat faptul că această problemă poate apărea fie din cauza date introduse incorect(de exemplu, ați făcut o greșeală când ați introdus codul TIN al organizației) și din cauza unui format incorect de introducere a datelor (de exemplu, ați indicat spații sau cratime suplimentare).

Cu toate acestea, acesta nu este singurul motiv pentru care fișierul nu este conform cu schema XSD. Această eroare poate apărea și datorită faptului că dispozitivul dvs. are versiune învechită program în care faceți un raport și, de asemenea, dacă autoritatea fiscală în sine nu are instalată o actualizare a programului.

Pentru a rezolva eroarea din schema XSD, va trebui verificați dacă toate datele sunt corecte, pe care le-ați introdus și, de asemenea, verificați dacă a existat o actualizare pentru programul în care lucrați. Cu toate acestea, înainte de a verifica fișierul, uitați-vă cu atenție la textul erorii pe care vi le dă.

Cert este că în unele situații, după textul care spune că fișierul nu se potrivește cu schema, apare două puncte și atunci este indicată cauza acestei probleme. Dacă cauza erorii în sine nu este indicată, actualizați programul la cea mai recentă versiune.

După ce actualizarea este completă, încercați să trimiteți din nou raportul. Dacă, după actualizarea fișierului, dă din nou o eroare, atunci trebuie cauta problema acolo. Dacă lucrați în programul 1C, atunci puteți verifica fișierul folosind un buton special numit „verificare pe Internet”.

Dacă cele două puncte anterioare nu v-au ajutat să identificați problema, atunci verificați dacă ați completat toate câmpurile obligatorii, dacă ați introdus corect toate datele, deoarece multe dintre ele trebuie completate cu numere, caz în care este foarte usor sa faci o greseala.

În plus, trebuie să verificați toate câmpurile pentru spații suplimentare, cratime și alte caractere. Dacă ați verificat întregul fișier și nu puteți găsi o eroare sau dacă ați reușit să găsiți o eroare, dar nu o puteți remedia, atunci cu siguranță ar trebui să contactați suportul tehnic programul cu care faceți raportul sau dezvoltatorilor acestuia.

Pentru a rezolva această problemă cu ajutorul dezvoltatorilor de programe, va trebui să trimiteți câteva documente, precum fișierul propriu-zis în care se află raportul, protocolul de notificare pe care vi-l oferă computerul.

În plus, dezvoltatorii vă pot cere unele informații despre organizația dvs., precum și alte informații pe care le consideră necesare; trebuie să le furnizați, altfel problema nu va fi rezolvată.

Deci, dacă încercați să trimiteți un raport autorității fiscale, dar fișierul dă o eroare care spune că nu respectă schema XSD, aceasta înseamnă că raportul dvs. nu poate fi trimis, deoarece programul nu poate citi datele pe care le-ați introdus.

Dar nu ar trebui să intri în panică, deoarece în cele mai multe cazuri această problemă rezolvat destul de simplu si repede. În plus, dacă ați trimis raportul la timp, dar nu a fost acceptat din cauza formatului incorect, atunci fiscului nu are dreptul la amendă pentru că nu ați depus raportul la timp. În primul rând, acordați atenție textului erorii în sine; poate că motivul apariției acesteia este deja indicat acolo.

De fapt, pot exista doar două motive. Sau îl aveți instalat pe dispozitiv? versiune veche programe, cu care faceți un raport, în acest caz este ușor să rezolvați problema, trebuie doar să descărcați cel mai Ultima actualizare, poate fi găsit de obicei pe site-ul web al programului pe care îl utilizați. Al doilea motiv poate fi faptul că ați completat incorect unele date sau nu ați completat deloc niciun câmp.

În acest caz, trebuie să vă verificați fișierul, dar trebuie să vă amintiți că programul poate chiar să îl considere o eroare spatiu ciudat. Dacă nu puteți găsi cauza erorii, puteți contacta suport tehnic programe, în care specialiștii vă vor ajuta cu siguranță la rezolvarea problemei dvs.