Гэр / Нийгмийн сүлжээ / xsd схем 1c дагуу xml үүсгэх. Бичсэн DataSet объект. XML баримт бичгийг унших, бичих. XML файлыг төлөөлж, уншиж байна

xsd схем 1c дагуу xml үүсгэх. Бичсэн DataSet объект. XML баримт бичгийг унших, бичих. XML файлыг төлөөлж, уншиж байна

Энэ бүлэгт XML схемийг хэрхэн бичихийг харуулах болно. Та мөн схемийг олон янзаар бичиж болно гэдгийг мэдэх болно.

XML баримт бичиг

"shiporder.xml" нэртэй энэхүү XML баримтыг харцгаая:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
Жон Смит

Ола Нордманн

Ланггт 23

4000 Ставангер
Норвеги


Бурлескийн эзэнт гүрэн
Тусгай хувилбар
1
10.90


зүрх сэтгэлээ нуу
1
9.90

Дээрх XML баримт бичиг нь "orderid" нэртэй шаардлагатай шинж чанарыг агуулсан "shiporder" гэсэн үндсэн элементээс бүрдэнэ. "Захиалагч" элемент нь "захиалагч", "shipto" болон "зүйл" гэсэн гурван өөр үндсэн элементийг агуулдаг. "Зүйл" элемент нь хоёр удаа гарч ирэх бөгөөд энэ нь "гарчиг" , нэмэлт "тэмдэглэл" элемент, "тоо хэмжээ" болон "үнэ" элементийг агуулна.

Дээрх мөр: Xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance" нь XML задлагчдад энэ баримт бичгийг схемээр баталгаажуулах ёстойг хэлдэг. Мөр: xsi: noNamespaceSchemaLocation="shiporder.xsd" нь схем хаана юу болохыг заана. (энд "shiporder.xml"-тэй ижил фолдерт байна) .

XML схем үүсгэх

Одоо бид дээрх XML баримт бичгийн схемийг үүсгэхийг хүсч байна.

Бид "shiporder.xsd" гэж нэрлэх шинэ файлыг нээж эхлэх болно. Схем үүсгэхийн тулд бид зүгээр л XML баримт бичгийн бүтцийг дагаж, элемент бүрийг олж мэдсэнээр нь тодорхойлж болно. Бид стандарт XML мэдэгдлээр эхлэх бөгөөд дараа нь xs: схемийг тодорхойлдог схемийн элемент:



...

Дээрх схемд бид стандарт нэрийн орон зайг (xs) ашигладаг бөгөөд уг нэрийн оронтой холбоотой URI нь схемийн хэлний тодорхойлолт бөгөөд http://www.w3.org/2001/XMLSchema стандарт утгатай байна.

Дараа нь бид "тээвэр захиалагч" элементийг тодорхойлох хэрэгтэй. Энэ элемент нь шинж чанартай бөгөөд бусад элементүүдийг агуулдаг тул бид үүнийг нарийн төвөгтэй төрөл гэж үздэг. Хүүхдийн элементүүд"Зохиогчийн" элемент нь xs-ээр хүрээлэгдсэн байна: дэд элементүүдийн эрэмблэгдсэн дарааллыг тодорхойлдог дарааллын элемент:




...


Дараа нь бид "захиалагч" элементийг энгийн төрөл гэж тодорхойлох хэрэгтэй (энэ нь ямар ч шинж чанар эсвэл бусад элемент агуулаагүй тул). (xs: string) төрөл нь XML схемтэй холбоотой нэрийн орон зайн угтвартай байх бөгөөд энэ нь схемийн урьдчилан тодорхойлсон өгөгдлийн төрлийг тодорхойлдог:










Схемийн тусламжтайгаар бид MaxOccurs болон MinOccurs шинж чанаруудтай элементийн тохиолдлын тоог тодорхойлж чадна. MaxOccurs нь элементийн хамгийн их тохиолдлын тоог, MinOccurs нь элементийн хамгийн бага тохиолдлын тоог тодорхойлдог. MaxOccurs болон MinOccurs-ийн өгөгдмөл утга нь 1 байна!

Одоо бид "зүйл" элементийг тодорхойлж болно. Энэ элемент нь "захиалга" элемент дотор олон удаа гарч ирж болно. Энэ нь "зүйл" элементийн maxOccurs шинж чанарыг "хязгааргүй" гэж тохируулснаар тодорхойлогддог бөгөөд энэ нь зохиогчийн хүссэнээр "зүйл" элементийн олон тохиолдол байж болно гэсэн үг юм. "Тэмдэглэл" элемент нь сонголттой гэдгийг анхаарна уу. Бид minOccurs атрибутыг тэг болгож үүнийг тодорхойлсон:










Одоо бид элементийн "shiporder" шинж чанарыг зарлаж болно. Энэ нь шаардлагатай шинж чанар тул бид use="required"-г зааж өгнө.

Тайлбар: Атрибутын мэдэгдлүүд үргэлж хамгийн сүүлд байх ёстой:

Энд бүрэн жагсаалт"shiporder.xsd" нэртэй схем файл:





























Тусдаа хэлхээ

Өмнөх дизайны арга нь маш энгийн боловч баримт бичиг нь нарийн төвөгтэй үед уншиж, засварлахад хэцүү байж болно.

Дараахь дизайны арга нь бүх элемент болон шинж чанаруудыг тодорхойлж, дараа нь ref шинж чанарыг ашиглан тэдгээрийг иш татахад суурилдаг.

Энд шинэ загварсхем файл ("shiporder.xsd"):








































Нэрлэсэн төрлүүдийг ашиглах

Гурав дахь дизайны арга нь анги эсвэл төрлийг тодорхойлдог бөгөөд энэ нь элементийн тодорхойлолтыг дахин ашиглах боломжийг олгодог. Үүнийг simpleTypes болон complexTypes элементүүдийг нэрлээд дараа нь тухайн элементийн төрлийн шинж чанараар дамжуулан тэдгээрт хандана.

Схемийн файлын гурав дахь загвар ("shiporder.xsd") энд байна:

































Хязгаарлалтын элемент нь өгөгдлийн төрлийг W3C XML схемийн өгөгдлийн төрлийн нэрийн орон зайгаас авсан болохыг харуулж байна. Дараах хэсэг нь элемент эсвэл атрибутын утга нь тэмдэгт мөр байх ёстой гэсэн үг юм.

Хязгаарлалтын элементийг элементүүдэд хязгаарлалт тавихад илүү их ашигладаг. Дээрх диаграмаас дараах мөрүүдийг хар.





Энэ нь элемент эсвэл атрибутын утга нь мөр байх ёстой бөгөөд энэ нь нэг мөрөнд яг зургаан тэмдэгт байх ёстой бөгөөд тэдгээр тэмдэгтүүд нь 0-ээс 9 хүртэлх тоо байх ёстойг харуулж байна.

XSD схем дээр суурилсан XML файл үүсгэх даалгавар байсан. Форумаас хайх нь үйл явцын талаархи ойлголт дутмаг, мөн чанарыг тайлбарласан хэдхэн нийтлэлтэй холбоотой олон хэлэлцүүлэгт хүргэсэн. Хүмүүс асуулт асууж, шийдлийг олохын тулд тэмцэж байсан боловч даалгавар тэдэнд өгсний дараа тэд механизмыг тайлбарлахгүйгээр зүгээр л алга болжээ. Энэ нь бүтээлийг бүтээхэд түлхэц болсон энгийн тайлбарүйл явц.
P.S. Хэт их харааж зүхэх хэрэггүй, миний зорилго бол зөв нэр томьёо ашиглан шинжлэх ухааны нийтлэл бүтээх биш, харин зүгээр л маш хүчирхэг XML солилцооны механизмыг ойлгох эхний алхамыг хийхэд туслах явдал байв.
P.P.S. Энэ нийтлэлд хавсаргасан татаж авах файл нь зөвхөн XML файлын шаардлагатай бүтцийн зөвхөн нэг хэсгийг үүсгэдэг хоосон зай гэдгийг нэн даруй тэмдэглэх нь зүйтэй. Энэ татан авалттай хийсэн миний ажил нь боловсролын шинж чанартай байсан (Өмнөх экспортын баримт бичгийг FCS вэб сайтаас хуулж, зөвхөн Excel файлаас татаж аваарай) хүснэгтийн хэсэгБараа нь илүү үр дүнтэй шийдэл мэт санагдсан) бөгөөд цаг хугацаа хомс байсан нь зөвхөн төгс төгөлдөрт тулгуурласан бүх бүтцийг бүтээх ажлыг дуусгах боломжийг олгосонгүй.

Тиймээс Холбооны гаалийн албаны вэбсайтад бүртгүүлснээр Экспортын статистикийн тайлангийн баримт бичгийг бүрдүүлэхийн тулд та Худалдааны албаны бараа, үйлчилгээний борлуулалтын баримт бичгээс өгөгдлийг татаж аваад татаж авах файл үүсгэх шаардлагатай болсон нь тодорхой болсон. .

Татаж авах хоёр сонголт байна.

Нэгдүгээрт: Бүтээгдэхүүний хүснэгтийн хэсгийг ачаалж байна Excel файл(Энэ сонголтыг ажлын хувилбараар сонгосон, учир нь энэ нь баримт бичгийн "Толгой" хэсгийг боловсруулахад төвөг удах шаардлагагүй, харин та "Толгой" хэсэгт шаардлагатай зүйлийг өөрчлөх замаар өмнөх хувилбарыг хуулж авах боломжтой байсан. ).

Хоёрдугаарт: FCS вэбсайтаас "Баримт бичгийн цахим хэлбэрийн форматын цомог" хэлбэрээр татаж авсан схемийн дагуу XML файл үүсгэх. Цомог хангалттай олон тооны XSD схемүүд. Тэд "Барааны хөдөлгөөний нягтлан бодох бүртгэлийн статистик хэлбэр" схемийг олжээ нэмэлт файлуудтүүнд зориулсан төрлийн тайлбартай. Схемүүдийг боловсруулалтын хамт архивт байгаа нийтлэлд хавсаргав.

Үнэгүй Microsoft XML Notepad 2007 нь XSD схемүүдийг үзэхэд ашиглагдаж байсан.

Зураг дээр "Барааны хөдөлгөөний нягтлан бодох бүртгэлийн статистик хэлбэр" XSD схем бүхий үндсэн файлыг харуулав. Зураг нь бидний ойлгох ёстой XSD схемийн үндсэн блокуудыг онцлон харуулав.

Бид StaticFormType төрлийн "xs: element" салбарт заасан бүтцээр дүүргэсэн XML файлыг авах шаардлагатай байгааг диаграмаас харж болно.

Бүтэц нь нэлээд төвөгтэй байж болно (бидний тохиолдол шиг). Салбарт шууд байгаа, тусдаа салбар руу шилжсэн, эсвэл бүр өөр файлд байрлах төрлийн тайлбартай.

Энэ бүтэц нь StaticFormType төрлийн бөгөөд энэ нь эргээд BaseDocType үндсэн төрлийн объектуудын багцаас бүрдэнэ. янз бүрийн төрөлболон текстийн шинж чанарууд.

BaseDocStyle үндсэн төрлийг өөр файлд (болон нэрийн орон зай) тайлбарласан болно.
.

Энэ файлд мөн манай тохиолдолд ашиглагдаагүй маш олон төрлүүд байгаа.

Одоо 1С-ийн ажил руу шилжье. Товчхондоо, бидний хийх ёстой зүйл бол дараахь зүйл юм.

1. XDTO үйлдвэр бий болсон

OurXDTOFactory = CreateXDTOFactory(ArrayFullFileNamesWithXSDSchemas);

2. Бүх нарийн төвөгтэй өгөгдлийн төрлүүд нь XDTO үйлдвэрт бүтээгдсэн бөгөөд бид үүнийг цаашид бөглөх болно үүсгэсэн файл XML:

StaticFormType = MyFactoryXDTO.Type("urn:customs.ru:Мэдээлэл:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");

Тодорхой төрөлд багтсан өгөгдлийн төрлийг түүний шинж чанаруудын цуглуулгаас авч болно.

CUOrganizationType = StaticFormType.Properties.Get("Ачаа хүлээн авагч").Төрөл; NameType = CUOrganizationType.Properties.Get("БайгууллагынНэр").Төрөл; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Type; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Type;

3. Бүх нарийн төвөгтэй өгөгдлийн төрлүүдийг үүсгэх үед бид тэдгээрт тулгуурлан XDTO Factory объектуудаас бүрдэх XML файлын бүтцийг үүсгэдэг:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType); // баримтын цуглуулга NewDocuments = MyXDTOFactory.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "Дагалдах бичиг"); NewDocuments.PrDocumentNumber = MyXDTOFactory.Create(PrDocumentNumberType, "123-тоо"); NewDocuments.PrDocumentDate = MyXDTOFactory.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(NewDocuments);

Үүний зэрэгцээ бид энгийн (энгийн төрлүүд) дэлгэрэнгүй мэдээллийг бөглөнө.

4. Эцэст нь бид XDTO үйлдвэрээс бүх зүйлийг файл руу буулгана:

XMLFile = Шинэ XMLWriter(); FileXML.OpenFile(ФайлынНэр); FileXML.WriteDeclarationXML(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Close();

P.S. Архив нь XML-д буулгах хоосон файл (зөвхөн файлыг бөглөх бүх тохиолдлыг тусгасан зарим дэлгэрэнгүй мэдээллийг бий болгосон) болон XSD схемүүдийг агуулдаг.

Бүх файлыг зарим директор руу задлаарай.

Үүнд XML үүсгэгдэнэ.

Файл нь XSD схемтэй таарахгүй байна гэсэн алдаа нийтлэг байдаг систем тайлангаас өгөгдлийг уншиж чадахгүй байна. Ерөнхийдөө ийм алдаа ихэвчлэн хүмүүст тохиолддог бөгөөд үүнийг шийдвэрлэхэд маш хялбар байдаг.

Юуны өмнө та XSD схем нь таны файлтай яг юу тохирохгүй байгааг ойлгохын тулд юу гэсэн үг болохыг ойлгох хэрэгтэй.

Тэгэхээр XSD програмчлалын хэл, энэ нь таны тайлангийн бүтцийг тодорхойлдог. Бүтэц нь тайлангийн агуулга, төрөл, төрөл, түүнчлэн өгөгдлийн синтакс, мэдээлэл агуулсан хэсгүүдийн параметрүүдийг агуулдаг.

XSD схем нь харагдаж байна тайлангийнхаа бүтцийн тодорхойлолтпрограмчлалын хэлнүүдийн аль нэгэнд хийгдсэн. Хэрэв тайланд буруу мэдээлэл оруулсан бол энэ нь схемийн хувьд унших боломжгүй байх тул систем нь файл XSD схемтэй таарахгүй байна гэсэн алдаа гаргадаг.

Энэ нь таны оруулсан мэдээллийг програмчлалын хэлээр унших боломжгүй гэдгийг харуулж байгаа тул программ үүнийг буруу гэж хүлээн зөвшөөрч байна.

Үүний үр дүнд энэ асуудал үүсч болно гэдгийг тэмдэглэх нь зүйтэй буруу оруулсан өгөгдөл(жишээ нь, та байгууллагын TIN-г оруулахдаа алдаа гаргасан), өгөгдөл оруулах формат буруу байснаас (жишээлбэл, та нэмэлт зай эсвэл зураас зааж өгсөн).

Гэсэн хэдий ч энэ нь файлыг XSD схемтэй таарахгүй болгох цорын ганц шалтгаан биш юм. Энэ алдааЭнэ нь таны тайлан гаргаж буй програмын хуучирсан хувилбарыг таны төхөөрөмж дээр суулгасан, мөн програмын шинэчлэлийг татварын албанд суулгаагүйгээс шалтгаалж болно.

XSD схемийн алдааг арилгахын тулд та үүнийг хийх хэрэгтэй бүх мэдээллийн үнэн зөвийг шалгах,Таны оруулсан мэдээлэл, мөн таны ажиллаж байгаа програмын шинэчлэл гарсан эсэхийг тодруулах. Гэсэн хэдий ч, файлыг шалгахын өмнө алдааны текстийг анхааралтай ажигла.

Баримт нь зарим тохиолдолд файл нь схемтэй таарахгүй байна гэсэн текстийн дараа хоёр цэг гарч, дараа нь энэ асуудлын шалтгааныг зааж өгдөг. Хэрэв алдааны шалтгааныг өөрөө заагаагүй бол програмыг хамгийн сүүлийн хувилбар руу шинэчилнэ үү.

Шинэчлэлт дууссаны дараа тайлангаа дахин илгээнэ үү. Хэрэв файлыг шинэчилсний дараа дахин алдаа гарвал та үүнийг хийх хэрэгтэй үүнээс асуудал хайх.Хэрэв та 1С програм дээр ажиллаж байгаа бол "Интернетээс шалгах" гэсэн тусгай товчлуурыг ашиглан файлыг шалгаж болно.

Хэрэв өмнөх хоёр догол мөр нь асуудлыг тодорхойлоход тус болоогүй бол шаардлагатай бүх талбарыг бөглөсөн эсэх, бүх өгөгдлийг зөв оруулсан эсэхээ шалгаарай, учир нь тэдгээрийн олонх нь тоогоор бөглөх ёстой. үсгийн алдаа гаргахад маш амархан.

Нэмж хэлэхэд та бүх талбарт нэмэлт зай, зураас болон бусад тэмдэгт байгаа эсэхийг шалгах хэрэгтэй. Хэрэв та файлыг бүхэлд нь шалгаж үзээд алдаа олж чадаагүй эсвэл алдаа олж чадсан ч ямар нэгэн байдлаар засах боломжгүй бол та гарцаагүй хийх хэрэгтэй. техникийн дэмжлэгтэй холбоо барина уутаны мэдээлж буй програм эсвэл түүний хөгжүүлэгчид.

Шийдвэрлэхийн тулд энэ асуудалХөтөлбөрийн хөгжүүлэгчдийн тусламжтайгаар та тайланг байрлуулсан файл, компьютерийн танд өгөх мэдэгдлийн протокол гэх мэт зарим баримт бичгийг илгээх шаардлагатай болно.

Нэмж дурдахад, хөгжүүлэгчид танай байгууллагын талаархи зарим мэдээлэл, шаардлагатай гэж үзсэн бусад мэдээллийг танаас хүсч болно, та үүнийг өгөх ёстой, эс тэгвээс асуудал шийдэгдэхгүй.

Тиймээс, хэрэв та татварын албанд тайлан гаргах гэж байгаа боловч файл нь XSD схемтэй таарахгүй байна гэсэн алдаа гаргавал энэ нь таны тайлан гэсэн үг юм. илгээх боломжгүй,Учир нь програм таны оруулсан өгөгдлийг уншиж чадахгүй байна.

Гэхдээ та сандрах хэрэггүй, учир нь ихэнх тохиолдолд ийм асуудал гардаг маш энгийнээр шийдсэнмөн хурдан. Нэмж хэлэхэд, хэрэв та тайлангаа хугацаанд нь илгээсэн боловч буруу хэлбэрийн улмаас хүлээн аваагүй бол татвар торгох эрхгүйТа тайлангаа хугацаанд нь ирүүлээгүй. Юуны өмнө алдааны текстэд анхаарлаа хандуулаарай, магадгүй түүний үүсэх шалтгааныг тэнд аль хэдийн зааж өгсөн байх болно.

Үнэндээ хоёрхон шалтгаан байж болно. Эсвэл та төхөөрөмж дээрээ суулгасан байна хуучин хувилбархөтөлбөрүүд, та тайлан гаргадаг, энэ тохиолдолд асуудлыг шийдвэрлэхэд хялбар байдаг, та зүгээр л хамгийн их татаж авах хэрэгтэй Сүүлийн шинэчлэл, та үүнийг ихэвчлэн ашиглаж буй програмынхаа вэбсайтаас олж болно. Хоёрдахь шалтгаан нь та зарим өгөгдлийг буруу бөглөсөн эсвэл ямар ч талбарыг огт бөглөөгүй байж болно.

Энэ тохиолдолд та файлаа шалгах хэрэгтэй бөгөөд програм нь үүнийг алдаа гэж үзэж болно гэдгийг санах хэрэгтэй хачин орон зай . Хэрэв та алдааны шалтгааныг олж чадахгүй бол холбоо барьж болно техникийн дэмжлэгхөтөлбөрүүд, тэнд мэргэжилтнүүд таны асуудлыг шийдвэрлэхэд туслах нь гарцаагүй.

XML формат нь янз бүрийн солилцоонд маш их алдартай байдаг текст баримт бичигхооронд мэдээллийн систем. Баримт бичгийн өвөрмөц бүтцийг бий болгох чадвар нь үүнийг олон салбарт ашиглах боломжийг олгодог. дижитал номын сангууд, WEB, импорт/экспорт болон бусад олон. Энэ форматтай ажиллахад тохиромжтой боломж байхгүй бол 1С системүүд ийм алдартай болж чадахгүй байх байсан. 1С нь WEB технологийг идэвхтэй ашигладаг тул хөгжүүлэгч бүр XML уншиж, түүнд мэдээлэл бичих чадвартай байх ёстой.

XML файлыг төлөөлж, уншиж байна

XML тэмдэглэгээний хэлний гол давуу талуудын нэг нь нэлээд тохиромжтой, ойлгомжтой бүтэц, синтакс юм. Зохиогчид үүнийг бүтээхдээ хүн болон компьютерт уншихад хялбар тэмдэглэгээний хэлийг бий болгох зорилго тавьсан. Өнөөдрийг хүртэл XML нь бусад форматуудад өргөнөөр хөгжсөн боловч түгээмэл бөгөөд өргөн хэрэглэгддэг хэвээр байна. XML файлын бүтцийг дараах схемийн дагуу бүтээв.

1С руу өгөгдөл импортлох жишээг авч үзэхийн тулд дээрх файл хангалттай байх болно. Бичсэн процедур нь XML файлыг унших чадвартай байхын тулд файл руу орох замыг түүнд дамжуулахад хангалттай. Үүнийг интерфэйсээр дамжуулан хийж болох бөгөөд энэ нь хэрэглэгчдэд файлыг өөрсдөө зааж өгөх эсвэл боловсруулах текстэд хатуу кодлох боломжийг олгодог.

1С-д 100 МБ хүртэлх XML-тэй ажиллах түгээмэл аргуудын нэг бол Document Object Model (DOM) ашиглах явдал юм. Үүний утга нь XML-д дүрслэгдсэн баримт бичгийн бүх цэгүүдийг дараалан боловсруулах явдал юм. Суурилуулсан 1С хэл дээр энэ алгоритм дараах байдалтай байна.

  1. XML файлыг унших механизмуудыг зарлах; Зангилаа дамжих гогцоо;
  2. Зангилаа дахь өгөгдөл болон шинж чанаруудыг унших;
  3. Мэдээллийн гаралт. Шаардлагатай бол энэ үе шатанд хувьсагчдад эсвэл шаардлагатай хүснэгтэд нэн даруй бичих боломжтой;
  4. Механизмыг дуусгах.
&AtServer процедур ReadAtServer(PathToFile) //Механизмын мэдэгдэлReadMechanism = Шинэ XMLReader; ReadMechanism.OpenFile(PathToFile); Builder = Шинэ DOM Builder; Баримт бичиг = Builder.Read(ReadMechanism); //зангилаа дамжих гогцоо Элемент бүрийн хувьд Document.DocumentElement.ChildrenNodes-аас давталт //өгөгдөл унших Хэрэв element.NodeName = "Бүтээгдэхүүн" Дараа нь бүтээгдэхүүн = элемент; Утга бүрийн хувьд Product.ChildNodes Loop-ээс Хэрэв values.NodeName = "Нэр" дараа нь Name = утгууд; Өнгө = Name.Attributes.GetNamedElement("Өнгө"); ElseIf values.NodeName = "Үнэ" дараа нь Зардал = утгууд; Валют = Cost.Attributes.GetNamedItem("Валют"); EndIf; Төгсгөлийн мөчлөг; //гаралтын мессеж Тайлан("Нэр: " + Name.TextContent + "; өнгө: "+Color.Value +"; Үнэ: "+Cost.TextContent + "; Валют: "+Валют.Утга); EndIf; Төгсгөлийн мөчлөг; //механизмыг хаах Төгсгөлийн процедур

Үүний үр дүнд бид импортын өгөгдөлтэй хэрэглэгчдэд мессеж харуулдаг. Та мөн бүх өгөгдлийг хүссэн бүтцэд оруулж, үүн дээр үндэслэн лавлах дахь баримт бичиг эсвэл оруулгуудыг үүсгэх программчилж болно. xml-тэй 1С-ийн хурд нэлээд өндөр тул энэ форматыг бусад эх сурвалжтай мэдээлэл солилцоход улам бүр ашигладаг.

Мэдээлэл байршуулахын тулд бид файлуудтай харилцах шаардлагатай болно XML формат. 1C WriteXML платформын объектыг ашиглан бичлэгийн жишээг авч үзээд, нэршлийн дагуу өгөгдлийг байршуулъя. Үүний гол давуу тал нь кодын хялбар байдал, өгөгдөл боловсруулах хурд юм. XML файл бичих серверийн алгоритмыг хэд хэдэн дараалсан алхмуудаар дүрсэлж болно.

  1. Бид xml файлд холбогддог;
  2. Бид толгойн элементүүдийг үүсгэж, тэдгээрт өгөгдөл бичдэг. Хэрэв та их хэмжээний мэдээллийг XML файл руу буулгахыг хүсвэл энэ үе шатанд гогцоо ашиглах болно. Өгөгдлийн хүсэлтийг гогцоонд биш харин өмнө нь хийх ёстой гэдгийг мартаж болохгүй;
  3. Бид файлыг хаадаг.
//Nomenclatura.xml файлыг нээгээд толгой элементийг бичих WriteToFile = New WriteXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteToFile.3writeStartItem("Бараа"); // бичлэгийн өгөгдлийг сонгох SelectionFromDirectory = Directories.Nomenclature.Select(); //бичлэг хийх мөчлөгийн үед SelectionFromDirectory.Next() давталт //шинэ өгөгдөл бичих WriteToFile.WriteItemBeginning("Item"); WriteToFile.WriteAttribute("Нэр", SelectionFromCatalog.Name); WriteToFile.WriteAttribute("InitialPrice", String(SelectionFromCatalog.InitialPrice)); WriteToFile.WriteEndElement(); Төгсгөлийн мөчлөг; //Толгойн элемент болон файлыг хаах WriteToFile.WriteEndElement(); WriteToFile.Close();

1С дахь XDTO механизм

1С компанийн хөгжүүлэгчид XML - XDTO (XML Data Transfer Objects) -ээр дамжуулан мэдээлэл солилцох өөрийн механизмыг бий болгосон. 8.1 хувилбараас эхлэн платформ нь XML файл үүсгэх асуудлыг судлахгүйгээр бусад системтэй мэдээлэл солилцох чадвартай. Техникийн ихэнх асуудлыг 1С хариуцдаг бөгөөд бид зөвхөн XML үүсгэхэд шаардлагатай өгөгдлийг зааж өгөх ёстой. Үнэн бол үүний тулд хөгжүүлэгч урьдчилан зарим заль мэх хийх хэрэгтэй.

XDTO ашиглан XML файлыг ачаалахын тулд бид 1С-д файлын бүтцийг хэлэх ёстой. Энэ нь текст засварлагч дээр үүсгэх эсвэл тусгай програм ашиглах боломжтой багц схемээр дамждаг. Үр дүн нь тайлбарласан файл байх ёстой ерөнхий бүтэц XML файлд ашигласан өгөгдлийн төрлүүд. Шинэ XML-г унших эсвэл бичихийн өмнө хөгжүүлэгч өөрийн схемийг "XDTO багцууд" хэсгийн тохиргоонд ачаалах ёстой.

Энэ тохиолдолд бид өөрсдийн гараар энгийн багц үүсгэх бөгөөд жишээлбэл 1С манай файлын бүтцийг ойлгох болно. Файл үүсгэх ажлыг амжилттай дуусгахын тулд бид толгой элемент болон шинж чанаруудтай хавсралттай гэдгийг схемд тусгах хэрэгтэй. Үүсгэсэн схемийг xsd файл руу экспортлож, xml-тэй хамт шилжүүлэх ёстой бөгөөд ингэснээр нөгөө тал нь бүтэцтэй харьцах, xdto багцыг дахин үүсгэх шаардлагагүй болно.


Шинэ XML-г хадгална уу HDDөмнөхтэй төстэй сервер талын алгоритм нь туслах болно. Ганц ялгаа нь 8.3 1C платформын тусгай механизм болох XDTO үйлдвэрт 1 бүтээгдэхүүний өгөгдлийг нэмэх хэрэгцээ юм. Хэрэв илүү олон түвшний үүрлэх шаардлагатай бол толгойн элемент бүрийг тайлбарлах хэрэгтэй болно.

//XML файлыг нээх WriteToFile = New WriteXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //1С-д ямар төрлийн өгөгдөл үүсгэх ёстойг зааж өгнө үү - толгой элемент AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); // байршуулах өгөгдлийг сонгох SelectionFromDirectory = Directories.Nomenclature.Select(); //Толгойн элементэд бүтээгдэхүүн тус бүрийг нэмэх ByeDirectory Selection.Next() давталт Бүтээгдэхүүн = XDTO Factory.Create(XDTO Factory.Type("http://wiseadviceXML.org","Product")); Product.Description = SelectionFrom from Directory.Description; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts.Add(Бүтээгдэхүүн); Төгсгөлийн мөчлөг; //өгөгдлөө бичиж, FactoryXDTO файлыг хаа.WriteXML(WriteToFile, AllProducts); WriteToFile.Close();

Харгалзан үзэх механизмууд нь нэлээд түгээмэл бөгөөд зөв тохиргооихэнх асуудлыг шийдэж чадна. Гэсэн хэдий ч 1C ба XML хоорондын харилцан үйлчлэлд маш олон нюансууд байдаг. XML файлыг боловсруулах нь нэлээд нарийн даалгавруудыг шийддэг тестийн даалгавар дээр бус бодит нөхцөлд тэдгээрийг судлах нь илүү үр дүнтэй байдаг.

Платформууд: 1С: Аж ахуйн нэгж 8.3, 1С: Аж ахуйн нэгж 8.2, 1С: Аж ахуйн нэгж 8.1
Тохиргоо: Бүх тохиргоо

2012-11-25
34938

XDTO нь вэб үйлчилгээг үүсгэх, ажиллуулахад шаардлагатай механизм юм. XDTO багцууд нь өгөгдлийг XML-ээс болон XML рүү өөрчлөхөд шаардлагатай XML файлын бүтцийг тодорхойлдог.

XML бол энгийн текст файл дахь нарийн төвөгтэй өгөгдлийн бүтцийг дүрслэх арга юм. Энэ нь зөвхөн өгөгдөл өөрөө төдийгүй тэдгээр нь хадгалагдаж буй талбаруудыг тодорхойлдог.
Энд үндсэн XML файлын жишээ байна:

Дамми нарт зориулсан XML

Хэрэглэсэн нэрс (шошго). өгсөн файл- root, жагсаалт, нэр, el - туйлын дур зоргоороо байж болно. XML файл үүсгэх үндсэн дүрмүүд нь түүний бүтцээс шууд харагдана.
- Элементүүдийг үүрлэх боломжтой;

Элементийн эхлэл<Имя>, төгсгөл нь ижил нэртэй боловч "/" тэмдэгт нэмсэн.

Элемент нь дараахь байж болно.
- үүрлэсэн элементүүд;
- Текст.

Элемент бүр шинж чанартай байж болно (шинж чанарууд), тэдгээр нь утга, нэртэй байдаг. XML-д ямар ч тэмдэгт ашиглахыг хориглоно, учир нь тэдгээрийн хэд хэдэн нь XML-д шууд ашиглагддаг, жишээ нь "<» и «>". XML-д тайлбарлах арга нь бусадтай солилцоход ашиглахад маш тохиромжтой гуравдагч талын програмуудбөгөөд энэ нь 1С өгөгдөл солилцох механизмд ашиглагддаг.

Нэрийн орон зай

XML файл нь XML хувилбар, кодчилол гэх мэтийг тайлбарласан толгой хэсгээс эхэлдэг... XML толгойг хатуу шаарддаггүй бөгөөд ихэнхдээ үүнийг ашигладаггүй. Толгой хэсэгт нэрийн орон зайг тодорхойлох боломжтой.

XML файлууд нь интернетээр дамждаг бөгөөд олон янзын программуудаар хүлээн зөвшөөрөгддөг. Мэдэгдэж байгаа - энэ нь тэдний код хамгаалалттай гэсэн үг юм - хэрэв та XML файлд тодорхой элементийн нэртэй таарч байвал та үүнийг ийм байдлаар хүлээн авч, үүнийг хийх хэрэгтэй. Тиймээс, бид IBM тагийг ашиглах үед өөр программ үүнийг өөрийн мэддэг IBM гэж бодох магадлал өндөр байдаг.

Үүнээс урьдчилан сэргийлэхийн тулд манай IBM болон бусад бүх хоорондын ялгааг тодорхой зааж өгөхийн тулд файл дахь нэрийн зайны нэрийг тохируулах боломжтой - элементүүдийн нэрний өмнө хэрэглэгддэг угтвар.

Та нэрийн орон зайг (нэрийн орон зай) дараах байдлаар тодорхойлж болно - xmlns: Угтвар (NameSpace) = "URL", жишээ нь:
xmlns:store = "http://site.ru"

Яагаад URL хэрэгтэй вэ? Хэн аль хэдийн бодож, цааш хардаг - мэдээжийн хэрэг, бидний зохион бүтээсэн нэрийн орон зай нь өвөрмөц биш байж магадгүй юм, жишээлбэл. өөр хэн ч үүнийг ашиглаж болно. Тийм ч учраас тусгай өвөрмөц танигчийг зааж өгсөн бөгөөд энэ нь нэгэн зэрэг нэрийн зайны гүйцэтгэгчийг тодорхойлдог.

Мэдээжийн хэрэг, нэрийн орон зайг зааж өгсөн хүн үнэхээр шударга байна гэсэн үг юм. Энэ нь өөрийн сайт руу чиглэдэг бөгөөд нэг сайттай хэд хэдэн өөр нэрийн орон зайг ашигладаггүй. Дүрмээр бол сайтын URL болон сайт дээрх тодорхой фолдерын URL хоёулаа тодорхойлогдсон тул энэ сайтын аль ч хавтсанд өөр нэрийн орон зай үүсгэх боломжтой бөгөөд үүнийг ямар ч нөхцөлд ашиглах боломжтой.

DOM

Объект нь бие даасан, бүх өгөгдлийг агуулсан тодорхой өгөгдлийн бүтэц юм.

XML файлд бүтэцлэгдсэн өгөгдлийн тайлбар, өөрөөр хэлбэл өөрийн гэсэн шинж чанартай бүтэц хэлбэртэй өгөгдөл байдаг тул тэдгээрийг объект болгон үзэх боломжтой. Үзэж буй жишээнд шинж чанар болон үүрлэсэн элемент бүхий LIST объектыг ашиглаж болно.

DOM нь XML файлыг текст хэлбэрээр биш, харин талбар, шинж чанар гэх мэт объектуудын багц хэлбэрээр үзэх арга юм.

Сул талуудаар энэ аргаажиллах, хамаарна өндөр шаардлага PC-ийн гүйцэтгэлд, гэх мэт DOM нь хэмжээнээс нь үл хамааран XML файлыг бүхэлд нь нэг дор боловсруулдаг (объект хэлбэрээр бүтцийг бүрдүүлдэг) бөгөөд том файлуудыг (4 ГБ-аас дээш) "шинжлэх" боломжгүй юм.

Том файлуудыг задлан шинжлэхийн тулд SAX ашигладаг бөгөөд файлыг задлан шинжлэх энэ аргыг файлыг дараалан уншихад үндэслэдэг бөгөөд түүний бүтцийг бүхэлд нь нэг дор бий болгоход суурилдаггүй. .

XML файлын тайлбар

Хэрэв бид 2 программ хооронд солилцохдоо тодорхой бүтэцтэй файлыг байнга ашигладаг бол дараахь зүйлийг хүсэх байх.

Ашиглах тодорхой гарчиг;
- Зөвхөн бидний хүлээж буй элементүүдийг ашиглах ("биржид ашиглахын тулд заавал байх ёстой");
- Зөвхөн бидний хүлээж буй төрлүүдийг (тоо, мөр гэх мэт) шинж чанаруудад зааж өгсөн болно.

XML бүтцийг тайлбарлахын тулд дараах файлын форматууд байдаг (мөн энгийн текст файлд хадгалагддаг):

DTD өргөтгөл нь Document Type Definition;
- XSD өргөтгөл нь XML Shema юм.

Эдгээр форматууд нь баримт бичиг ямар байх ёстойг тодорхойлдог. Ийм стандарт файлд тайлбарласан XML тохирлыг шалгах процедурыг баталгаажуулалт гэж нэрлэдэг.

XDTO

XDTO нь XML файлын тайлбарыг тохиргоонд нэмэх боломжийг олгодог 1С объект юм. Илүү нарийвчлалтай хэлэхэд, энэ нь файл өөрөө биш, харин тодорхой XML бүтэц юм.

Ашиглаж болох төрлүүдийг зааж өгөхийн тулд - жагсаалтыг ашигладаг, төрлийн номын сан - XDTO үйлдвэр гэж нэрлэдэг. Энэ үйлдвэр нь зөвхөн энгийн төрлүүд(огноо, мөр, тоо), бусад програм, хэл гэх мэт хэрэглэгддэг, гэхдээ 1С болон тодорхой тохиргоонд ашигладаг 1С төрлүүд.

XDTO үйлдвэр нь хэд хэдэн багцыг агуулдаг. Анхны төрлүүдийг багцад тайлбарласан болно www.w3.orgТохиргооны өгөгдлийн төрлийг багцад тайлбарласан болно http://v8.1c.ru/8.1/data/enterprise/current-config

Эдгээр төрлийг англи маягт (CatalogRef, DocumentObject, CatalogObject, DocumentRef) нэмсэн тохируулагч дахь нэрсийн дагуу нэрлэсэн болно, жишээлбэл:

CatalogObject.Accounts

XDTO багц нэмж байна

Бид XML файлуудыг HTML файл гэх мэт өөр зүйл болгон хувиргах арга болох XSLT сэдвээр ирлээ. XML-ийн сэдэв нь маш том бөгөөд үүн дээр нэгээс олон ном бичигдсэн байдаг.

Бидний даалгавар бол XDTO нь унших эсвэл үүсгэх шаардлагатай XML багцад байх ёстой элементүүдийг тайлбарлах боломжийг танд олгоно гэдгийг ойлгох явдал юм. XDTO багцууд нь 1С тохиргоонд болон Ерөнхий салбар болох XDTO багцуудад байрладаг.

XDTO багцыг 1С-д гараар нэмэх боломжтой боловч тохирох XSD файлыг бэлэн файлаар авах нь дээр. Дэлгэрэнгүй тодорхойлолтсхем. Ямар ч тохиргооны XSD объектуудын схемийн тайлбарыг Ерөнхий - XDTO-багцуудын салбар дээр товшиж, цэснээс "XML тохиргооны өгөгдлийн схемийг экспортлох" зүйлийг сонгох замаар олж авах боломжтой.

Энэ текст файл, та засварлах боломжтой Windows тэмдэглэлийн дэвтэр, шаардлагагүй объектуудыг (таны хувьд шаардлагагүй) арилгахын зэрэгцээ. Ерөнхий - XDTO багцуудын салбар дээр хулганы баруун товчийг дараад цэснээс "XML схемийг импортлох" зүйлийг сонгосноор 1С-д бэлэн XSD схемийг нэмэх боломжтой.

1С-д XDTO-тэй ажиллах нь утгыг XML-ээс XML болгон хувиргах явдал юм. Үүнийг 1С хэлний объектуудыг ашиглан хийдэг XML/XMLWriting унших.

XDTO-тэй ажиллахдаа та шууд ажиллаж байгаа багцаа зааж өгөх ёстой. Энэ нь ерөнхий багц (дээрх хэлэлцүүлгийг XDTO) эсвэл тохиргоонд нэмсэн багц байж болно.

Багцыг багцад заасан URL-аар тодорхойлно. Ажлын хоёр үндсэн арга байдаг - эдгээр нь:

Цувралжуулалт - автомат өөрчлөлт XML-ээс 1C хүртэлх утгууд ба эсрэгээр;

Объектын талбаруудыг бөглөх, түүнийг үүсгэх, XML рүү бичих (түүнчлэн XML-ээс унших, цаашдын талбаруудыг унших).

Утгыг цуваа болгох жишээг төсөөлөөд үз дээ:

Serializer = Шинэ XDTO Serializer (XDTO үйлдвэр);
XML файл = Шинэ XML бичих();
XMLFile.OpenFile("Файлын нэр");
Serializer.WriteXML(XMLFile, 1C утга);

Урвуу функц - Serializer. XMLReading(), ReadingXML хэлний 1С объектуудаас ашигладаг.
Объект бичих/унших жишээ:

Лавлах XDTOObject = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Contractors"));
Fill inPropertyValues(XDTOObject Directory, Directory.Counterparties.FindBy Attribute("Нэр", "Иванов).Link);

Дараа нь та үүсгэсэн объектыг XML дээр цуваа болгохтой яг ижил аргаар бичиж болно. XML-г дээр дурдсантай ижил аргаар унших үед XDTO утгыг бус, харин ийм объектыг буцааж өгч болно.

XDTO объектыг үүсгэх явцад тохиргооны объектын бүтэцтэй төстэй бүтэц бий болно (мэдээжийн хэрэг та дээрх жишээнд заасан багцаас тохиргооны объектыг үүсгэхгүй бол). Ердийн талбарууд (нэр, код гэх мэт) англи хэл дээр байгаа бөгөөд объект хоосон үүсгэгдсэн тул талбар тус бүрээр тусад нь эсвэл функцийг ашиглан бөглөх ёстой. FillPropertyValues