Bu bölüm size XML şemalarının nasıl yazılacağını gösterecektir. Ayrıca devrenin farklı şekillerde yazılabileceğini de fark etmişsinizdir.

XML belgesi

"shiporder.xml" adlı bir belge olan bu XML'e bir göz atalım:

xmlns: xsi = "http://www.w3.org/2001/XMLSchema-örneği"
xsi: noNamespaceSchemaLocation = "shiporder.xsd">
John Smith

Ola Nordmann

Uzun 23

4000 Stavanger
Norveç


İmparatorluk Burlesk'i
Özel sayı
1
10.90


Kalbini gizle
1
9.90

Bir XML belgesi genellikle "orderid" adı verilen bir gönderim özelliği olan "shiporder" kök öğesinden oluşur. "Shiporder" öğesi üç farklı alt öğe içerir: "orderperson", "shipto" ve "item". "Ürün" öğesi, "başlık" öğesi, isteğe bağlı "not" öğesi, "miktar" öğesi ve "fiyat" öğesi olmak üzere iki türde görünür.

Yukarıdaki satır: Xmlns: XSI = "http://www.w3.org/2001/XMLSchema-instance", XML ayrıştırıcısına bu belgenin şema revizyonlarından suçlu olduğunu bildirir. Satır: XSI: noNamespaceSchemaLocation = "shiporder.xsd" şemaların nerede bulunduğunu belirtir (Burada "shiporder.xml" ile aynı klasördedir) .

XML Şemaları Oluşturma

Şimdi XML belgesi için bir şema oluşturmak istiyoruz.

"shiporder.xsd" adını vereceğimiz yeni bir dosya açarak başlayalım. Diyagramı oluşturmak için XML belgesindeki yapıyı takip edebilir ve bildiğimiz dış görünüm öğesini tanımlayabiliriz. Aşağıdakileri içeren standart XML bildirimini temel alıyoruz: bir şemayı temsil eden bir şema öğesi:



...

Şema en sık kullanılan standart ad alanına (xs) sahiptir ve bu ad alanıyla ilişkili URI, http://www.w3.org/2001/XMLSchema standart anlamına sahip olan dil şemasının anlamıdır.

Daha sonra “shiporder” öğesini seçmek bizim sorumluluğumuzdadır. Bu elemanın bir özelliği vardır ve diğer elemanların yerini alır, dolayısıyla onu bir katlama türü olarak kabul ediyoruz. Alt öğeler "shiporder" öğesi xs: sıra öğesi, bu, alt öğelerin sıralı dizisi anlamına gelir:




...


O halde (herhangi bir niteliği veya diğer unsurları yanlış yerleştirmemek için) "düzen veren" unsurunu basit bir tür olarak düşünmek zorundayız. Önek içeren bir türde (xs: string), XML şemasıyla ilişkili ad alanının öneki, şemanın veri türünü önceden belirtir:










Ek şemalar kullanarak, MaxOccurs ve MinOccurs niteliklerine sahip bir öğenin olası görünüm sayısını belirleyebiliriz. MaxOccurs, bir öğe için maksimum giriş sayısı anlamına gelir ve MinOccurs, bir öğe için minimum giriş sayısı anlamına gelir. Hem MaxOccurs hem de MinOccurs 1 için çıkarımlar!

Artık "item" elementine değer verebiliriz. Bu öğe bir "shiporder" öğesinin ortasında birkaç kez görünebilir. Bu, "sınırsız" öğenin "item" öğesinin maxOccurs niteliğinin ayarlanmasıyla gösterilir; bu, "item" öğesine yazarın istediği kadar çok giriş olabileceği anlamına gelir. Lütfen “not” unsurunun bağlayıcı olmadığına dikkat ediniz. Bunu minOccurs niteliğini sıfıra ayarlayarak çözdük:










Artık elementin "shiporder" özelliğini seslendirebiliriz. Oskolki, vikoristannya = “gerekli” olarak belirttiğimiz zorunlu bir niteliktir.

Not: Bir dahaki sefere gelmekten her zaman suçlu olduğunuz nitelikleri beyan edin:

Eksen, "shiporder.xsd" adı altındaki şema dosyasının son listesindedir:





























ayrı devreler

İlk tasarım yöntemi oldukça basittir ancak belgeler katlanmışsa okuyup takip etmek önemli olabilir.

Bir sonraki yöntem, belirlenen tüm öğelere ve niteliklere göre temeller tasarlamak ve daha sonra ref niteliğini kullanarak bunlara güvenmektir.

Aks yeni tasarım şematik dosyası ("shiporder.xsd"):








































Adlandırılmış türlerin çeşitliliği

Üçüncü tasarım yöntemi, seçilen öğeleri yeniden tasarlamanıza olanak tanıyan bir sınıf veya tür anlamına gelir. İşin püf noktası, elemanları simpleTypes ve ComplexTypes olarak adlandırmak ve ardından elemanın type niteliği aracılığıyla bunlara başvurmaktır.

Eksen zaten şematik dosyanın ("shiporder.xsd") üçüncü tasarımıdır:

































Sınır öğesi, W3C XML Şeması veri türünün veri türünü belirtir. Dolayısıyla, baştaki parça, öğenin veya niteliğin değerinin satırın değerinden sorumlu olduğu anlamına gelir:

Sınır elemanı, sınırı elemanlarla pekiştirmek için sıklıkla değişikliğe tabi tutulur. Aşamalı olarak daha düşük dozların ilerleyişini izleyin:





Bu, öğenin veya niteliğin değerlerinin sıralı olması gerektiğini, satırda tam olarak altı karakter olması gerektiğini ve karakterlerin 0'dan 9'a kadar numaralandırılması gerektiğini belirtir.

XDTO, 1C'de web hizmetleri oluştururken ve yüklerken gerekli olan bir 1C mekanizmasıdır.

XDTO 1C paketleri, verileri XML'e ve XML'den dönüştürmek için gerekli XML dosyasının yapısını tanımlamanıza olanak tanır.

Kimin umrunda - hadi beslenme raporuna bakalım.

XML dosyaları İnternet üzerinden iletilir ve çeşitli programlar tarafından işlenir.

Kabul edildi - kodda sabit kodlanmış olduğu anlamına gelir - eğer XML dosyasında öğenin adını belirtirseniz - bu ekseni bu şekilde kabul edin ve ekseni bu şekilde çalıştırın.

Bu nedenle, eğer Apple öğesini vikorize edeceksek, o zaman başka herhangi bir programın Apple'a aşina olduğunu "düşünmesi" büyük bir şanstır, ancak aynı zamanda kendi programımıza da saygı duyuyoruz.

Bunun gerçekleşmemesini sağlamak ve Apple'ımızın diğerlerinden farklı olduğunu açıkça belirtmek için dosyaya, öğelerin adından önce kullanılan bir adlandırma alanı - bir önek verilebilir.

Ad alanı ekseni şu şekilde görüntülenir - xmlns: SpaceName = "URL", örneğin:
xmlns: mağaza = "http://store.ru"

Hangi URL'ye ihtiyaç var?

Bu, aynı zamanda ad alanının yazarını da tanımlayan benzersiz bir tanımlayıcıyı belirtir.

İsimlerin yer aldığı alanı belirten kişinin aynı zamanda dürüst olmasına ve kendi sitesini belirterek, tek bir siteyle birden fazla farklı isim alanlarına vikoristlik yapmamasına saygı duymak doğaldır.

Konuşmadan önce, yalnızca sitenin URL'sini değil, sitedeki belirli bir klasörün URL'sini de belirttiğinizden emin olun, böylece farklı bir durumda seçiminize göre sitenin diğer yerlerinde başka bir ad alanı oluşturabilirsiniz.

Bir nesne, tüm verilerini içeren, kendi kendine yeterli bir veri zinciri yapısıdır.

XML yapılandırılmış verileri tanımladığından, kendi güçleri vb. olan yapılara benziyor, o zaman onlara nesneler gibi bakabilirsiniz.

Seçilen uygulama, bir güce ve ekli bir öğeye sahip bir LIST nesnesine sahip olabilir.

DOM, bir XML dosyasına düz formatta bir metin olarak değil, yetkililer, alanlar vb. içeren bir nesne koleksiyonu olarak bakmanın bir yoludur.

XML dosyasının açıklaması

İki program arasında değişimi kolay bir şarkı yapısı dosyası oluşturduğumuzdan, şunları yapmak istiyoruz:

  • Vikoristan şarkılarının isimleri ne olurdu?
  • Böylece fark ettiğimiz unsurlar var (“değişimimizde vikoristanya'dan sorumlu olan”)
  • Boule'un özellikleri bildiğimiz türleri (satır, sayı vb.) belirtmelidir.

XML yapısını açıklamak için aşağıdaki dosya formatı standartları vardır (bunlar aynı zamanda orijinal metin dosyasına da kaydedilir):

  • DTD Uzantısı - Belge Türü Tanımı
  • XSD uzantısı - XML ​​Şeması.

Suç, belgenin neyden suçlu olduğunu açıklayacak şekilde biçimlendirilmiştir. Böyle bir dosyada açıklanan XML standardının uygunluğunu doğrulama prosedürüne doğrulama denir.

XDTO 1C - konfigürasyona açıklama eklemenizi sağlayan bir şey XML dosyası. Öncelikle anlatılan dosya değil, belirli XML yapılarıdır.

Seçilebilecek türleri belirtmek için bir liste oluşturulur, türlerden oluşan bir kitaplığa XDTO 1C fabrikası adı verilir.

Bu fabrika, diğer dillerde, programlarda vb. yaygın olarak kullanılan basit türleri (sıra, numara, tarih) ve ayrıca 1C'de ve belirli bir konfigürasyonda kullanılan 1C türlerini gösterir.

XDTO 1C fabrikasının kendisi birkaç paketten oluşur. Temel türler www.w3.org adlarıyla pakette açıklanmıştır.

Geçerli yapılandırma verilerinin türleri http://v8.1c.ru/8.1/data/enterprise/current-config paketinde açıklanmaktadır.

Türlerin kendisi yapılandırıcıdaki isme göre İngilizce bir formun eklenmesiyle (CatalogRef, CatalogObject, DocumentRef, DocumentObject) adlandırılır, örneğin:

KatalogObject.Nomenclature

XDTO 1C paketinin eklenmesi

Her şey çok havalı geliyor. XML dosyalarını HTML gibi başka bir şeye dönüştürmenin bir yolu olan XSLT'yi henüz keşfetmedik. XML konusu son derece geniştir ve herhangi bir kitaba dahil edilmesi zordur.

Amacımız, XDTO 1C'nin bir XML paketinin biçimlendirilmesi veya içe aktarılması gereken tüm öğelerini tanımlamanıza olanak tanıdığını anlamaktır.

XDTO 1C paketleri Zagalny köyünde / XDTO 1C paketlerinde yapılandırılmıştır.

XDTO paketini 1C'ye manuel olarak ekleyebilirsiniz (harika!) Veya daha iyisi, şemaların hazır açıklamasını içeren uygun XSD dosyasını indirebilirsiniz.

Herhangi bir konfigürasyondaki nesnelerin XSD şemalarının bir açıklaması, Zagalny / XDTO 1C Paketleri sekmesine tıklayarak ve XML konfigürasyon şemalarını dışa aktar menü öğesini seçerek bulunabilir.

Metin dosyası olarak düzenleyebilirsiniz Windows not defterleri, Uygulamaları topladıktan sonra nesnelere ihtiyacınız kalmaz.

1C'ye hazır bir XSD şemasını tuşuna basarak ekleyebilirsiniz. sağ düğme Zagalni / XDTO 1C paketleri sekmesinde ve XML şemalarını içe aktar menü öğesini seçerek.

Vikoristannaya'dan XDTO 1C mekanizmasına

XDTO 1C ile çalışmak, değeri XML'e ve XML'den dönüştürmek anlamına gelir.

1C dili Okuma XML / Yazma XML'inin ek nesneleri üzerinde çalışmalar yürütülmektedir.

XDTO 1C mekanizması ile çalışırken ilgilendiğiniz paketi belirtmek sizin sorumluluğunuzdadır. Bu standart bir paket (yukarıda tartışılmıştır, div. XDTO) veya konfigürasyona bir paket eklenmesi olabilir. Paket, pakette belirtilen URL ile tanımlanır.

iki ana basit yollar robotlar:

  • Serileştirme - 1C değerlerinin XML'e ve daha fazlasına otomatik dönüştürülmesi
  • Bir nesne oluşturmak, alanlarını doldurmak, XML'e yazmak (ve tabii ki XML'den okumak ve ardından alanlarını okumak).

Popo serileştirme anlamı:
Serileştirici = Yeni SerileştiriciXDTO(XDTO Fabrikası);
DosyaXML = Yeni GirişXML();
FileXML.OpenFile("dosya adı");
Serializer.WriteXML(XMLFile, Value1C);

Bir nesneyi okuma/yazma örneği:

DirectoryObjectXDTO = FactoryXDTO.Create (FactoryXDTO.Type ("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Warehouses"));
Özellik Değerlerini doldurun (DirectoryObjectXDTO, DirectoryLink1C);

platformlar: 1C: Girişimcilik 8.3, 1C: Girişimcilik 8.2, 1C: Girişimcilik 8.1
konfigürasyonlar: Tüm konfigürasyonlar

2012-11-25
34938

XDTO, web servislerinin oluşturulması ve çalıştırılması için gerekli olan bir mekanizmadır. Ek XDTO paketleri, verileri XML'den XML'e değiştirmek için gereken gerekli XML dosyasının yapısının açıklamasını sağlar.

XML - bu yöntem, birincil metin dosyasındaki verilerin karmaşık yapısını tanımlamanıza olanak tanır. Hiç kimse sadece mutlak verileri değil aynı zamanda bunların kaydedildiği alanları da tanımlamıyor.
Aks tabanı alın XML dosyası:

Aptallar için XML

İsimler (etiketler), wiki'ler bu dosya- root, list, name, el - kesinlikle tatmin edici olabilir. Bir XML dosyasını anlamanın temel kuralları, yapısından hemen görülebilir:
- Öğe eklemek mümkündür;

eleman koçanı<Имя>, Sonlandırma - “/” sembolünün eklenmesi dışında aynı adlar.

Bir öğenin ortasında hareket edebilirsiniz:
- Elementlerin katkıları;
- Metin.

Cilt elemanı güçlerin (niteliklerin) varlığına sahip olabilir, anlamları ve isimleri belirtirler. XML'de, birçoğu doğrudan XML için kullanıldığından, herhangi bir sembol kötüye kullanıma karşı korunur, ancak "<» и «>" XML'deki açıklama yöntemi vikoristan için başkalarıyla alışveriş yaparken çok uygundur üçüncü taraf programları Ve 1C veri değişim mekanizmalarında kullanılır.

adların alanı

Bir XML dosyası, XML sürümünü, kodlamasını açıklayan bir başlıkla başlar... XML'deki konu tamamen basit değildir ve anlaşılması genellikle zordur. Başlığın farklı bir anlamı da olabilir - adların alanı.

XML dosyaları İnternet üzerinden iletilir ve birçoğu alınır farklı programlar. Kabul edilirler - bu, kodlarının kablolu olduğu anlamına gelir - XML ​​dosyasında aynı öğe adını belirtirseniz, bunu kendiniz kabul etmeniz ve eksen üzerinde çalışmanız gerekir. Dolayısıyla IBM etiketini seçersek, bizim kendisine saygı duymadığımız bir zamanda başka bir programın kendisinin bildiği IBM olduğunu düşünme ihtimali yüksektir.

Bundan kaçınarak ve IBM'imizin diğerleri üzerindeki yetkisini açıkça belirtmek için, dosyada adların alanını (öğelerin adından önce görünen bir önek) adlandırabilirsiniz.

Ad alanını aşağıdaki yöntemi kullanarak belirleyebilirsiniz - xmlns: Prefix (SpaceName) = "URL", örnek:
xmlns: mağaza = "http://site.ru"

Gerekli bir URL var mı? Kim zaten daha fazla düşünmüş ve hayret etmişse - elbette, biz de benzersiz olmayan isimler bulduk, ancak bir başkası da onu vikorize edebilir. Bu, aynı zamanda ad alanını da belirten özel bir benzersiz tanımlayıcıyla gösterilir.

Doğal olarak, kişisel isimlerin kapsamının belirtilmesinin de adil olduğu gerçeğine saygı duyuyoruz. Kendi web sitesine işaret eder ve tek bir web sitesi ile birden fazla farklı isim alanına müdahale etmez. Kural olarak, hem sitenin URL'sini hem de sitedeki şarkı klasörünün URL'sini belirtin; böylece, bu sitedeki herhangi bir klasörde, herhangi bir durumda kullanılmak üzere başka bir ad alanı oluşturmak mümkün olur.

DOM

Nesne, kendi kendine yeterli olan ve tüm verilerini içeren belirli bir veri yapısıdır.

Bununla bağlantılı olarak XML dosyası yapılandırılmış verinin bir açıklamasını içerir, böylece veri kendi gücüne sahip bir yapıya sahip olur ve aksi halde onlara nesneler gibi bakabilirsiniz. Bu örnekte, yetkilileri ve gömülü bir öğeyi içeren bir LIST nesnesine sahip olabilirsiniz.

DOM, bir XML dosyasını belirli bir formattaki metin olarak değil, alanları, güçleri vb. olan bir dizi nesne olarak görüntülemenin bir yoludur.

Eksilerden önce Bu method DOM, boyutundan bağımsız olarak tüm XML dosyasını aynı anda oluşturduğundan ve büyük boyutlu dosyalar (4 GB'den fazla) basitçe "sindirilemez" olduğundan robotların PC verimliliği üzerinde büyük bir etkisi vardır.

analiz için harika dosyalar SAX, Wikorist tarafından kullanılır; bu yöntem, bir dosyayı, tüm yapısının tek tek esasına göre değil, sıralı olarak okunan dosyaya dayalı olarak analiz etme yöntemidir. .

XML dosyasının açıklaması

Eğer 2 program arasındaki alışverişi kolaylaştırmak için belirli bir yapıya sahip bir dosya oluşturuyorsak o zaman kesinlikle aşağıdakileri yapmak isteriz:

Shchob vikoristani buli özel olarak adlandırın;
- Böylelikle tespit ettiğimiz (“karşılıklı durgunluktan sorumlu” olan) unsurlar vurgulanmış oldu;
- Niteliklerde yalnızca tarafımızdan belirlenen türler (sayı, satır vb.) belirtilmelidir.

XML yapısını açıklamak için aşağıdaki dosya formatları vardır (bunlar aynı zamanda basit bir metin dosyasına da kaydedilir):

DTD'nin Uzantısı Belge Türü Tanımıdır;
- XSD'den XML Şemasına genişletilmiş.

Bu formatlar belgenin neyden suçlu olduğunu açıklar. Benzer bir standart dosyada açıklanan XML türünün doğrulanması prosedürüne doğrulama adı verilir.

XDTO

XDTO, yapılandırmaya bir XML dosyasına açıklama eklemenizi sağlayan bir 1C nesnesidir. Daha doğrusu, açıklanan dosyanın kendisi değil, XML yapısıdır.

Seçilebilecek türleri eklemek için, XDTO fabrikası adı verilen türlerden oluşan bir kitaplık olan bir liste oluşturulur. Bu fabrika yalnızca diğer programlarda seçilen basit türleri (tarih, satır, sayı) değil, aynı zamanda 1C'de ve önceki yapılandırmada seçilen 1C türlerini de belirtir.

XDTO fabrikası bir dizi paket içerir. Koçanı türleri bir adla birlikte bir pakette açıklanmıştır www.w3.org Yapılandırmadaki veri türleri pakette açıklanmıştır http://v8.1c.ru/8.1/data/enterprise/current-config

Bu türler, İngilizce görünümün eklenmesiyle (CatalogRef, DocumentObject, CatalogObject, DocumentRef) yapılandırıcıdaki adlarına göre adlandırılır, örneğin:

CatalogObject.Accounts

XDTO paketini ekleme

XML dosyalarını başka herhangi bir şeye dönüştürmenin bir yolu olan XSLT'ye geldik; HTML dosyaları. XML'in konusu son derece geniştir ve üzerine birden fazla kitap yazılmıştır.

Amacımız, XDTO'nun bir XML paketinde bulunan ve önemli olması veya biçimlendirilmesi gereken öğeleri tanımlamanıza olanak sağladığını anlamaktır. XDTO paketleri 1C konfigürasyonunda ve Zagalny şehrinde - XDTO paketlerinde bulunur.

XDTO paketini 1C'ye manuel olarak ekleyebilirsiniz, ancak en iyisi son XSD dosyasını hazırlayacağız rapor açıklamasışemalar. Herhangi bir konfigürasyonun XSD nesne şemalarının bir açıklaması, Zagalny sekmesi - XDTO paketlerine tıklayarak ve menüdeki "Yapılandırma verilerinin XML şemalarını dışa aktar" öğesini seçerek bulunabilir.

Bu metin dosyasını Windows Not Defteri'nde düzenleyebilir, ardından nesneyi seçebilirsiniz (buna ihtiyacınız yoktur). Zagalni - XDTO paketleri sekmesine sağ tıklayıp menüdeki "XML şemasını içe aktar" öğesini seçerek 1C'ye hazır bir XSD şeması ekleyebilirsiniz.

1C'de XDTO ile çalışmaya, bir değeri XML'den XML'e dönüştürme denir. Lütfen 1C Movi'de ek yardım isteyin XML Okuyucu / XMLWrite.

XDTO ile çalışırken çalıştığınız paketi belirtmeniz gerekmektedir. Bu, standart bir paket (tartışılan alandaki div, XDTO) veya kendisi için bir konfigürasyonun oluşturulduğu bir paket olabilir.

Paket, pakete dahil edilen URL ile tanımlanır. Başlıcaları olan iki çalışma yolu vardır:

Serileştirme - 1C'de XML'den otomatik değer değişimi vb.

Bir nesnenin alanlarını doldurmak, onu oluşturmak ve XML'de yazmak (ve ayrıca XML'den okumak ve ardından alanlarını okumak).

Görünür popo serileştirme değeri:

Serileştirici = Yeni XDTO Serileştirici (XDTO Fabrikası);
XML Dosyası = Yeni XML Kaydı();
XMLFile.OpenFile("dosya adı");
Serializer.WriteXML (XMLFile, 1C Değerleri);

Geçit işlevi serileştiricidir. XMLReading (), ReadingXML dilinin 1C nesnelerinden vikorist.
Nesneyi kaydetme/okuma örneği:

Dovdnik XDTOObject = FactoryXDTO.Create (XDTOFactory.Type ("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Counterparties"));
Özellik Değerlerini doldurun (DirectoryXDTOObject,Directory.Counterparties.FindByRequisite("Name", "Ivanov").Link);

Daha sonra oluşturulan nesneyi, serileştirmeyle tamamen aynı şekilde XML'e kaydedebilirsiniz. Aynı şekilde XML'i okuduğunuzda daha yakından bakabilir, XDTO değerini değil nesnenin kendisini görebilirsiniz.

Bir XDTO nesnesi oluşturulduğunda, bir yapılandırma nesnesinin yapısına benzer bir yapı oluşturulur (tabii ki uygulamada belirtilen bir paketten bir yapılandırma nesnesi oluşturursunuz). Tipik alanlar (ad, kod vb.) tekdüzedir ve nesne boş oluşturulur, bu nedenle onu dış görünüm alanı çevresinde veya diğer işlevlerle hatırlamanız gerekir Özellik Değerlerini Doldurun

Çeşitli alışverişlerde XML formatı çok popüler hale geldi metin belgeleri arasında bilgi sistemi. Belgeler için benzersiz bir yapı oluşturma yeteneği, bunların birçok alanda (elektronik kütüphaneler, WEB, ithalat / ihracat ve diğerleri) kullanılmasına olanak tanır. Bu formattaki manuel robotların gücü olmasaydı, 1C sistemi bu kadar popülerliğe ulaşamazdı. 1C, WEB teknolojilerinin aktif bir kaynağı olduğundan, geliştirici XML'in okunmasından ve bunlara bilgi yazılmasından sorumludur.

XML dosyasına gönderim ve okuma

XML işaretlemenin en önemli avantajlarından biri, manuel ve sezgisel bir yapı ve söz dizimi elde etmektir. Yazarlar, bu notları oluşturduklarında hem insanlar hem de genel halk için okunması kolay dil notları oluşturma hedefini belirlediler. Günümüzde XML diğer formatlardaki yaygın kullanımını kaybetmiş ancak artık popüler ve yaygın olarak kullanılmamaktadır. XML dosyasının yapısı aşağıdaki şemayı izleyecektir:

Verilerin 1C'ye nasıl aktarılacağını görmek için yukarıdaki dosyayı göndermeniz yeterli olacaktır. Böylece XML dosyasını okuyabilen ve onu dosyanın kendisine aktarabilen bir prosedür yazılmıştır. Bu, katkıda bulunanların bağımsız olarak dosyaya girmesine izin veren arayüz aracılığıyla veya ayrıntıları metinde kesin olarak yazarak yapılabilir.

1C'de boyutu 100 MB'a kadar XML ile çalışmanın popüler yollarından biri vikoristan kullanmaktır nesne modeli belge (DOM). Bu anlam, XML'de sunulan tüm belge düğümlerinin adım adım işlenmesinde yatmaktadır. 1C'den indirildiğinde bu algoritma şöyle görünür:

  1. XML dosyasının okunmasını gerektiren mekanizmaların eksikliği vardır; Düğümleri geçmek için döngü;
  2. Düğümlerdeki veri ve niteliklerin okunması;
  3. Güncellenmiş bilgi.
  4. İhtiyaç duyulması halinde bu aşamada gerekli tablolarda değişiklik veya bölümlere giriş yapılabilir;
Tamamlanmış robotik mekanizma.

& Sunucuda Prosedür Sunucuda Okuma (Dosya Yolu) // mekanizmaların tükenmesi Okuma mekanizması = Yeni ReadingXML; Engine.OpenFile(PathToFile) Okuma; Budivnik = Yeni BuilderDOM; Belge = Builder.Read(Okuma Motoru); // düğümlerin geçişi için döngü Dış görünüm öğesi için 3 Document.DocumentElement.ChildrenNodes Döngü // veri okuma Öğe adı.NodeName = "Ürün" Ürün adı = öğe; Dış görünüm değeri 3 içinproduct.ChildrenNodes Döngü Değerleri.NodeName = "Ad" sonra Ad = değer; Renk = Name.Attributes.GetNamedElement("Renk"); ElseIf değerleri.NodeName = "Fiyat" ardından Çeşitlilik = değerler; Para Birimi = Cost.Attributes.GetNamedItem("Para Birimi"); endIf; EndCycle; // bildirimi göster Show ("Ad:" + Ad.TextContent + "; renk:" + Renk.Değer + "; Fiyat:" + Maliyet.TextContent + "; Para Birimi:" + Para Birimi.Değer); endIf; EndCycle; // Okumayan mekanizmayı kapatın Close (); Prosedürü Sonlandır

Sonuç olarak, içe aktarılan verilerle ilgili bilgileri görüntülüyoruz. Ayrıca tüm verileri gerekli yapıya yerleştirebilir ve bu yapı üzerinde tarayıcıda bir belgenin veya girişlerin oluşturulmasını programlayabilirsiniz. 1C'nin xml ile çalışmanın esnekliği mükemmeldir, bu nedenle diğer cihazlarla veri alışverişinde bu formatın kendisi giderek daha fazla kullanılmaktadır.

  1. Bilgiyi çıkarmak için XML dosyalarıyla da etkileşim kurmamız gerekir. 1C XML Kayıt platformunun ek bir nesnesi için kayıt örneğine bir göz atalım ve terminolojideki verileri görselleştirelim. Başlıca avantajları kodun basitliği ve veri işleme hızıdır. Bir XML dosyası yazmak için kullanılan sunucu tarafı algoritması birkaç ardışık adımla temsil edilebilir:
  2. Xml dosyasına bağlanın;
  3. Head elemanlarını oluşturup onlara veri yazıyoruz. Bir XML dosyasında büyük miktarda bilgi görüntülemek istiyorsanız, bu aşamada döngüler oluşturmanız gerekecektir. Dikkatli olun ve verilerin bir sonraki döngüde değil, döngüden önce işlenmesi gerektiğini unutmayın;
// Nomenclatura.xml dosyasını açın ve başlık öğesini yazın RecordVFile = New RecordXML (); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); RecordVFile.3writeStartItem("Ürünler"); // kayıt için verileri seç Dizin'den seç = Dizinler.Nomenclature.Seç (); // Dizinden Seçerken bir kaydın oluşturulduğu döngü Sonraki () döngü // yeni verilerin kaydedilmesi RecordToFile.RecordBeginningElement ("Ürün"); RecordVFile.RecordAttribute("Ad", Select fromDirectory.Name); RecordVFile.RecordAttribute("InitialPrice", Row(SelectionfromDirectory.InitialPrice)); WriteToFile.WriteEndElement(); EndCycle; // Head öğesini ve WriteToFile.WriteEndElement() dosyasını kapatın; WriteVFile.Close();

1C'de XDTO mekanizması

1C şirket distribütörleri XML - XDTO (XML) aracılığıyla bilgi alışverişi için güçlü bir mekanizma oluşturdu Veri aktarımı Nesneler). Sürüm 8.1'den itibaren platform, XML dosyasını biçimlendirme endişesi olmadan diğer sistemlerle veri alışverişi yapma olanağı sunuyor. Teknik işlerin çoğu 1C tarafından gerçekleştiriliyor ve yalnızca XML oluşturmak için gerekli verileri girmekten mahrum kalıyoruz. Doğru, bu amaçla araştırmacının manipülasyon eylemlerini durdurması gerekiyor.

XDTO kullanarak bir XML dosyasını içe aktarmak için dosyanın 1C yapısını bilgilendirmemiz gerekir. Bir metin düzenleyicide oluşturulabilen veya özel bir program kullanılarak hızlı bir şekilde oluşturulabilen bir dizi şema aracılığıyla iletilir. Sonuç olarak, açıklayan dosya zagalnu yapısı ve XML dosyası için seçilen veri türleri. Yeni XML okumadan veya yazmadan önce geliştiricinin bu şemayı “XDTO Paketleri” bölümündeki konfigürasyona eklemesi gerekir.

Bu durumda elle basit bir paket oluşturabiliriz, böylece 1C örnek olarak dosyamızın yapısını anlayabilir. Dosyanın başarılı bir şekilde oluşturulabilmesi için şemada bir head elementimiz ve bir de nitelikleri olan bir alt elementimizin olduğunu göstermemiz gerekiyor. Oluşturulan şemanın xsd formatında bir dosyaya aktarılıp xml ile eş zamanlı olarak aktarılması gerekiyor, böylece karşı tarafın yapıyı anlayıp xdto paketini tekrar oluşturmasına gerek kalmıyor.


Yeni XML'i şuraya kaydet: sabit diskÖndekine benzer bir sunucu algoritması yardımcı olacaktır. Aradaki fark, yalnızca 8.3 1C platformunun özel bir mekanizması olan XDTO fabrikasında 1 ürün için rezervasyon kurma ihtiyacında yatmaktadır. Daha eşit çalışmaya ihtiyaç duyulduğu için kafa derisi unsurunu anlatmak gerekir.

// XML dosyasının açılması EntryVFile = Yeni EntryXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); // 1C'de ne tür verilerin oluşturulması gerektiğini belirtin - baş öğe AllProducts = FactoryXDTO.Create (FactoryXDTO.Type ("http://wiseadviceXML.org", "Ürünler")); // seçim için verileri seç Dizin'den seç = Dizinler.Nomenclature.Select (); // Poki Select baş öğesine ek ürünler ekleyin Directory.Next() döngüsünden Product = FactoryXDTO.Create (FactoryXDTO.Type ("http://wiseadviceXML.org", "Product")); Ürün.Adı = Dizin.Adı'ndan Seçim; Product.StartPrice = Satır (Directory.StartPrice'tan Seçim); AllProducts.Add(Product); EndCycle; // verileri yazar ve FactoryXDTO.WriteXML (WriteVFile, AllProducts) dosyasını kapatır; WriteVFile.Close();

Göz önünde bulundurulan mekanizmalar evrensel olmalı ve düzgün ayarlanmış daha fazlası da gelebilir. Ancak 1C ile XML arasındaki etkileşimin birçok nüansı vardır. Bunları test etmek, XML dosyasının işlenmesinin zor olabileceği test tesislerinden ziyade gerçek zihinlerde çok daha etkilidir.

soyut: XML Şema Verileri (XSD). Visual Studio .NET'in ortasında XSD şemalarının oluşturulması. Yazılan bir DataSet nesnesinin oluşturulması. DataSet nesnesinin yapısı hakkındaki bilgiler çıkarılıyor. XML belgelerini ve XSD şemalarını yazımlara ve birincil DataSet nesnelerine dahil etme. Yöntemler ReadXml ve ReadXmlSchema. Yazılan ve birincil DataSet nesnesinin yapısı yerine kayıt. WriteXml ve WriteXmlSchema yöntemleri

Koleksiyon DataSet nesnesi. XML belgelerini okuma ve yazma

XML Şeması Verileri (XSD)

Veri şemaları 1 XML Şema Belgesinin tam çevirisi -< XML belge şeması>, “XML veri şeması” terimini tanıtacağız. XSD (XML Şema Belgesi, XSD), XML belgeleri için kurallar oluşturmanın alternatif bir yoludur. DTD'lerle karşılaştırıldığında şemalar, karmaşık veri yapılarını tanımlama konusunda daha fazla yeteneğe sahiptir, dil gramerini tanımlamanın daha akıllı bir yolunu sunar ve kolayca modernize edilebilir ve genişletilebilir. Bir XSD şeması mevcut bilgileri barındırabilir:

  • ilişkisel bir veritabanındaki tablolar arasındaki harici anahtar bağlantılarına benzer şekilde, veri öğeleri arasındaki bağlantıların temsili;
  • birincil anahtara benzer benzersiz tanımlayıcıların tanımlanması;
  • tip spesifikasyonu Bir XML belgesindeki tek tek öğe ve öznitelik verilerini kaplayın.

Visual Studio .NET'te veri şemaları oluşturmak için Dosya \ Yeni \ Dosya ana menüsüne gidin ve şablonlar listesinden seçim yapın (böl. Şekil 11.3) XML Şeması. “Başlamak için nesneleri Sunucu Gezgini veya Araç Kutusu penceresinden sürükleyin” yazan bir pencere görüntülenir. çalışma alanı(Tasarım alanı) veya sağ tuşa tıklayın "(Şek. 11.1):


Küçük

11.1.

Sağda tasarım modunda bildiklerimiz var. (XML) butonuna tıklanarak kod moduna geçilir:

İlk satır, şemanın xs: schema kök öğesine sahip bir XML belgesi olduğuna dair zaten bilinen ifadedir. Önek xs: şemanın tüm öğelerini ifade eder ve ad alanını belirtir. Diğer satırda şemaların daha uzun, daha ayrıntılı ve çoğunlukla tamamen gereksiz bir açıklaması bulunur (HTML sayfaları için benzer kodu izleyin). Doğru çalışma için aşağıdakileri anlamak tamamen yeterlidir:

1

Ancak stüdyonun görselleştirme teknikleri bu "başlığın" görünür olmasına izin verdiğinden kaldırılmaması gerekir. Visual Studio.NET'in ortasında bir XML belgesindeki görevleri açıklayan şemalar oluşturmak basit bir iştir. Oluşturulabilir belge XMLEasy.xml:


(Veri) sekmesine ve yalnızca bir girişe geçin (Şek. 11.2).

Küçük 11.2. Bu belgeyi açıklayan bir şemayı çeşitli yollarla oluşturabilirsiniz: ana menüde “XML\Create Schema” (Şek. 11.3, A) öğesini seçin, XML modunda


içerik menüsü

bu öğeyi seçin (Şekil 11.3, b), Veri modunda bu öğeyi içerik menüsünde seçin (Şekil 11.3, C) ve Veri modunda XML araç çubuğu düğmesine tıklayın (Şekil 11.3, D).


Küçük

11.3.

Her durumda, belge şeması bir tablo şeklinde görünür (Şekil 11.4). Şimdilik Schema modundan çıkıp (XML) moduna geçelim.

Küçük

11.4. Ortam, belgenin yapısını açıklayan bir XML kodu oluşturdu: Bu aynı zamanda şemanın ek ADO .NET nesneleri ile daha fazla işlenmesi için gerekli olan bir açıklamayı da içerir. XMLEasy.xml çıktı belgesinde veri şeması için bir mesaj bulunur:

XMLEasy.xsd belgesi, XMLEasy.xml'nin bulunduğu dizinde otomatik olarak oluşturulur.
XSD şemalarını anlamaya başlamak için, veri açıklamasını net bir biçimde çalışarak başlayın. ek unsurlar

1

. Tablo 11.1, ADO .NET nesnelerine referans olmadan oluşturulan en basit XML belgelerinin ve bunların şemalarının bir seçimini listelemektedir.
Tablo 11.1. Katlama XSD şemalarını uygulama XML belgesi yerine kök eleman için görünüm şöyledir:

Element yerine...

Alt öğeler şu şekilde açıklanmaktadır:

XSD şemalarını anlamaya başlamak için, veri açıklamasını net bir biçimde çalışarak başlayın. ek unsurlar

1 Kıbrıs 25.000,00 RUB İki yetişkin bileti seçeneği bir çocuğun fiyatını içerir (7 rubleye kadar) 2 Yunanistan 32.000,00 RUB Serpna ve Veresna'da özel indirimler var 3 Tayland 30.000,00 RUB Uçak biletini dahil etmeyin 4 İtalya 26.000,00 RUB Paket kuponundaki oteldeki Snіdanok 5 Fransa 27.000,00 RUB Tur paketine ek geziler dahil değildir

. Tablo 11.1, ADO .NET nesnelerine referans olmadan oluşturulan en basit XML belgelerinin ve bunların şemalarının bir seçimini listelemektedir.
Kök öğe TABLE, bir grup alt öğeden oluşan TOUR öğesinin yerini alır. Seçim öğesi, diğer öğelerin seçimini belirtir ve "sınırsız" özelliğinin değeri maxOccurs, TOUR gruplarının sınırsız oluşma olasılığını belirtir.

: :

XSD şemalarını anlamaya başlamak için, veri açıklamasını net bir biçimde çalışarak başlayın. ek unsurlar

1 Kıbrıs 25.000,00 RUB 1 İki yetişkin bileti seçeneği bir çocuğun fiyatını içerir (7 rubleye kadar)


Küçük
. Tablo 11.1, ADO .NET nesnelerine referans olmadan oluşturulan en basit XML belgelerinin ve bunların şemalarının bir seçimini listelemektedir.
11.5.

IDTOUR öğesi için veri türü int'tir; CLOSED öğesi için veri türü boolean'dır; diğerleri için veri türü string'dir. Veri türünü doğrudan XML veri şeması modunda veya daha da manuel olarak - Şema modunda (bu modda mod DataSet olarak adlandırılacaktır) değiştirebilir ve listeden veri türünü seçebilirsiniz (Şekil 11.5): İÇİNDE yazılım güvenliği

Kurstan önce bu tablonun tüm dosyalarını XSD klasöründe (Kod\Glava5\XSD) bulacaksınız.

Bir XML belgesinde veri tipinin belirtilmesi (başka bir örnek Tablo 11.1'dir) ara bağlantı kurmanın yollarından biridir. Belirli bir türün değerini tanımlamak için ek özellikler eklenir. Devrenin mevcut parçasında PRICE öğesinin değeri 50 ile 100 arasında değişmektedir:

Bir XML belgesini belirli sabit değerlerle çevrelemek için aşağıdaki yapıyı kullanın:

Burada NAME öğesi beş addan yalnızca bir sabit değeri kabul edebilir.

Bir XSD şeması geliştirmek robot için çok fazla iş gerektirir. Visual Studio .NET çekirdeğinin görsel özellikleri önemli ölçüde azaltılmıştır. Temel kavramlarda uzmanlaşmak için otomatik olarak oluşturulan bir dizi XML belge şemasını öğrenmeniz gerekir. Tablo 11.2-11.4, içgörüye yol açabilecek ana unsurların ve niteliklerin bir tanımını sunmaktadır.
Tablo 11.2. XSD Şemalarının Öğeleri . Tablo 11.1, ADO .NET nesnelerine referans olmadan oluşturulan en basit XML belgelerinin ve bunların şemalarının bir seçimini listelemektedir.
eleman Tümü
İçerdiği öğeler yeterli bir sırayla listelenebilir dipnot і
Elementlerin yorumlarının Batkovsky unsuru herhangi
Herhangi bir giriş öğesi herhangi bir özellik
nitelikleri ne olursa olsun Uygulama bilgisi
Yorum öğesi. Şemanın başlığını belirtir bağlanmak
Bağlanmak özellikGrubu
Özellik grubu seçenek
Diğer öğeleri seçin. "|" operatörünün analogu DTD'de karmaşıkİçerik takas veya genişletilmiş modeller
katlama tipi yerine karmaşık Tür
Katlanır eleman dokümantasyon
Yorum öğesi. Şema hakkında bilgi sağlar Tablo 11.2. XSD Şemalarının Öğeleri
eleman eklenti
eleman genişletme Tarlalar ıssız. Elemanın ortasında yapışır sulama amaçlı
grup Öğe grubu
içe aktarmak Tür bildirimlerini diğer şemalarla içe aktarma
katmak Orijinal ad alanına diğer şemaların dahil edilmesi
anahtar Bir öğeyi veya niteliği başka bir öğeye işaret eden bir anahtarla belirtme
anahtar referans Anahtarla gösterilen öğeyi veya niteliği belirtin
liste Liste değerine dahil edilebilecek öğe
yeniden tanımla Daha önce bahsedilen unsurların yeniden atanması
kısıtlama eleman değişimi
şema Devrenin kök elemanı
seçici XML öğelerini seçmek için seçici
sekans Diğer elemanların sırası. DTD'de "" operatörünün analogu
basitİçerik Bunun yerine sembolik verilerden mahrum kalan bir model
basit Tip Basit tip öğesi
birlik Birden fazla anlamı olabilen bir öğe veya nitelik
eşsiz Benzersiz bir anlamı olan bir öğe veya nitelik
Tablo 11.3. Öznitelikler - XSD şema sınırları
bağlanmak . Tablo 11.1, ADO .NET nesnelerine referans olmadan oluşturulan en basit XML belgelerinin ve bunların şemalarının bir seçimini listelemektedir.
numaralandırma Değer listesi
uzunluk Dovzhina
maksimum uzunluk Maksimum dohina
minUzunluk minimum depozito
maxExclusive Maksimum değer
maxInclusive Maksimum değer dahil
dk.Özel Minimum değerler
minKapsayıcı Minimum değerler dahil
kesirRakamlar Kesirli sayılarda komadan sonraki işaret sayısı
toplam Rakam sayıların sayısı
model Öğeler yerine illüstrasyon (desen)
varsayılan Tanımın ardındaki öğenin veya niteliğin anlamı
elementFormDefault Küresel ölçekte söylenen yerel unsurun otoritelerinin emri
sabit Öğenin veya özelliğin sabit değerleri
biçim Belirli örnek belgelerde yerel olarak sessiz öğeler tanımlanmıştır
öğe türü Öğe türünü listele
üye Türleri Birlik (birlik) üyesi olan üye türleri
maxOccurs Maksimum eleman girişi gücü
dkOluşur Minimum eleman girişi gücü
karışık Karışık tipte olabilecek elemanın özellikleri
isim Öğe veya özellik adı
ad alanı adların alanı
noAd alanı Doküman şemalarının geliştirilmesi departmanı,
ŞemaKonumu sonuçta ortaya çıkan herhangi bir ad alanı yok
sıfırlanabilir Bunun anlamı, bir öğenin NULL (nil) değerine sahip boş olabilmesidir.
referans Zavdannya posilannya küresel şarkı söyleyen unsur hakkında
şemaKonumu Devre konumlandırma
ikameGrubu Elemanların diğer elemanlarla önemli ölçüde değiştirilmesi
hedefAd alanı Ortaya çıkan şema adı alanı
tip Öğe türü
kullanmak Є zorunlu unsur
değer Devre elemanının anlamı
xsi:nil Bir XML belgesinin boş (NULL) öğesinin gerçek değerini ayarlama
xsi:schemaKonum Bir XML belgesindeki bir öğeyi genişletmek için gerçek yer
xsi:tür XML belgesindeki bir öğenin gerçek türü