Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • Shtëpi
  • Hekuri
  • Shtypet objekti DataSet. Leximi dhe shkrimi i dokumenteve XML

Shtypet objekti DataSet. Leximi dhe shkrimi i dokumenteve XML

Platformat: 1C: Ndërmarrja 8.3, 1C: Ndërmarrja 8.2, 1C: Ndërmarrja 8.1
Konfigurimet: Të gjitha konfigurimet

2012-11-25
34938

XDTO është një mekanizëm që është i nevojshëm gjatë krijimit dhe ekzekutimit të shërbimeve në internet. Paketat XDTO përdoren për të përshkruar strukturën e skedarit të kërkuar XML të nevojshëm për të modifikuar të dhënat nga dhe në XML.

XML është një mënyrë për të përshkruar një strukturë komplekse të dhënash në një skedar teksti të zakonshëm. Ai përshkruan jo vetëm vetë të dhënat, por edhe fushat ku ato ruhen.
Këtu është një shembull bazë i skedarit XML:

XML për dummies

Emrat (etiketat) të përdorura në këtë skedar - rrënjë, lista, emri, el - mund të jenë plotësisht arbitrare. Rregullat themelore për krijimin e një skedari XML janë menjëherë të dukshme nga struktura e tij:
- Është e mundur të folezohen elementë;

Fillimi i elementit<Имя>, mbarimi është me të njëjtin emër, por me shtimin e një karakteri "/".

Më poshtë mund të vendosen brenda elementit:
- Elementet e mbivendosur;
- Teksti.

Çdo element mund të ketë veti (atribute), tregohet vlera dhe emri i tyre. Ndalohet përdorimi i ndonjë karakteri në XML, sepse disa prej tyre përdoren drejtpërdrejt për XML, për shembull "<» и «>" Metoda e përshkrimit XML është shumë e përshtatshme për t'u përdorur kur shkëmbeni me programe të tjera të palëve të treta dhe përdoret në mekanizmin e shkëmbimit të të dhënave 1C.

Hapësira e emrave

Një skedar XML fillon me një kokë që përshkruan versionin XML, kodimin, etj... Titulli në XML nuk është plotësisht i nevojshëm dhe shumë shpesh thjesht nuk përdoret. Kreu gjithashtu mund të përcaktojë një hapësirë ​​emri.

Skedarët XML transmetohen përmes Internetit dhe lexohen nga shumë programe të ndryshme. Ata perceptohen - kjo do të thotë se ka një mbrojtje në kodin e tyre - nëse hasni në një emër të caktuar elementi në një skedar XML, atëherë duhet ta perceptoni atë në këtë mënyrë dhe të bëni pikërisht këtë. Prandaj, kur përdorim etiketën IBM, ka një shans mjaft të lartë që një program tjetër të mendojë se ky është IBM, i njohur për të, ndërsa ne nënkuptuam diçka tonën me këtë.

Për të parandaluar këtë dhe për të treguar qartë ndryshimin midis IBM-së tonë dhe të gjithë të tjerëve, është e mundur të specifikoni emrin e hapësirës së emrave në skedar - një prefiks i përdorur përpara emrit të elementeve.

Ju mund të përcaktoni një hapësirë ​​emri si më poshtë - xmlns:Prefiksi (NameSpace) = "URL", shembull:
xmlns:store = "http://site.ru"

Pse është e nevojshme një URL? Ata që kanë menduar tashmë për të dhe shikojnë më tej - natyrisht, hapësira e emrave që shpikëm mund të mos jetë gjithashtu unike, d.m.th. mund ta përdorë edhe kushdo tjetër. Kjo është arsyeja pse specifikohet një identifikues i veçantë unik, i cili gjithashtu identifikon ekzekutuesin e hapësirës së emrave.

Natyrisht, supozohet se personi që ka specifikuar hapësirën e emrave është plotësisht i sinqertë. Ai tregon faqen e tij dhe nuk përdor shumë hapësira të ndryshme emrash me të njëjtin sajt. Si rregull, ata specifikojnë si URL-në e faqes ashtu edhe URL-në e një dosjeje specifike në sajt, në mënyrë që të jetë e mundur të krijohet një hapësirë ​​tjetër emri në çdo dosje në këtë sajt, për përdorimin e saj në çdo situatë.

DOM

Një objekt është një strukturë specifike e të dhënave që është e pavarur dhe përmban të gjitha të dhënat e saj.

Për shkak të faktit se skedari XML përshkruan të dhëna të strukturuara, domethënë të dhëna në formën e një strukture që ka vetitë e veta dhe kështu me radhë, në përputhje me rrethanat mund t'i shikoni ato si objekte. Shembulli i mësipërm mund të përdorë një objekt LIST me veti dhe një element të ndërthurur.

DOM është një mënyrë për të trajtuar një skedar XML jo si tekst në një format specifik, por si një grup objektesh me fusha, veti dhe më shumë.

Disavantazhet e kësaj metode të punës përfshijnë kërkesat e larta për performancën e PC, sepse DOM përpunon (formon një strukturë në formën e objekteve) të gjithë skedarin XML menjëherë, pavarësisht nga madhësia e tij, dhe thjesht nuk mund të "tretë" skedarë të mëdhenj (më shumë se 4 GB).

Për të analizuar skedarët e mëdhenj, përdoret SAX, kjo metodë e analizimit të skedarit bazohet në leximin e njëpasnjëshëm të skedarit dhe jo në ndërtimin e të gjithë strukturës së tij menjëherë .

Përshkrimi i skedarit XML

Nëse po përdorim vazhdimisht një skedar të një strukture të caktuar për të komunikuar midis 2 programeve, atëherë ndoshta do të dëshironim sa vijon:

Kështu që përdoren emra specifikë;
- Që përdoren vetëm ato elemente që presim (të cilët “duhet të ekzistojnë për t'u përdorur në shkëmbim”);
- Kështu që atributet tregojnë vetëm ato lloje që presim (numër, varg, etj.).

Formatet e mëposhtme të skedarëve janë të disponueshëm për të përshkruar strukturat XML (të ruajtura gjithashtu në një skedar teksti të thjeshtë):

Zgjerimi DTD është Përkufizimi i Llojit të Dokumentit;
- Shtesa XSD është XML Shema.

Këto formate përshkruajnë se si duhet të jetë dokumenti. Procedura për kontrollin e konformitetit të XML, e cila përshkruhet në një skedar të tillë standard, quhet verifikim.

XDTO

XDTO është një objekt 1C që ju lejon të shtoni një përshkrim të një skedari XML në konfigurim. Më saktësisht, nuk është vetë skedari ai që përshkruhet, por struktura të caktuara XML.

Për të treguar llojet që mund të përdoren, përdoret një listë, një bibliotekë tipesh, e quajtur fabrika XDTO. Kjo fabrikë specifikon jo vetëm lloje të thjeshta (datë, varg, numër) që përdoren në programe të tjera, gjuhë, etj., por edhe lloje 1C që përdoren në 1C dhe në një konfigurim specifik.

Fabrika XDTO përfshin disa paketa. Llojet fillestare përshkruhen në një paketë të quajtur www.w3.org Llojet e të dhënave në konfigurim përshkruhen në paketë http://v8.1c.ru/8.1/data/enterprise/current-config

Këto lloje emërtohen në përputhje me emrat në konfigurues me shtimin e formës angleze (CatalogRef, DocumentObject, CatalogObject, DocumentRef), për shembull:

Objekti i Katalogut.Llogaritë

Shtimi i një pakete XDTO

Kemi ardhur te tema e XSLT - një mënyrë për të transformuar skedarët XML në diçka tjetër, siç janë skedarët HTML. Tema e XML është jashtëzakonisht e madhe dhe mbi të është shkruar më shumë se një libër.

Detyra jonë është të kuptojmë se XDTO na lejon të përshkruajmë elementët që duhet të jenë në paketën XML që duhet të lexohet ose gjenerohet. Paketat XDTO janë të vendosura në konfigurimin 1C dhe në degën e Përgjithshme - paketat XDTO.

Është e mundur të shtoni një paketë XDTO në 1C me dorë, por është më mirë të merrni skedarin përkatës XSD me një përshkrim të detajuar të gatshëm të skemës. Një përshkrim i skemës së objektit XSD të çdo konfigurimi mund të merret duke klikuar në degën e paketave General - XDTO dhe duke zgjedhur artikullin "Eksporto skemën e të dhënave të konfigurimit XML" në meny.

Ju mund ta modifikoni këtë skedar teksti në Windows Notepad, duke hequr objektet e panevojshme (të panevojshme për ju). Mund të shtoni një skemë të gatshme XSD në 1C duke klikuar me të djathtën në degën e paketave General - XDTO dhe duke zgjedhur "Import schema XML" nga menyja.

Puna me XDTO në 1C nënkupton konvertimin e vlerave nga XML në XML. Kjo bëhet duke përdorur objekte të gjuhës 1C Lexoni XML/XMLWrite.

Kur punoni me XDTO, duhet të specifikoni paketën me të cilën po punoni drejtpërdrejt. Mund të jetë ose një paketë standarde (shih diskutimin e mësipërm, XDTO) ose një paketë e shtuar në konfigurim.

Paketa identifikohet nga URL-ja që është specifikuar në paketë. Ekzistojnë dy mënyra kryesore të punës:

Serializimi - ndryshimi automatik i vlerave nga XML në 1C dhe anasjelltas;

Plotësimi i fushave të një objekti, krijimi i tij dhe shkrimi i tij në XML (si dhe leximi nga XML dhe më pas leximi i fushave të tij).

Le të imagjinojmë një shembull të serializimit të vlerave:

Serializer = Serializer i ri XDTO (Fabrika XDTO);
Skedari XML = Regjistrim i ri XML();
XMLFile.OpenFile ("Emri i skedarit");
Serializer.WriteXML(XMLFile, 1C Value);

Funksioni i anasjelltë është Serializer. XMLReading (), përdoret nga objektet 1C të gjuhës XML Reading.
Shembull i shkrimit/leximit të një objekti:

Drejtoria XDTOObject = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Counterparties"));
PlotësoniPropertyValues(DirectoryXDTOObject, Directory.Counterparties.FindByProperties("Name", "Ivanov").Link);

Pastaj mund ta shkruani objektin e krijuar në XML në të njëjtën mënyrë si serializimi. Kur lexoni XML në të njëjtën mënyrë siç u diskutua më lart, mund të mos kthehet një vlerë XDTO, por vetëm një objekt i tillë.

Kur krijoni një objekt XDTO, krijohet një strukturë që është e ngjashme me strukturën e një objekti konfigurimi (përveç nëse, sigurisht, krijoni një objekt konfigurimi nga paketa e specifikuar në shembullin e mësipërm). Fushat tipike (emri, kodi, etj.) janë në anglisht, dhe objekti krijohet bosh, kështu që duhet të plotësohet, secila fushë veç e veç ose duke përdorur funksionin FillPropertyValues

Një gabim që thotë se skedari nuk përputhet me skemën XSD është i zakonshëm kur sistemi nuk mund të lexojë të dhëna nga raporti. Në përgjithësi, njerëzit shpesh bëjnë gabime të tilla, dhe ato janë mjaft të lehta për t'u përballur.

Së pari, duhet të kuptoni se çfarë do të thotë një skemë XSD për të kuptuar se me çfarë saktësisht skedari juaj nuk përputhet.

Pra, XSD është gjuhë programimi, ai përshkruan strukturën e raportit tuaj. Struktura përfshin, për shembull, parametrat e përmbajtjes së raportit, llojin, pamjen, si dhe sintaksën e të dhënave, seksione që përmbajnë informacion.

Rezulton se skema XSD është përshkrimi i strukturës së raportit tuaj, ekzekutuar në një nga gjuhët e programimit. Nëse informacioni i pasaktë futet në raport, ai thjesht do të jetë i palexueshëm për skemën, kjo është arsyeja pse sistemi gjeneron një gabim duke deklaruar se skedari nuk korrespondon me skemën XSD.

Kjo do të thotë që informacioni që keni futur nuk mund të lexohet në gjuhën e programimit, prandaj programi e njeh atë si të pasaktë.

Vlen të përmendet se ky problem mund të lindë ose për shkak të të dhëna të futura gabimisht(për shembull, keni bërë një gabim kur keni futur TIN-in e organizatës) dhe për shkak të formatit të pasaktë për futjen e të dhënave (për shembull, keni treguar hapësira shtesë ose viza).

Megjithatë, kjo nuk është arsyeja e vetme që skedari nuk përputhet me skemën XSD. Ky gabim mund të ndodhë edhe për faktin se një version i vjetëruar i programit në të cilin po bëni raportin është instaluar në pajisjen tuaj, si dhe nëse vetë autoriteti tatimor nuk ka instaluar një përditësim të programit.

Për të zgjidhur gabimin në skemën XSD, do t'ju duhet kontrolloni që të gjitha të dhënat janë të sakta, që keni futur, dhe gjithashtu kontrolloni nëse ka pasur një përditësim për programin ku po punoni. Megjithatë, përpara se të kontrolloni skedarin, shikoni me kujdes tekstin e gabimit që ju jep.

Fakti është se në disa situata, pas tekstit që thotë se skedari nuk përputhet me skemën, ka një dy pika dhe më pas tregohet shkaku i këtij problemi. Nëse vetë shkaku i gabimit nuk tregohet, përditësoni programin në versionin më të fundit.

Pasi të përfundojë përditësimi, provo të dorëzosh sërish raportin tënd. Nëse pas përditësimit të skedarit përsëri jepet një gabim, atëherë duhet kërkoni problemin atje. Nëse punoni në programin 1C, atëherë mund ta kontrolloni skedarin duke përdorur një buton të veçantë të quajtur "kontrollo në internet".

Nëse dy pikat e mëparshme nuk ju ndihmuan të identifikoni problemin, atëherë kontrolloni nëse i keni plotësuar të gjitha fushat e kërkuara, nëse i keni futur saktë të gjitha të dhënat, sepse shumë prej tyre duhet të plotësohen me numra, në këtë rast është shumë e lehtë për të bërë një gabim shtypi.

Përveç kësaj, duhet të kontrolloni të gjitha fushat për hapësira shtesë, viza dhe karaktere të tjera. Nëse keni kontrolluar të gjithë skedarin dhe nuk mund të gjeni një gabim, ose nëse keni arritur të gjeni një gabim, por nuk mund ta rregulloni atë, atëherë duhet patjetër kontaktoni mbështetjen teknike programin me të cilin bëni raportin ose zhvilluesit e tij.

Për të zgjidhur këtë problem me ndihmën e zhvilluesve të programit, do t'ju duhet të dërgoni disa dokumente, si p.sh. vetë skedarin në të cilin ndodhet raporti, protokollin e njoftimit që ju jep kompjuteri.

Për më tepër, zhvilluesit mund t'ju kërkojnë disa informacione për organizatën tuaj, si dhe informacione të tjera që ata mendojnë se janë të nevojshme, përndryshe problemi nuk do të zgjidhet.

Pra, nëse po përpiqeni të dërgoni një raport në organin tatimor, por skedari jep një gabim duke thënë se nuk përputhet me skemën XSD, kjo do të thotë se raporti juaj nuk mund të dërgohet, sepse programi nuk mund t'i lexojë të dhënat që keni futur.

Por nuk duhet të frikësoheni, sepse në shumicën e rasteve ky problem zgjidhur fare thjesht dhe shpejt. Përveç kësaj, nëse e keni dërguar raportin në kohë, por nuk është pranuar për shkak të formatit të pasaktë, atëherë zyra e taksave nuk ka të drejtë për gjobë ju për mos dorëzimin e raportit në kohë. Para së gjithash, kushtojini vëmendje vetë tekstit të gabimit, ndoshta arsyeja e shfaqjes së tij është treguar tashmë atje.

Në fakt, mund të ketë vetëm dy arsye. Apo e keni të instaluar në pajisjen tuaj? versioni i vjetër i programit, me të cilin bëni një raport, në këtë rast problemi zgjidhet lehtë, mjafton të shkarkoni përditësimin më të fundit, zakonisht ai mund të gjendet në faqen e internetit të programit që po përdorni. Arsyeja e dytë mund të jetë se keni plotësuar gabimisht disa të dhëna, ose nuk keni plotësuar asnjë fushë fare.

Në këtë rast, duhet të kontrolloni skedarin tuaj, por duhet të mbani mend se programi madje mund ta konsiderojë atë si një gabim hapësirë ​​shtesë. Nëse nuk mund ta gjeni shkakun e gabimit, atëherë mund të kontaktoni mbështetjen teknike të programit, ku specialistët patjetër do të ndihmojnë në zgjidhjen e problemit tuaj.

Formati XML është shumë popullor kur shkëmbehen dokumente të ndryshme teksti midis sistemeve të informacionit. Aftësia për të krijuar një strukturë unike për dokumentet e lejon atë të përdoret në shumë fusha - bibliotekat elektronike, WEB, import/eksportim dhe shumë të tjera. Pa aftësinë për të punuar me lehtësi me këtë format, sistemet 1C nuk do të kishin fituar një popullaritet të tillë. Meqenëse 1C përdor në mënyrë aktive teknologjitë WEB, çdo zhvillues duhet të jetë në gjendje të lexojë XML dhe të shkruajë informacion në të.

Përfaqësimi dhe leximi i skedarit XML

Një nga avantazhet kryesore të gjuhës së shënjimit XML është struktura dhe sintaksa e saj mjaft e përshtatshme dhe intuitive. Kur e krijuan atë, autorët vendosën një qëllim për të krijuar një gjuhë shënjimi që do të ishte e lehtë për t'u lexuar si nga njerëzit ashtu edhe nga kompjuterët. Sot, XML është zhvilluar gjerësisht në formate të tjera, por mbetet e njohur dhe e përdorur gjerësisht. Struktura e skedarit XML është ndërtuar sipas skemës së mëposhtme:

Për të shqyrtuar një shembull të importimit të të dhënave në 1C, skedari i paraqitur më sipër do të jetë i mjaftueshëm. Në mënyrë që procedura e shkruar të mund të lexojë skedarin XML, mjafton të kaloni shtegun për vetë skedarin në të. Kjo mund të bëhet përmes ndërfaqes, duke i lejuar përdoruesit të specifikojnë vetë skedarin, ose me përpunim të koduar në tekst.

Një nga mënyrat e njohura për të punuar me XML me madhësi deri në 100 MB në 1C është përdorimi i Modelit të Objektit të Dokumentit (DOM). Kuptimi i tij është të përpunojë në mënyrë sekuenciale të gjitha nyjet e dokumenteve të përfaqësuara në XML. Në gjuhën e integruar 1C, ky algoritëm duket si ky:

  1. Deklarata e mekanizmave me të cilët lexohet skedari XML; Lak për të përshkuar nyjet;
  2. Leximi i të dhënave dhe atributeve në një nyje;
  3. Prodhimi i informacionit. Nëse është e nevojshme, në këtë fazë shkrimi mund të ndodhë në variabla ose drejtpërdrejt në tabelat e nevojshme;
  4. Kompletimi i mekanizmit.
Procedura &OnServer ReadOnServer(PathToFile) //deklarimi i mekanizmave Mekanizmi i leximit = New ReadingXML;

Reader.OpenFile(PathToFile);

Builder = New BuilderDOM;

  1. Document = Ndërtues.Lexo(Lexues);
  2. Ne krijojmë elemente të kokës dhe shkruajmë të dhëna në to. Nëse dëshironi të ngarkoni një sasi të madhe informacioni në një skedar XML, atëherë në këtë fazë do të përdorni sythe. Jini të kujdesshëm dhe mbani mend se kërkesa e të dhënave duhet të bëhet përpara ciklit, dhe jo në të;
  3. Mbyll skedarin.
//hap skedarin Nomenclatura.xml dhe shkruaj elementin kokë RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem("Produkte"); //zgjidhni të dhënat për rekordin SelectionFromDirectory = Directories.Nomenclature.Select(); //cikli në të cilin ndodh regjistrimi gjatë ciklit SelectingFromDirectory.Next() //shkrimi i të dhënave të reja RecordToFile.RecordBeginningElement("Produkt");

RecordInFile.RecordAttribute("Emri", SelectionFromDirectory.Name);

WriteToFile.WriteAttribute("InitialPrice", Line(SelectionFromDirectory.InitialPrice));

WriteToFile.WriteEndElement(); Cikli i Fundit; //Mbyll elementin head dhe skedarin WriteVFile.WriteEndElement(); WriteInFile.Close();

Mekanizmi XDTO në 1C


Një algoritëm server i ngjashëm me atë të mëparshëm do t'ju ndihmojë të ruani XML-në e re në hard diskun tuaj. Dallimi i vetëm është nevoja për të shtuar të dhëna për 1 produkt në fabrikën XDTO - një mekanizëm i veçantë i platformës 8.3 1C. Nëse ka nevojë për të krijuar më shumë nivele foleje, do t'ju duhet të përshkruani çdo element kokë.

//Hap skedarin XML RecordVFile = New RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Tregoni në 1C se çfarë lloji të të dhënave duhet të krijohen - elementi i kokës AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Produktet")); //zgjidh të dhënat për ngarkim SelectionFromDirectory = Directories.Nomenclature.Select(); //Shto produkte individuale në elementin kokë Ndërsa Zgjidh nga cikli Directory.Next() Product = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Produkt"));

Emri i produktit = Zgjidh nga Drejtoria.Emri;

Produkti.Çmimi Fillestar = String(ZgjedhjaNgaDirektoria.Çmimi Fillestar);

AllProducts.Add(Product); Cikli i Fundit; //shkruani të dhënat dhe mbyllni skedarin FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteInFile.Close();

Mekanizmat e konsideruar janë mjaft universalë dhe, nëse konfigurohen siç duhet, mund të zgjidhin shumicën e problemeve. Sidoqoftë, ka shumë nuanca në ndërveprimin midis 1C dhe XML. Është shumë më efektive t'i studiosh ato në kushte reale, dhe jo në detyra testimi në të cilat përpunimi i një skedari XML zgjidh probleme mjaft të ngushta.

Ky kapitull do t'ju tregojë se si të shkruani skemat XML. Do të mësoni gjithashtu se diagrami mund të shkruhet në mënyra të ndryshme.
Dokument XML
Le të shohim këtë dokument XML të quajtur "shiporder.xml":

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="shiporder.xsd">

John Smith
Ola Nordmann


Langt 23
4000 Stavanger
1
10.90


Norvegjia
1
9.90

Perandoria Burleske

Botim special Fshihe zemrën .

Krijimi i një skeme XML

Tani duam të krijojmë një skemë për dokumentin XML të mësipërm.

Do të fillojmë duke hapur një skedar të ri, të cilin do ta quajmë "shiporder.xsd". Për të krijuar një skemë, ne thjesht mund të ndjekim strukturën në dokumentin XML dhe të përcaktojmë çdo element ashtu siç e gjejmë. Ne do të fillojmë me një deklaratë standarde XML e ndjekur nga një element xs:schema që përcakton skemën:



...

Në skemën e mësipërme ne përdorim hapësira standarde të emrave (xs), dhe URI-ja e lidhur me këtë hapësirë ​​emri është përkufizimi i gjuhës së skemës, e cila ka vlerën standarde http://www.w3.org/2001/XMLSchema.

Më pas, ne duhet të përcaktojmë një element "porosi i anijes". Ky element ka një atribut dhe përmban elementë të tjerë, kështu që ne e trajtojmë atë si një lloj kompleks. Elementet fëmijë të një elementi "shiporder" rrethohen nga një xs: element sekuence që përcakton një sekuencë të renditur nënelementesh:




...


Më pas duhet të përcaktojmë elementin "orderperson" si një tip të thjeshtë (pasi nuk përmban asnjë atribut apo element tjetër). Lloji (xs:string) është i prefiksuar me një prefiks të hapësirës së emrit të lidhur me Skemën XML, e cila specifikon një lloj të dhënash të paracaktuar të skemës:










Me ndihmën e skemave mund të përcaktojmë numrin e dukurive të mundshme për një element me atribute MaxOccurs dhe MinOccurs. MaxOccurs specifikon numrin maksimal të dukurive për një element dhe MinOccurs specifikon numrin minimal të dukurive për një element. Vlera e paracaktuar për MaxOccurs dhe MinOccurs është 1!

Tani mund të përcaktojmë elementin "artikull". Ky element mund të shfaqet disa herë brenda një elementi "shitje". Kjo përcaktohet duke vendosur atributin maxOccurs të elementit "artikull" në "unbounded", që do të thotë se mund të ketë aq dukuri të elementit "artikull" sa dëshiron autori. Vini re se elementi "shënim" është opsional. Ne e përcaktuam këtë duke vendosur atributin minOccurs në zero:










Tani mund të deklarojmë atributin "shiporder" të elementit. Meqenëse ky është një atribut i kërkuar, ne specifikojmë use="required".

Shënim: Deklaratat e atributeve duhet të jenë gjithmonë të fundit:

Këtu është një listë e plotë e skedarit të skemës së quajtur "shiporder.xsd":





























Qarqe të veçanta

Metoda e mëparshme e projektimit është shumë e thjeshtë, por mund të jetë e vështirë për t'u lexuar dhe mbajtur kur dokumentet janë komplekse.

Metoda tjetër e projektimit bazohet në përcaktimin e të gjithë elementëve dhe atributeve dhe më pas referencës së tyre duke përdorur atributin ref.

Këtu është modeli i ri i skedarit skematik ("shiporder.xsd"):








































Përdorimi i llojeve të emërtuara

Metoda e tretë e projektimit përcakton klasat ose llojet, e cila lejon që përkufizimet e elementeve të ripërdoren. Kjo bëhet duke emërtuar elementët simpleTypes dhe complexTypes, dhe më pas duke iu referuar atyre përmes atributit tip të elementit.

Këtu është dizajni i tretë i skedarit skematik ("shiporder.xsd"):

































Elementi i kufizimit tregon se lloji i të dhënave është nxjerrë nga hapësira e emrave të tipit të të dhënave W3C XML Schema. Pra, fragmenti i mëposhtëm do të thotë që vlera e elementit ose atributit duhet të jetë vlera e një vargu:

Elementi i kufizimit përdoret më shpesh për të aplikuar kufizime në elementë. Shikoni rreshtat e mëposhtëm nga diagrami i mësipërm:





Kjo specifikon që vlera e elementit ose atributit duhet të jetë një varg, duhet të jetë saktësisht gjashtë karaktere për rresht dhe ato karaktere duhet të jenë një numër midis 0 dhe 9.

U shfaq detyra për të krijuar një skedar XML bazuar në një skemë XSD. Kërkimi në forume çoi në një numër të madh diskutimesh në lidhje me një keqkuptim të procesit, dhe vetëm disa artikuj që shpjegojnë thelbin. Njerëzit bënin pyetje, luftuan me zgjidhjen, por pasi problemi u dorëzuan atyre, ata thjesht u zhdukën pa përshkruar mekanizmin. Kjo nxiti krijimin e një përshkrimi të thjeshtë të procesit.
P.S. Mos u beto shumë, qëllimi im nuk ishte të krijoja një lloj artikulli shkencor duke përdorur në mënyrë rigoroze terminologjinë e saktë, por thjesht të ndihmoja të hidhnim hapin e parë drejt kuptimit të mekanizmit shumë të fuqishëm të shkëmbimit nëpërmjet XML.
P.P.S. Më duhet të bëj menjëherë një rezervë që skedari i ngarkimit i bashkangjitur artikullit është vetëm një shabllon që krijon vetëm një pjesë të strukturës së kërkuar të skedarit XML, sepse Puna ime me këtë shkarkim ishte mjaft edukative në natyrë (kopjimi i dokumentit të mëparshëm të eksportit në faqen e internetit të FCS dhe shkarkimi vetëm i pjesës tabelare të Produkteve nga një skedar Excel dukej se ishte një zgjidhje më efektive) dhe mungesa e kohës nuk e lejonte për të përfunduar krijimin e të gjithë strukturës, bazuar vetëm në konsideratat e perfeksionizmit.

Pra, pasi u regjistrova në faqen e internetit të FCS, u bë e qartë se për të krijuar dokumente të Raportimit Statistikor mbi eksportet, është e nevojshme të shkarkoni të dhëna nga dokumentet e Menaxhimit të Tregtisë së Shitjeve të Mallrave dhe Shërbimeve dhe të krijoni një skedar për shkarkim.

Ekzistojnë dy mundësi të mundshme shkarkimi.

Së pari: ngarkimi i pjesës tabelare me Produktet nga një skedar Excel (ky opsion u zgjodh si opsion pune, sepse kishte përparësitë që nuk kishte nevojë të shqetësoheshit me përpunimin e "Header"-it të dokumentit, por thjesht mund të kopjoni i mëparshmi, duke e ndryshuar atë në "Header" "ajo që kërkohej).

Së dyti: krijimi i një skedari XML sipas skemës së shkarkuar nga faqja e internetit e FCS në formën e një "Albumi të formateve për format e dokumenteve elektronike". Albumi përmban një numër mjaft të madh të skemave XSD. Ata gjetën një diagram të "Formulari Statistikor i Kontabilitetit të Lëvizjes së Mallrave" dhe skedarë shtesë me përshkrime të llojeve për të. Diagramet i janë bashkangjitur artikullit në arkiv me përpunim.

Për të parë skemat XSD, ne përdorëm pa pagesë Microsoft XML Notepad 2007.

Imazhi tregon skedarin kryesor me skemën XSD "Formulari statistikor për llogaritjen e lëvizjes së mallrave". Imazhi nxjerr në pah blloqet kryesore të skemës XSD që ne kemi nevojë për ta kuptuar atë.

Nga diagrami është e qartë se duhet të marrim një skedar XML të mbushur me strukturën e specifikuar në degën "xs:element" të llojit StaticFormType.

Struktura mund të jetë mjaft komplekse (si në rastin tonë). Me përshkrime të tipit të pranishëm direkt në degë, të vendosura në një degë të veçantë, apo edhe të vendosura në një skedar tjetër.

Kjo strukturë ka një lloj StaticFormType, i cili nga ana e tij përbëhet nga një tip bazë BaseDocType, një grup objektesh të llojeve të ndryshme dhe atribute teksti.

Lloji bazë BaseDocStyle përcaktohet në një skedar tjetër (dhe hapësirë ​​emri)
.

Ky skedar përmban shumë lloje që nuk përdoren në rastin tonë.

Tani le të kalojmë në punën në 1C. Me pak fjalë, ajo që duhet të bëjmë zbret në sa vijon:

1. Fabrika XDTO po krijohet

OurFactoryXDTO = CreateFactoryXDTO(ArrayFullFileNamesWithXSDSchemas);

2. Në fabrikën XDTO krijohen të gjitha llojet komplekse të të dhënave, të cilat më pas do t'i plotësojmë në skedarin e krijuar XML:

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

Llojet e të dhënave të përfshira në një lloj të caktuar mund të merren nga koleksioni i vetive të tij:

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

3. Kur të gjitha llojet komplekse të të dhënave janë krijuar, ne krijojmë një strukturë skedari XML bazuar në to, të përbërë nga objekte të Fabrikës XDTO:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType);

// koleksion me dokumente NewDocuments = MyFactoryXDTO.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "Faturë"); NewDocuments.PrDocumentNumber = MyFactoryXDTO.Create(PrDocumentNumberType, "123-numër"); NewDocuments.PrDocumentDate = MyFactoryXDTO.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(NewDocuments);

Në të njëjtën kohë, plotësoni detajet elementare (llojet e thjeshta).

4. Dhe së fundi, ne shkarkojmë gjithçka nga Fabrika XDTO në një skedar:

Skedari XML = Hyrja e re XML(); FileXML.OpenFile (Emri i skedarit); XML File.WriteXML Deklarata(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Close();

P.S. Arkivi përmban një skedar shabllon ngarkimi në XML (krijohen vetëm disa detaje, duke pasqyruar të gjitha rastet kur skedari është plotësuar) dhe skema XSD.

Zhzip të gjithë skedarët në një drejtori të caktuar.

XML do të krijohet në të.

Nuk ka asnjë nisje nga një flash drive në BIOS - si ta konfiguroni atë?