1c 8.2 xml létrehozása xsd alapján. Beírt DataSet objektum. XML dokumentumok olvasása és írása

01.11.2019 Biztonság

Megjegyzés: XML adatsémák (XSD). XSD-séma létrehozása a környezetben Vizuális Stúdió.HÁLÓ. Beírt DataSet objektum létrehozása. Információszerzés egy DataSet objektum szerkezetéről. XML dokumentumok és XSD sémák betöltése tipizált és normál DataSet objektumokba. ReadXml és ReadXmlSchema metódusok. Egy tipizált és szabályos DataSet objektum tartalmának és szerkezetének rögzítése. WriteXml és WriteXmlSchema metódusok

Beírt DataSet objektum. XML dokumentumok olvasása és írása

XML adatsémák (XSD)

Adatsémák 1 Az XML sémadokumentum pontos fordítása -< XML dokumentum séma> azonban továbbra is az "XML adatséma" kifejezést fogjuk használni. Az XSD (XML Schema Document, XSD) olyan alternatív módon XML dokumentumok készítésének szabályai. A DTD-kkel összehasonlítva a sémák hatékonyabbak összetett adatstruktúrák meghatározásában, egyértelműbb módot adnak egy nyelv nyelvtanának leírására, és könnyen modernizálhatók és bővíthetők. Az XSD-séma a következő információkat tartalmazhatja:

  • adatelemek közötti kapcsolatok ábrázolása, hasonlóan a relációs adatbázis táblái közötti idegen kulcsú kapcsolatokhoz;
  • az elsődleges kulcshoz hasonló egyedi azonosítók megjelenítése;
  • típus specifikáció minden egyes elemhez és attribútumhoz tartozó adatok egy XML dokumentumban.

Adatséma létrehozásához a Visual Studio .NET-ben a főmenüben lépjen a Fájl\Új\Fájl elemre, és válassza ki az XML-séma elemet a sablonok listájából (lásd: 11.3. ábra). Megjelenik egy ablak, amely a következőt írja: „A kezdéshez húzzon objektumokat a Server Explorer vagy Toolbox ablakból a munkaterületre (tervezési területre), vagy kattintson a jobb gombbal” (11.1. ábra):


Rizs. 11.1.

A lényeg az, hogy tervezési módban vagyunk. Váltson kód módba a gombra kattintva (XML):

Az első sor az ismerős jelzés, hogy a séma egy XML dokumentum, amelynek gyökéreleme xs:schema . Az xs előtag: minden sémaelemet előtagoz, hogy jelezze a névterét. A második sor a séma hosszú, részletes és gyakran teljesen felesleges leírását tartalmazza (hasonlítsa össze a HTML oldalak hasonló kódjával). A helyes működéshez elegendő a következő ábrázolásra korlátozni magát:

A stúdió beépített vizualizációs eszközei azonban feltételezik ennek a „fejlécnek” a jelenlétét, ezért nem szabad eltávolítani. Egy adott XML-dokumentumot leíró séma létrehozása a Visual Studio .NET-ben meglehetősen egyszerű feladat. Hozzuk létre a következő XMLEasy.xml dokumentumot:

1

Átváltunk az (Adatok) fülre, és csak egy bejegyzést látunk (11.2. ábra).


Rizs. 11.2.

A dokumentumot leíró sémát többféleképpen is létrehozhat: a főmenüben válassza az „XML\Séma létrehozása” menüpontot (11.3. ábra, A), XML módban a helyi menü jelölje ki ugyanazt az elemet (11.3. ábra, B), Data módban válassza ki ezt az elemet a helyi menüben (11.3. ábra, C), végül Data módban kattintson az XML eszköztár gombjára (11.3. ábra, D) .


Rizs. 11.3.

A dokumentum vázlata mindenesetre táblázat formájában jelenik meg (11.4. ábra). Hagyjuk most a séma módot, és váltsunk (XML) módba.


Rizs. 11.4.

A környezet generált egy XML kódot, amely leírja a dokumentum szerkezetét:

Ez magában foglalja a séma további manipulálásához szükséges leírást is az ADO .NET objektumokkal. A forrás XMLEasy.xml dokumentumban az adatsémára mutató hivatkozás jelent meg:

Az XMLEasy.xsd dokumentum automatikusan létrejött ugyanabban a könyvtárban, ahol az XMLEasy.xml található.

Az XSD-sémák megértéséhez először az adatok tiszta formában történő leírásával kell foglalkoznia, anélkül további elemek. A 11.1. táblázat számos egyszerű XML-dokumentumot és azok sémáját mutat be, amelyeket ADO .NET-objektumokhoz való kötés nélkül hoztak létre.

11.1. táblázat. Példák XSD-sémák létrehozására
Az XML dokumentum tartalma XSD-séma tartalma

1

Leírás
Az XMLEasy.xml dokumentumban a TOUR elem a gyökérelem, amelyet tartalmaz gyermek elem IDTOUR. Általános séma mert a gyökérelemnek a következő alakja van:

: Elemtartalom...

A gyermekelemek leírása a következő:

Az XML dokumentum tartalma XSD-séma tartalma

1 Ciprus 25 000,00 RUB Két felnőtt utalvány ára egy gyermek (7 éves korig) árát tartalmazza. 2 Görögország 32 000,00 RUB Különleges kedvezmények érvényesek augusztusban és szeptemberben 3 Thaiföld 30 000,00 RUB Nem tartalmazza a repülőjegyet 4 Olaszország 26 000,00 RUB A túra ára tartalmazza a reggelit a szállodában 5 Franciaország 27 000,00 RUB A további kirándulásokat a túra ára nem tartalmazza

Leírás
A gyökér TABLE elem egy TOUR elemet tartalmaz, amely viszont gyermekelemek csoportjából áll. A choice elem vezérli a többi elem kiválasztását, a maxOccurs attribútum "unbounded" értéke azt jelzi, hogy a TOUR csoportok korlátlanok lehetnek.

: :

Az XML dokumentum tartalma XSD-séma tartalma

1 Ciprus 25 000,00 RUB 1 Két felnőtt utalvány ára egy gyermek (7 éves korig) árát tartalmazza.


Rizs. 11.5.
Leírás
Az IDTOUR elem adattípusa int , a CLOSED elem adattípusa logikai értékre volt beállítva, a többi pedig az alapértelmezett karakterlánc adattípus. Az adattípust közvetlenül az XML adatséma módban módosíthatjuk, de kényelmesebb a Schema mód használata (ebben az esetben a mód neve DataSet) válassza ki az adattípust a legördülő listából (11.5. ábra). :

BAN BEN szoftver A kurzushoz ennek a táblázatnak az összes fájlját megtalálja az XSD mappában (Code\Glava5\XSD).

Az adattípus beállítása XML-dokumentumban (a legutóbbi példa a 11.1. táblázat) a tartalom korlátozásának egyik módja. További attribútumok használatosak egy adott típus értékének korlátozására. A következő sémarészletben a PRICE elem értékének 50 és 100 között kell lennie:

Ha egy XML-dokumentumot néhány rögzített értékre kíván korlátozni, használja a következő konstrukciót:

Itt a NAME elem csak egy rögzített értéket vehet fel az öt országnév közül.

Az XSD-séma fejlesztése meglehetősen sok munka. A Visual Studio .NET vizuális eszközei jelentősen megkönnyítik ezt a feladatot. Az alapfogalmak elsajátításához több automatikusan generált XML dokumentumsémát célszerű megtanulni. A 11.2-11.4 táblázatok ismertetik a főbb elemeket és attribútumokat, amelyekkel találkozhatunk.

11.2. táblázat. XSD sémaelemek
Elem Leírás
minden A beágyazott elemek tetszőleges sorrendben definiálhatók
annotáció Megjegyzés elemek szülőeleme És
Bármi Minden beágyazott elem
anyAttribute Bármilyen attribútum
appInfo Megjegyzés elem. Megadja a séma címét
tulajdonság Tulajdonság
attribútumcsoport Attribútumcsoport
választás Egyéb elemek kiválasztása. A "|" operátor analógja a DTD-ben
komplexTartalom Korlátozások ill modell kiterjesztésekösszetett tartalomtípus
komplexTípus Összetett elem
dokumentáció Megjegyzés elem. Információkat ad a sémáról
elem Elem
kiterjesztés Elembővítmények
terület Területi nyilatkozat. Egy elemen belül érvényes mezők meghatározásához
csoport Elemek csoportja
import Típusdeklaráció importálása másik sémából
tartalmazza Egy másik séma belefoglalása egy meglévő névtérbe
kulcs Elem vagy attribútum megadása egy másik elemre mutató kulccsal
kulcsref Annak az elemnek vagy attribútumnak a megadása, amelyre a kulcs mutat
lista Olyan elem, amely értéklistát tartalmazhat
újradefiniál A már deklarált elemek felülbírálása
korlátozás Elemkényszer
séma Séma gyökérelem
választó Kiválasztó az XML elemek kiválasztásához
sorrend Más elemek sorrendje. A "," operátor analógja a DTD-ben
egyszerű Tartalom Olyan modell, amelynek tartalma csak karakteradatokat képvisel
egyszerűTípus Egyszerű elem
unió Olyan elem vagy attribútum, amelynek több jelentése is lehet
egyedi Egy elem vagy attribútum, amelynek rendelkeznie kell egyedi érték
11.3. táblázat. Attribútumok – XSD-séma korlátozások
Tulajdonság Leírás
felsorolás Értéklista
hossz Hossz
maxLength Maximális hossz
minLength Minimális hossz
maxExkluzív Maximális érték
maxInclusive Maximális érték, beleértve
minExkluzív Minimális érték
minInclusive Minimális érték, beleértve
fractionDigits Tizedesjegyek száma tört számokban
totalDigits Számjegyek száma
minta Minta (minta) az elemtartalomból
alapértelmezett Alapértelmezett elem vagy attribútumérték
elementFormDefault Helyi elem tulajdonságainak beállítása globálisan meghatározottak szerint
rögzített Rögzített elem- vagy attribútumérték
forma A lokálisan deklarált elemek meghatározott dokumentumpéldányokban vannak meghatározva
tárgy típus Listaelem típusa
tagTypes A szakszervezetben használt tagok típusa
max Előfordul Egy elem előfordulásának maximális száma
min Előfordul Egy elem előfordulásának minimális száma
vegyes Vegyes típusú elem megadása
név Elem vagy attribútum neve
névtér Névtér
noNamespace A sematikus dokumentum helyének megadása,
SchemaLocation nem tartalmaznak eredő névtereket
nullázható Annak meghatározása, hogy egy elem üres lehet NULL érték(nulla)
ref Hivatkozás beállítása egy globálisan meghatározott elemre
schemaLocation Az áramkör helyének meghatározása
helyettesítőcsoport Elemek más elemekkel való helyettesítésének meghatározása
targetNamespace Az eredményül kapott séma névtér
típus Tárgy típus
használat Az elem szükséges vagy nem?
érték Sematikus elem értéke
xsi:nil Egy üres (NULL) elem tényleges tartalmának beállítása egy XML dokumentumban
xsi:schemaLocation Az elem tényleges helye az XML dokumentumban
xsi:type Az elem tényleges típusa az XML dokumentumban

Platformok: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Konfigurációk: Minden konfiguráció

2012-11-25
34938

Az XDTO egy olyan mechanizmus, amely webszolgáltatások létrehozásához és futtatásához szükséges. Az XDTO-csomagok az adatok XML-ből történő módosításához szükséges XML-fájl szerkezetének leírására szolgálnak.

Az XML egy módja annak, hogy bonyolult adatstruktúrát írjunk le egy közönséges szövegfájlban. Nemcsak magát az adatot írja le, hanem a tárolási mezőket is.
Íme egy alapvető példa XML fájl:

XML a dumákhoz

-ban használt nevek (címkék). ez a fájl- gyökér, lista, név, el - teljesen tetszőleges lehet. Az XML-fájl létrehozásának alapvető szabályai azonnal láthatók a szerkezetéből:
- Lehetőség van elemek egymásba ágyazására;

Elem kezdete<Имя>, a végződés ugyanaz a név, de egy „/” karakter hozzáadásával.

Az elemen belül a következők helyezhetők el:
- Beágyazott elemek;
- Szöveg.

Minden elemnek lehetnek tulajdonságai (attribútumai), ezek értéke és neve fel van tüntetve. Az XML-ben tilos bármilyen karaktert használni, mert ezek közül több közvetlenül XML-hez használatos, pl.<» и «>" Az XML-ben való leírás nagyon kényelmes a másokkal való csere során harmadik féltől származó programokés az 1C adatcsere-mechanizmusban használják.

Névtér

Az XML-fájl fejléccel kezdődik, amely leírja az XML-verziót, a kódolást stb. Az XML-fejléc nem feltétlenül szükséges, és nagyon gyakran egyszerűen nem használják. A fejléc névteret is meghatározhat.

Az XML-fájlokat az interneten keresztül továbbítják, és sokan értik őket különféle programok. Érzékeljük őket - ez azt jelenti, hogy van védelem a kódjukban -, ha egy XML fájlban egy bizonyos elemnévvel találkozik, akkor ezt így kell érzékelnie, és pontosan ezt kell tennie. Ezért, amikor az IBM címkét használjuk, elég nagy az esélye annak, hogy egy másik program azt gondolja, hogy ez az általa ismert IBM, miközben mi ezzel a sajátunkkal értünk.

Ennek megakadályozása és az IBM és az összes többi közötti különbség egyértelmű jelzése érdekében lehetőség van a fájlban a névtér nevének megadására - az elemek neve előtt használt előtag.

A névteret a következőképpen határozhatja meg - xmlns:Prefix (NameSpace) = “URL”, példa:
xmlns:store = "http://site.ru"

Miért van szükség URL-re? Aki már elgondolkodott és tovább néz - persze az általunk kitalált névtér sem lehet egyedi, pl. bárki más is használhatja. Ezért különleges egyedi azonosító, amely a névtér végrehajtóját is meghatározza.

Természetesen azt feltételezi, hogy a névteret megadó személy teljesen őszinte. Saját webhelyére mutat, és nem használ több különböző névteret egy webhelyen. Általános szabályként megadja a webhely URL-jét és egy adott mappa URL-címét is, így a webhely bármely mappájában létre lehet hozni egy másik névteret, amelyet bármilyen helyzetben használhat.

DOM

Az objektum egy meghatározott adatstruktúra, amely önálló, és minden adatát tartalmazza.

Tekintettel arra, hogy az XML fájl strukturált adatokat ír le, azaz olyan adatokat, amelyeknek saját tulajdonságaik vannak, és így tovább, ezért objektumként tekintheti őket. A fenti példa használhat egy LIST objektumot tulajdonságokkal és egy beágyazott elemmel.

A DOM egy módja annak, hogy egy XML-fájlt ne egy adott formátumú szövegként, hanem mezőket, tulajdonságokat és egyebeket tartalmazó objektumok halmazaként kezeljünk.

Tovább a hátrányokra ez a módszer munka, magas követelmények vannak a PC teljesítményével szemben, mert A DOM egyszerre dolgozza fel (objektumok formájában struktúrát alkot) a teljes XML fájlt, méretétől függetlenül, és a fájlokat nagy méretű(több mint 4 GB) egyszerűen nem tud „emészteni”.

A nagy fájlok elemzéséhez a SAX-ot használják; ez a fájlelemzési módszer a fájl szekvenciális beolvasásán alapul, nem pedig a teljes szerkezetének egyidejű felépítésén. .

Az XML fájl leírása

Ha egy adott szerkezetű fájlt használunk folyamatosan két program közötti kommunikációhoz, akkor valószínűleg a következőket szeretnénk:

Használt konkrét nevek;
- Csak azokat az elemeket használjuk, amelyeket elvárunk (amelyeknek „létezniük kell ahhoz, hogy a cserében használhatók legyenek”);
- Hogy az attribútumok csak azokat a típusokat jelöljék, amelyeket elvárunk (szám, karakterlánc stb.).

A következő fájlformátumok állnak rendelkezésre XML-struktúrák leírására (sima szöveges fájlban is):

A DTD kiterjesztése Dokumentumtípus-meghatározás;
- Az XSD kiterjesztése XML Shema.

Ezek a formátumok azt írják le, hogy milyennek kell lennie a dokumentumnak. Az XML megfelelőségének ellenőrzésére szolgáló eljárást, amelyet egy ilyen szabványos fájl ismertet, ellenőrzésnek nevezzük.

XDTO

Az XDTO egy 1C objektum, amely lehetővé teszi egy XML-fájl leírásának hozzáadását a konfigurációhoz. Pontosabban nem magát a fájlt írják le, hanem bizonyos XML-struktúrákat.

A használható típusok jelzésére egy lista, egy típuskönyvtár, az úgynevezett XDTO-gyár szolgál. Ez a gyár nem csak egyszerű típusokat (dátum, karakterlánc, szám) határoz meg, amelyeket más programokban, nyelveken stb. használnak, hanem az 1C-ben és egy adott konfigurációban használt 1C típusokat is.

Az XDTO Factory több csomagot is tartalmaz. A kezdeti típusokat egy csomag írja le www.w3.org A konfigurációban szereplő adattípusok leírása a csomagban található http://v8.1c.ru/8.1/data/enterprise/current-config

Ezek a típusok a konfigurátorban szereplő neveknek megfelelően vannak elnevezve az angol űrlap hozzáadásával (CatalogRef, DocumentObject, CatalogObject, DocumentRef), például:

CatalogObject.Accounts

XDTO-csomag hozzáadása

Elérkeztünk az XSLT témájához – az XML fájlok mássá alakításának módja, pl. HTML fájlok. Az XML témája rendkívül kiterjedt, és nem egy könyvet írtak már róla.

Feladatunk annak megértése, hogy az XDTO lehetővé teszi, hogy leírjuk azokat az elemeket, amelyeknek az olvasandó vagy generálandó XML-csomagban kell lenniük. Az XDTO csomagok az 1C konfigurációban és az Általános ágban - XDTO csomagok találhatók.

Az 1C-hez manuálisan is hozzáadhat XDTO-csomagot, de a legjobb, ha a megfelelő XSD-fájlt készen kapja meg. Részletes leírás rendszer. Bármely konfiguráció XSD-objektum sémájának leírását az Általános - XDTO csomagok ágra kattintva és a " XML export konfigurációs adatsémák."

Ez szöveges fájl, Szerkesztheti a Windows Jegyzettömbben, miközben eltávolítja a szükségtelen objektumokat (az Ön számára felesleges). Kész XSD-sémát adhat hozzá az 1C-hez, ha a jobb gombbal az Általános - XDTO-csomagok ágra kattint, és a menüből kiválasztja az "XML séma importálása" lehetőséget.

Az XDTO-val való munkavégzés az 1C-ben az értékek XML-ből XML-be konvertálását jelenti. Ez 1C nyelvi objektumok segítségével történik XML/XMLWrite olvasása.

Ha XDTO-val dolgozik, meg kell adnia azt a csomagot, amellyel közvetlenül dolgozik. Ez lehet egy szabványos csomag (lásd a fenti vitát, XDTO), vagy a konfigurációhoz hozzáadott csomag.

A csomagot a csomagban megadott URL azonosítja. Két fő munkamódszer létezik:

Sorozatosítás - automatikus változásértékek XML-től 1C-ig és fordítva;

Egy objektum mezőinek kitöltése, létrehozása és XML-be írása (valamint XML-ből olvasás, majd mezőinek beolvasása).

Képzeljünk el egy példát az értéksorosításra:

Serializer = Új XDTO Serializer(XDTO Factory);
XML fájl = Új XML rekord();
XMLFile.OpenFile("Fájlnév");
Serializer.WriteXML(XMLFile, 1C érték);

Az inverz függvény a Serializer. XMLReading (), az XML Reading nyelv 1C objektumaiból használva.
Példa egy objektum írására/olvasására:

XDTOObject könyvtár = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Counterparties"));
Fill inPropertyValues(DirectoryXDTOObject, Directory.Counterparties.FindByProperties("Név", "Ivanov").Link);

Ezután a létrehozott objektumot pontosan ugyanúgy írhatja XML-be, mint a szerializálást. Ha az XML-t a fentebb leírt módon olvassuk, előfordulhat, hogy nem egy XDTO-érték ad vissza, hanem egy ilyen objektum.

XDTO objektum létrehozásakor egy konfigurációs objektum szerkezetéhez hasonló struktúra jön létre (kivéve persze, ha a fenti példában megadott csomagból hoz létre konfigurációs objektumot). A tipikus mezők (név, kód stb.) angol nyelvűek, és az objektum üresen jön létre, ezért minden mezőt külön-külön vagy a függvény használatával kell kitölteni. FillPropertyValues

Az XML formátum nagyon népszerű a különféle cserék során szöveges dokumentumok között információs rendszerek. Az egyedi struktúra létrehozásának képessége a dokumentumok számára lehetővé teszi a használatát számos területen - elektronikus könyvtárak, WEB, import/export és sok más területen. Lehetőség nélkül kényelmes munkavégzés ezzel a formátummal az 1C rendszerek nem tudtak volna ekkora népszerűségre szert tenni. Mivel az 1C aktívan használja a WEB-technológiákat, minden fejlesztőnek tudnia kell XML-t olvasni és információkat írni bele.

XML fájlok megjelenítése és olvasása

Az XML jelölőnyelv egyik legfontosabb előnye a meglehetősen kényelmes és intuitív felépítése és szintaxisa. Létrehozásakor a szerzők egy olyan jelölőnyelv létrehozását tűzték ki célul, amely ember és számítógép számára is könnyen olvasható. Ma az XML-t széles körben fejlesztették más formátumokká, de továbbra is népszerű és széles körben használt. Az XML fájl szerkezete a következő séma szerint épül fel:

Az adatok 1C-be történő importálására vonatkozó példa megfontolásához elegendő a fent bemutatott fájl. Ahhoz, hogy az írott eljárás be tudja olvasni az XML fájlt, elég magának a fájlnak az elérési útját átadni benne. Ez megtehető az interfészen keresztül, lehetővé téve a felhasználók számára, hogy maguk határozzák meg a fájlt, vagy a szövegben kódolt feldolgozással.

A 100 MB méretű XML-lel való munka egyik népszerű módja 1C-ben a dokumentumobjektum-modell (DOM) használata. Jelentése az XML-ben ábrázolt összes dokumentumcsomópont szekvenciális feldolgozása. A beépített 1C nyelvben ez az algoritmus így néz ki:

  1. Nyilatkozat azokról a mechanizmusokról, amelyek révén ez bekövetkezik XML olvasás fájl; Hurok a csomópontok áthaladásához;
  2. Adatok és attribútumok olvasása egy csomópontban;
  3. Információ kimenet. Ha szükséges, ebben a szakaszban az írás történhet változókban vagy közvetlenül a szükséges táblázatokban;
  4. A mechanizmus befejezése.
&OnServer eljárás ReadOnServer(PathToFile) //mechanizmusok deklarációja Olvasási mechanizmus = Új ReadingXML; Reader.OpenFile(PathToFile); Builder = New BuilderDOM; Dokumentum = Builder.Read(Reader); //hurok a csomópontok bejárásához Minden elemhez From Document.DocumentElement.ChildrenNodes Loop //adatok olvasása If element.NodeName = "Termék" Akkor termék = elem; Minden értékhez From product.ChildrenNodes Cycle If values.NodeName = "Name" then Name = értékek; Color = Name.Attributes.GetNamedElement("Color"); ElseIf values.NodeName = "Ár", akkor Költség = értékek; Pénznem = Cost.Attributes.GetNamedItem("Pénznem"); endIf; EndCycle; //kimeneti üzenetek Notify("Név: " + Név.Szövegtartalom + "; szín: "+Szín.Érték +"; Ár: "+Költség.Szövegtartalom + "; Pénznem: "+Pénznem.Érték); endIf; EndCycle; //a mechanizmus bezárása Non-MechanismReading.Close(); Az eljárás vége

Ennek eredményeként üzeneteket jelenítünk meg a felhasználónak az importált adatokkal. Ezenkívül minden adatot beírhat a kívánt szerkezetetés ennek alapján programozza meg egy dokumentum vagy bejegyzések létrehozását a könyvtárban. Az 1C xml-lel végzett munka sebessége meglehetősen magas, ezért ezt a formátumot egyre gyakrabban használják más forrásokkal való adatcserénél.

Az információk feltöltéséhez a fájlokkal való interakcióra is szükségünk lesz XML formátum. Nézzünk egy példát egy rekordra, amely az 1C platform XML Record objektumát használja, és töltsünk fel adatokat az elemre. Fő előnyei a kód egyszerűsége és az adatfeldolgozás gyorsasága. Az XML fájl írásának szerveroldali algoritmusa több egymást követő lépésben ábrázolható:

  1. Csatlakozzon az xml fájlhoz;
  2. Fejelemeket hozunk létre, és adatokat írunk rájuk. Ha nagy mennyiségű információt szeretne feltölteni egy XML-fájlba, akkor ebben a szakaszban ciklusokat fog használni. Legyen óvatos, és ne feledje, hogy az adatkérést a hurok előtt kell benyújtani, és nem abban;
  3. Zárja be a fájlt.
//nyissuk meg a Nomenclatura.xml fájlt és írjuk be a fejelemet RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem("Termékek"); //adatok kiválasztása a rekordhoz SelectionFromDirectory = Directories.Nomenclature.Select(); //ciklus, amelyben a rögzítés megtörténik, míg SelectingFromDirectory.Next() ciklus //új adatok írása RecordToFile.RecordStartofElement("Termék"); RecordInFile.RecordAttribute("Név", SelectionFromDirectory.Name); WriteToFile.WriteAttribute("Kezdeti ár", Line(SelectionFromDirectory.InitialPrice)); WriteToFile.WriteEndElement(); EndCycle; //Zárja be a head elemet és a fájlt WriteVFile.WriteEndElement(); WriteInFile.Close();

XDTO mechanizmus 1C-ben

Az 1C cég fejlesztői létrehozták saját mechanizmusukat az XML-en keresztüli információcserére - XDTO (XML Data Transfer Objects). A 8.1-es verziótól kezdve a platform képes adatot cserélni más rendszerekkel anélkül, hogy belemélyedne az XML-fájl generálásával kapcsolatos kérdésekbe. Többség technikai problémák Az 1C átveszi az irányítást, és már csak az XML generálásához szükséges adatokat kell megadnunk. Igaz, ehhez a fejlesztőnek előzetesen el kell végeznie néhány manipulációt.

Egy XML fájl XDTO használatával történő betöltéséhez meg kell mondanunk az 1C-nek a fájl szerkezetét. Ez egy diagramkészleten keresztül történik, amelyet szövegszerkesztőben vagy speciális program segítségével lehet létrehozni. Az eredményül kapott fájlnak le kell írnia az XML fájlban használt általános szerkezetet és adattípusokat. Új XML olvasása vagy írása előtt a fejlesztőnek be kell töltenie a sémáját az XDTO-csomagok alatti konfigurációba.

Ebben az esetben kézzel fogunk létrehozni egy egyszerű csomagot, hogy az 1C megértse a példafájlunk szerkezetét. Ahhoz, hogy a fájlgenerálás sikeres legyen, tükröznünk kell a sémában, hogy van egy fejelemünk és egy attribútumokkal ellátott mellékletünk. A létrehozott sémát xsd formátumú fájlba kell exportálni, és az xml-lel együtt átvinni, hogy a másik félnek ne kelljen a struktúrával foglalkoznia és újra létrehoznia az xdto csomagot.


Új XML mentése ide HDD Az előzőhöz hasonló szerveralgoritmus segít. Az egyetlen különbség az, hogy 1 termék adatait kell hozzáadni az XDTO gyárhoz - ez a 8.3 1C platform speciális mechanizmusa. Ha további beágyazási szintek létrehozására van szükség, le kell írnia az egyes fejelemeket.

//Nyissa meg az XML fájlt RecordVFile = Új RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Jelölje meg az 1C-nek, hogy milyen típusú adatokat kell létrehozni - head elem AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Termékek")); //adatok kiválasztása a feltöltéshez SelectionFromDirectory = Directories.Nomenclature.Select(); //Egyedi termékek hozzáadása a head elemhez, miközben Select from the Directory.Next() cycle Product = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Termék")); Product.Name = Válasszon a Directory.Name-ból; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts.Add(Termék); EndCycle; //írja az adatokat és zárja be a fájlt FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteInFile.Close();

A figyelembe vett mechanizmusok meglehetősen univerzálisak és helyes beállítás meg tudja oldani a legtöbb problémát. Az 1C és az XML közötti interakcióban azonban meglehetősen sok árnyalat van. Sokkal hatékonyabb ezeket valós körülmények között tanulmányozni, és nem olyan tesztfeladatokon, amelyekben egy XML-fájl feldolgozása meglehetősen szűk problémákat old meg.

Gyakori az olyan hiba, amely szerint a fájl nem felel meg az XSD-sémának a rendszer nem tud adatokat olvasni a jelentésből. Általában az emberek gyakran követnek el ilyen hibákat, és ezeket meglehetősen könnyű kezelni.

Először is meg kell értenie, mit jelent az XSD-séma, hogy megértse, pontosan minek nem felel meg a fájl.

Tehát az XSD programozási nyelv, leírja a jelentés felépítését. A struktúra tartalmazza például a jelentés tartalmának, típusának, megjelenésének paramétereit, valamint adatszintaxist, információkat tartalmazó szakaszokat.

Kiderült, hogy az XSD séma az a jelentés szerkezetének leírása, valamelyik programozási nyelven végrehajtva. Ha hibás információkat adnak meg a jelentésben, az egyszerűen olvashatatlan lesz a séma számára, ezért a rendszer hibát generál, amely szerint a fájl nem felel meg az XSD sémának.

Ez azt jelenti, hogy az Ön által megadott információ nem olvasható a programozási nyelven, ezért a program hibásnak ismeri fel.

Érdemes megjegyezni, hogy ez a probléma felmerülhet akár hibásan megadott adatokat(például hibát követett el a szervezet TIN-számának megadásakor), valamint hibás adatbeviteli formátum miatt (például több szóközt vagy kötőjelet jelölt meg).

Azonban nem ez az egyetlen oka annak, hogy a fájl nem felel meg az XSD sémának. Ez a hiba az is előfordulhat, hogy a készülék rendelkezik elavult verzió program, amelyben bejelentést tesz, és akkor is, ha magának az adóhatóságnak nincs telepítve programfrissítése.

Az XSD-séma hibájának megoldásához ezt kell tennie ellenőrizze, hogy minden adat helyes-e, amit beírt, és ellenőrizze azt is, hogy történt-e frissítés a programhoz, amelyben dolgozik. Mielőtt azonban ellenőrizné a fájlt, alaposan nézze meg a hiba szövegét, amelyet ad.

A helyzet az, hogy bizonyos helyzetekben a fájl nem egyezik a sémával való szövege után kettőspont jelenik meg, majd megjelenik a probléma oka. Ha magát a hiba okát nem jelzi, frissítse a programot a legújabb verzióra.

A frissítés befejezése után próbálja meg újra elküldeni a jelentést. Ha a fájl frissítése után ismét hibaüzenetet ad, akkor meg kell tennie ott keresd a problémát. Ha az 1C programban dolgozik, akkor a fájlt egy speciális „ellenőrzés az interneten” gombbal ellenőrizheti.

Ha az előző két pont nem segített a probléma beazonosításában, akkor ellenőrizze, hogy minden kötelező mezőt kitöltött-e, minden adatot helyesen adott-e meg, mert sokat kell számokkal kitölteni, ebben az esetben nagyon könnyű elgépelést csinálni.

Ezenkívül ellenőriznie kell az összes mezőt, hogy nincsenek-e felesleges szóközök, kötőjelek és egyéb karakterek. Ha a teljes fájlt ellenőrizte, és nem talált hibát, vagy sikerült hibát találnia, de nem tudja kijavítani, akkor feltétlenül lépjen kapcsolatba a műszaki támogatással a program, amellyel a jelentést készíti, vagy annak fejlesztőinek.

A probléma megoldásához a programfejlesztők segítségével el kell küldenie néhány dokumentumot, például magát a fájlt, amelyben a jelentés található, vagy az értesítési protokollt, amelyet a számítógép ad.

Ezenkívül a fejlesztők kérhetnek Öntől néhány információt a szervezetéről, valamint más, általuk szükségesnek tartott információkat, ezt Önnek meg kell adnia, különben a probléma nem oldódik meg.

Tehát, ha megpróbál jelentést küldeni az adóhatóságnak, de a fájl olyan hibát ad, hogy nem felel meg az XSD sémának, ez azt jelenti, hogy a jelentés nem küldhető, mert a program nem tudja beolvasni a beírt adatokat.

De nem szabad pánikba esni, mert a legtöbb esetben ez a probléma egészen egyszerűen megoldvaés gyorsan. Ezen túlmenően, ha időben elküldte a bejelentést, de azt a hibás formátum miatt nem fogadták el, akkor az adóhivatal nincs joga bírságra azért, mert nem nyújtotta be időben a jelentést. Mindenekelőtt ügyeljen magára a hiba szövegére, talán ott már fel van tüntetve az előfordulásának oka.

Valójában csak két oka lehet. Vagy telepítve van a készülékedre? régi verzió programokat, amellyel bejelentést tesz, ebben az esetben könnyen megoldható a probléma, csak le kell töltenie a legtöbbet Utolsó frissítés, általában megtalálható az Ön által használt program honlapján. A második ok az lehet, hogy néhány adatot rosszul töltött ki, vagy egyáltalán nem töltött ki egyetlen mezőt sem.

Ebben az esetben ellenőriznie kell a fájlt, de emlékeznie kell arra, hogy a program akár hibának is tekintheti páratlan tér. Ha nem találja a hiba okát, felveheti a kapcsolatot technikai támogatás programokat, ahol a szakemberek biztosan segítenek megoldani a problémát.