Üçüncü taraf uygulamaları için kolay yükleme. Verileri xml'e yükleme işlemi. Bir XML dosyası oluşturuluyor. Üçüncü taraf bir uygulama için basit yükleme 1c 8 okuma xml örneği

Peterhost hizmetlerinin satın alınmasıyla ilgili bilgilerin 1C'ye girilmesinde zaman kazandıracaktır.
Bunu yapmak için, 1C'ye bir XML dosyası yüklemeniz gerekir ve bundan, satın alınan hizmetlerle ilgili bilgileri içeren bir "Mal ve hizmet alımı" belgesi oluşturulacaktır. Bu belgeye dayanarak fatura oluşturulabilir.

Ayrıntılı talimatlar aşağıda verilmiştir.

1. Harici işleme bağlantısı

1.1. 1C:Enterprise 8.X bilgi tabanını “Enterprise Accounting 2.0” yapılandırmasıyla kullanıyorsanız, CommerceML formatında bir belge yüklemek için harici işlemeyi bağlamanız gerekir ()
Bu iki şekilde yapılabilir:
1. Harici işleme dosyasını yerel olarak diske kaydedin ve CML formatındaki her veri yüklemesinden önce “Dosya” → “Aç” menüsünden açın.
2. İşlemeyi bilgi tabanına (IS) kalıcı olarak bağlayın. Daha sonra "Araçlar" → "Ek raporlar ve işlemler" → "Ek harici işlemler" menüsünden herkes (bir ağ üzerinden çalışıyorsa) tarafından kullanılabilir.

  • “Servis” menüsünde “Ek raporlar ve işlemler” - “Ek harici işlemler” seçeneğini seçmelisiniz.
  • “Ekle” düğmesine tıklayın. Yeni bir dizin öğesi ekleme formu açılacaktır:
  • "Ad" alanında işlemin adını belirtin; örneğin, "Veriler CommerceML biçiminde yükleniyor (RU-CENTER Grubu)."
  • Dosya seçim düğmesine tıklayın ve indirme işleme dosyasının () yolunu belirtin.
  • "Tamam" düğmesine tıklayın Artık işlem bilgi tabanına bağlandı ve "Ek harici işleme" dizininde bulunuyor ve fareye çift tıklanarak açılabilir.

1.2. "Üretim İşletme Yönetimi" (versiyon 10.3 ve üzeri) ve "Ticaret Yönetimi" (versiyon 1.3 ve üzeri) konfigürasyonlarını kullanıyorsanız, bu işlem zaten etkindir ve 2. adıma geçebilirsiniz.

2. “Mal ve hizmetlerin kabulü” belgesinin oluşturulması

Aşağıdaki adımlar sonucunda Peterhost'tan satın alınan hizmetlere ilişkin bilgiler 1C'ye girilecektir.
1. Daha sonra “Mal ve hizmet alımı” belgesinin verilerini içeren bir XML dosyasını gerekli süre boyunca bilgisayarınıza kaydetmeniz gerekir. XML formatındaki dosya Kişisel Hesap bölümünde “1C için XML” bağlantısı altında bulunur.
“Veri dosyası adı” alanının sağındaki seçim düğmesine tıklayın ve bu dosyayı seçin (bkz. Şekil 1). "Bir dosyadaki veriler okunsun mu?" sorusuna "Tamam" cevabını verin. Veri dosyası işlenerek okunacaktır.
2. İşleme, dosya veri öğeleri ile bilgi tabanı verileri arasındaki tüm yazışmaları belirleyebiliyorsa, "Veriler bilgi tabanına kaydedilsin mi?" sorusu sorulacaktır. Cevabınız "Evet" ise yeni bir "Mal ve hizmet alımı" belgesi oluşturulacaktır. 3. adıma gidin.
3. Tüm veri eşleşmeleri tanımlanmazsa şu mesaj görüntülenecektir: "Veriler yüklenirken, program, değişim dosyasında aktarılan öğelere karşılık gelen bilgi güvenliği nesnelerini otomatik olarak bulamadı..." ve aşağıdaki işlemi gerçekleştirmeyi önerecektir: manuel olarak karşılaştırın. Bu durumda aşağıdakileri yapmanız gerekir:

  • "Tamam"a tıklayın. Dosya nesnelerini ve bilgi güvenliğini karşılaştırmak için bir form açılacaktır. Farklı türdeki nesnelere (kuruluşlar, yükleniciler, öğeler vb.) karşılık gelen birkaç sekmeye sahiptir. Herhangi bir veri türü eşleşmediyse ilgili sekmelerde kırmızı ünlem işaretleri olacaktır (bkz. Şekil 2).
  • Uygun yer imlerine gidin ve öğeleri manuel olarak eşleştirin. Karşı tarafların ve kuruluşların eşleşmelerinin TIN ile arandığı ve isimlendirme eşleşmelerinin önce makale numarasına, ardından isme göre arandığı dikkate alınmalıdır. Dosya verilerine karşılık gelen öğe IB'de değilse, "Dosyadaki verileri kullanarak oluştur" düğmesine tıklanarak dosya verileri kullanılarak otomatik olarak oluşturulabilir.
  • Öğeleri eklerken “Hizmet” özelliğini kontrol etmelisiniz (bkz. Şekil 3). Ayrıca terminolojideki bir öğenin tam ve kısa adlarını da değiştirebilirsiniz.
  • "Hesaplar" sekmesinde, "Mal ve hizmet alımı" belgesini oluştururken bu numaraların otomatik olarak girilmesi için kalem muhasebe hesaplarının eklenmesi tavsiye edilir. Örneğin, hizmetler için aşağıdaki değerler ayarlanabilir: “Muhasebe hesabı” – 25 (Genel üretim giderleri) ve “Gönderilen KDV muhasebesi” – 19.04 (Satın alınan hizmetlere ilişkin KDV) (bkz. Şekil 4).
  • Tüm unsurları karşılaştırdıktan ve "Tamam" düğmesine tıkladıktan sonra program, belgenin bilgi güvenliği sistemine yüklenmesi için onay isteyecek ve ardından yeni bir "Mal ve hizmet alımı" belgesi oluşturacaktır (bkz. Şekil 5).

3. “Mal ve hizmet alımı” belgesinin yayınlanması

“Mal ve hizmet girişi” belgesini kaydetmek için çift tıklayarak açmanız ve “Avans mahsup” (örneğin “Otomatik”) gibi eksik alanları ve “Taahhüt hesaplarındaki alanları doldurmanız gerekir. ” sekmesine tıklayın (bkz. Şekil 6). Bu alanların değerleri kuruluşunuzun muhasebe politikaları tarafından belirlenir. Belgeyi yayınlamak için “Tamam” düğmesine tıklayın.

4. “Fatura” belgesinin oluşturulması

"Mal ve hizmet girişi" belgesini başarıyla oluşturup yayınladıktan sonra, bunu "Alınan fatura" belgesini oluşturmak için kullanabilirsiniz. Bunu yapmak için belge formunun sol alt kısmındaki uygun bağlantıya tıklayın.

Bir kuruluşta muhasebe yalnızca 1C:Enterprise platformundaki çözümlerde değil aynı zamanda diğer yazılım sistemlerinde de (Galaktika, Parus, SAP vb.) korunabilir. Bu, iki uygulamayı entegre etmenin zorluğunu artırıyor.

Örneğin, bazı uygulamaların (buna "X" diyelim) konfigürasyon belgelerinin bir listesini okuması gerekir. Böyle bir sorunu çözmenin pratik faydalarından bahsetmeyeceğiz, sadece böyle bir durumda en uygun ve evrensel yolun XML formatındaki bir belge listesini yüklemek olacağını not edeceğim.

Bu formatı kullanan değişim evrenseldir çünkü çoğu uygulama onunla çalışabilir. Yapılandırma belgelerinin bir listesini 1C:Enterprise'dan bir XML dosyasına nasıl yükleyebileceğinize bakalım.

XML'e yükle

Ve böylece asıl şeye geçelim. Belge meta verileri listesinden geçmemiz ve listeyi XML dosyasında oluşturmamız gerekiyor. Aşağıdaki ekran görüntüsü bir XML dosyası oluşturmaya yönelik algoritmayı göstermektedir:

CreateXML() Dışa Aktarma İşlevi //Geçici dosyanın adını alıyoruz Yol = GetTemporaryFileName(); // "XML Kaydı" sınıfını başlat Giriş = Yeni GirişXML; // Yazmak için geçici bir dosya açın- 8 " ) ; // XML dosya bildirimini yaz Kayıt. WriteDeclarationXML() ; // Kayıt. WriteElementStart(" BelgelerYapılandırmalar" ) ; // İlk eleman // Dosyanın oluşturulduğu tarihle birlikte ilk öğenin niteliği Kayıt. WriteAttribute(" created ", Format(CurrentDate(), " DF) = yyyy-AA- ddThh:dd:ss; DLF=DT" ) ) ; // Her konfigürasyon belgesi için bir öğe yazın. Belgenin adını metne koyuyoruz. Meta Verilerden Her Doküman İçin. Belge Döngüsü Kaydı. WriteElementStart("Belge"); Kayıt. WriteText(Doc.Name) ; Kayıt. WriteEndElement() ; EndCycle; // İlk elemanın yazımını bitir Kayıt. WriteEndElement() ; Kayıt. Kapalı(); // Dosyayı kapat // Dosyanın ikili verilerini alın ve geçici belleğe koyunİkiliVeri = yeni İkiliVeri(Yol) ; Adres = PlaceInTemporaryStorage(BinaryData, Yeni Benzersiz Tanımlayıcı) ​​; İade adresi; // Dosyanın adresini depoya döndür Son Fonksiyon

Oluşturulan her öğenin doğru şekilde tamamlanması gerekir. “WriteStartofElement()” çalıştırıldıktan sonra “WriteEndElement()” metodunun çalıştırılması gerekir, aksi takdirde XML dosyasının yapısı hatalı olacaktır.

XML dosyalarını oluşturmaya yönelik genel şablon aşağıdaki sıradır:

// 1. "XML Kaydı" sınıfını başlatın Giriş = Yeni GirişXML; // 2. Kayıt için geçici bir dosya açın Kayıt. OpenFile(Yol, " UTF) - 8 " ) ; // 3. XML dosyasının bildirimini yazın Kayıt. WriteDeclarationXML() ; // // 4. ++ XML dosyasının içeriğini yazın Kayıt. WriteElementStart("XMLElement"); Kayıt. WriteEndElement() ; // -- XML ​​dosyasının içeriğini yazın // 5. Dosyayı kapatın Kayıt. Kapalı();

Bu beş adım hemen hemen her XML dosyasını oluşturur.

Örneğimizde oluşturulan dosya ikili verilere dönüştürülür ve CreateXML fonksiyonunun çağrıldığı konuma döndürülür. Bu dosya daha sonra dosya sistemine yazılabilir.

Yukarıdaki ekran görüntüsünde yüklenen dosyanın bir örneğini görebilirsiniz.

Üçüncü taraf uygulaması

Örnek olarak, üçüncü taraf bir uygulamada XML dosyasının okunduğunu göstermek için .NET Framework'te bir uygulama oluşturdum.

Program oluşturulan dosyayı okur ve belgeleri bir liste biçiminde görüntüler:

Kendiniz deneyebilirsiniz, uygulama yazının sonundaki bağlantıyı kullanarak indirilebilir.

Çok yönlülük

XML formatı, 1C:Enterprise platformundaki uygulama çözümleri arasında veri alışverişi için çoğu konfigürasyonda kullanılır. Yaygın olarak kullanılan diğer bir iletişim yöntemi COM bağlantısıdır. XML hemen hemen her uygulamayla alışveriş yapmanıza olanak tanır, bu nedenle evrensel olarak adlandırılmayı hak eder.

İndirilecek dosyalar:

XML dosyası okuyucu uygulaması.

XML dosyasının oluşturulması işleniyor.

XML belgeleriyle çalışmak doğrudan 1C:Enterprise 8 sisteminin yerleşik dilinden yapılabilir.

Bir olasılık var:

  • xml belgelerini sırayla okuyun ve yazın:
    • bir öğenin metninden veya bir XML öznitelik değerinden elde edilen bir dizeyi, belirtilen türe göre bir değere dönüştürmek;
    • bir öğenin metnine yerleştirilecek değerin veya bir XML niteliğinin değerinin dize temsilini elde edin;
    • parametre olarak iletilen türe karşılık gelen XML veri türünü alın;
    • belirtilen türdeki bir değerin XML'den okunup okunamayacağını kontrol edin;
    • XML okurken XML şeması uyumluluğunu kontrol edin
    • değeri XML formatında kaydedin;
    • XML veri türüyle eşleşen bir tür döndürür.
  • xml belge verileri için (DocumentDOM) aşağıdaki standartlara uygun bir nesne erişim modeli kullanın:
    • DOM Seviye 2;
    • XPath (DOM Düzey 3);
    • DOM Yükleme ve Kaydetme (DOM Düzey 3).
  • XML Şeması nesne modelini (XML Şeması) kullanın;
  • Canonical XML 1.1 standardını kullanın.

Harici bir bağlantı ve XML ile çalışma mekanizmaları kullanarak, bu sistemlerde kabul edilen formatları kullanarak uygulama sistemleriyle entegrasyonu düzenleyebilirsiniz. Bunun için XSL dönüşüm mekanizmaları kullanılır. Örneğin, böyle bir entegrasyon için Microsoft'un BizTalk sunucusunu kullanabilirsiniz:

Hızlı Bilgi

Platform, Hızlı Bilgi Kümesi ikili biçimindeki XML belgeleriyle çalışmaya yönelik araçlar sağlar. Fast Infoset teknolojisi, XML verilerini görüntülemek için alternatif bir sözdizimi kullanır. Bu, geleneksel XML formatında yazılan verilere göre daha küçük dosya boyutları ve daha hızlı işlem hızı sağlar. Hızlı Bilgi Seti formatında yazılan bir dosyanın .fi veya .finf uzantısı vardır.

Çalışma modları

UploadLoadDataXML82'nin işlenmesi 2 çalışma modunu uygular: Yükleme (kullanıcı tarafından belirlenen verilerden oluşan bir yükleme dosyası oluşturma) ve Yükleme (aynı adlı mod tarafından oluşturulan bir yükleme dosyasını okuma ve içindeki verileri yazma). Mod, Mod alanında seçilerek ayarlanır.

Belirli bir modu başlatmadan önce (Çalıştır düğmesine tıklayarak), yükleme dosyasının adını "Dosya adı" alanına manuel olarak girerek veya bu alanı ve standart dosya seçimi iletişim kutusunu seçmek için düğmeyi kullanarak belirtmeniz gerekir. .

İndirme modunda, indirme hızını etkileyebilecek kayıtlar yazarken toplamların kullanımını düzenlemek mümkündür. "Toplamları devre dışı bırak" ve "Toplamları etkinleştir" düğmeleri, "Verileri yüklerken toplamların kullanımını düzenleme yeteneğini etkinleştir" bayrağı ayarlandığında kullanılabilir ve verileri yüklerken toplamları kullanma modunu manuel olarak kontrol etmek için kullanılır. **İşlemenin uygulanabilirlik koşulları**

İşleme yalnızca verilerin yüklendiği bilgi tabanı ile verilerin yüklendiği bilgi tabanının homojen olduğu (konfigürasyonlar aynı, veriler farklı olabilir) veya yüklenen tüm nesnelerin neredeyse tamamen aynı olduğu durumlarda kullanılabilir. ayrıntı ve tablo parçalarının bileşimi ve türleri, "öncü" meta veri nesnesinin özellikleri vb. Bu sınırlamalar nedeniyle işlemenin esas olarak homojen IS'ler arasındaki alışverişi amaçladığına dikkat edilmelidir.

Yükleme dosyası formatı, başlık kısmındaki değişim planına göre yükleme yaparken oluşturulan dosya formatından farklıdır. Verileri (dizin öğeleri, kayıt kayıtları kümeleri vb.) yüklemek için işleme, değişim planlarına göre yüklemeyle aynı XML serileştirme mekanizmasını kullanır; bu bölümde dosya formatları aynıdır.

Boşaltma bileşiminin belirlenmesi

İşleme, bilgi tabanı verilerinin bir dosyaya hem tam hem de kısmi olarak yüklenmesine olanak tanır. Yüklenen verilerin bileşimi, iletişim kutusunda, verilerin yüklenebileceği meta veri nesnelerini görüntüleyen ağacın sütunundaki kutular işaretlenerek yapılandırılır. Ek bir onay kutusu sütunu olan "Gerekirse", bu tür nesnelerin "referans yoluyla" kaldırılması ihtiyacını belirler. Yani, yalnızca "Gerekirse" sütununda onay kutusu işaretlenirse, böyle bir nesnenin verileri tamamen indirilmeyecek, yalnızca indirmeyi yükleyecek bilgi tabanındaki referans bütünlüğünü korumak için gerekli olduğu ölçüde indirilecektir. dosya.

Bir formu açarken işleme, tüm nesnelere referans olarak boşaltma işaretini belirler; bu, bilgi tabanının boşaltılan kısmının referans bütünlüğünü garanti eder.

"Bağlantıyla indirilen nesneleri algıla" düğmesini tıkladığınızda, işleme, tam indirme bayrağı ayarlanmış nesnelerde hangi veri bağlantılarının bulunabileceğini analiz eder ve bağlantıyla indirme ihtiyacını belirten bayraklar sütununu otomatik olarak doldurur. Nesnede zaten tam boşaltma bayrağı ayarlanmışsa, referansa göre boşaltma bayrağı ayarlanmaz.

Olası uygulamalar

Bu işlemin kullanımı, örneğin verilerin tam veya kısmi bir yedek kopyasını oluşturmak, bilgi tabanları arasında veri alışverişi yapmak ve ayrıca sorunlu bilgi tabanlarını geri yüklerken yardımcı bir araç olarak kullanmak mümkündür.

- aynı zamanda zayıf kontrollere sahip bir XML analoğu olan tanınmış web sayfaları.

XML Okuyucu/Yazıcı Nesneleri, FastInfoset, HTML, işaretleme etiketlerinin yerleşik olarak işlenmesiyle metin dosyası okuma yeteneklerini genişletir.

Bunlar aynı zamanda DOMBuilder/DOMRecord nesneleri için (aşağıya bakın) veri kaynağı olarak kullanılır.

XML 1C dosyaları metin bilgisi içerir, yani metin dosyalarıdır. 1C XML Reader ve 1C Write XML nesneleri, 1C dosyasındaki XML etiketleriyle çalışmayı kolaylaştıran bir "eklentidir".

ReadingFastInfoset 1C ve WritingFastInfoset 1C, ReadingHTML 1C ve WritingHTML 1C nesneleri, ReadingXML 1C ve WritingXML 1C'ye tamamen benzer ve diğer formatlarla aynı şekilde çalışmaya hizmet eder.

Örneklerde kullanılan XML 1C dosyası

Dizin>

Dizin>

Metin değeriProps>
Dizin>
Yapılandırma>

Örnek 1. XML Okuma 1C'yi kullanarak bir 1C XML dosyasını değer ağacına okuma

//ReadingXML 1C kullanarak okumak için XML 1C dosyasını açın
Dosya = Yeni ReadXML();
File.OpenFile("D:\ConfigurationStructure.xml");

//değer ağacını hazırlıyoruz
//her XML dalının bir adı, nitelikleri ve değeri olabilir
dzXML = YeniValueTree();
dzXML.Columns.Add("Ad");
dzXML.Columns.Add("Değer");
dzXML.Columns.Add("Nitelikler");

//bir XML dizisinin birden fazla özelliği olabileceğinden bunları değerler tablosuna yazacağız
//her özelliğin bir adı ve değeri vardır
tAttributes = Yeni ValueTable();
tAttributes.Columns.Add("Ad");
tAttributes.Columns.Add("Değer");

//yuvalama seviyesi, ne zaman iç içe dal eklememiz gerektiğini ve ne zaman bir seviye yukarı çıkmamız gerektiğini anlamamıza yardımcı olacaktır
Yuvalama Düzeyi = 0;
//mevcut çizgi bir ağaç çizgisidir, iç içe geçme arttıkça değişecektir
CurrentRow = Tanımsız;
//XML 1C dosyasının okunması satır satır değil yapısına göre yapılır; dosya bittiğinde okuma FALSE değerini döndürür
File.Read() Döngüsü sırasında

//üç tür düğümle ilgileniyoruz - öğenin başlangıcı, metin (öğenin değeri) ve öğenin sonu (en üst seviyeye dönmek için)
File.NodeType = XMLNodeType.ElementStart ise O zaman

Yuvalama Düzeyi = Yuvalama Düzeyi + 1;

//eğer bu ilk satırsa, onu ağacın en üstüne ekleyin ve yalnızca adı kaydedin
CurrentRow = Tanımsız ise O zaman
CurrentRow = dXML.Rows.Add();
CurrentLine.Name = Dosya.Name;
Devam etmek;
Aksi takdirde
//iç içe çizgiler
CurrentRow = CurrentRow.Rows.Add();
CurrentLine.Name = Dosya.Name; //ismi kaydet

//bu XML öğesinin nitelikleri var mı?
File.NumberAttributes() > 0 ise O zaman
//eğer evet ise, nitelikleri kaydetmek için hazırlanan boş tabloyu kopyalayın
tAttributesNode = tAttributes.Copy();
//bu öğenin özniteliklerinin sayısı arasında geçiş yap
Hesap İçin = 0, Dosya.Number of Attributes()-1 Döngüsü ile
//her özellik için adı ve değeri hatırla
Satır = tNodeAttributes.Add();
Line.Name = File.AttributeName(Sch);
Row.Value = File.AttributeValue(Ac);
EndCycle;
//öğenin nitelik tablosunu geçerli satıra kaydet
CurrentRow.Attributes = tNodeAttributes;
endIf;
endIf;

ElseIf File.NodeType = XMLNodeType.EndElement Sonra
//elemanın başında yuvalanma seviyesini arttırıyoruz, elemanın sonunda ise azaltıyoruz
Yuvalama Düzeyi = Yuvalama Düzeyi - 1;
//mevcut satırı bir seviye yukarı döndür
CurrentRow = CurrentRow.Parent;

ElseIf File.NodeType = XMLNodeType.Text Sonra
//eğer öğenin bir değeri varsa, onu kaydedin
CurrentRow.Value = Dosya.Value;

endIf;

EndCycle;

Dosya.Close();

Örnek 2. 1C Record XML nesnesini kullanarak 1C XML dosyasını kaydetme

//bir dosya oluştur Kayıt XML 1C
Dosya = NewWriteXML();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("Yapılandırma");

//tüm dizinleri dolaşmak için meta verileri kullan (daha fazla ayrıntı için bkz. "Meta verilerle çalışma")
Metadata.Directories Döngüsünden her Dizin için

//WriteStartofElement - yeni bir [alt] dal açar
File.WriteElementStart("Dizin");
//WriteAttribute - daha önce açılmış bir şubeye bir nitelik yazar
File.WriteAttribute("Ad", Directory.Name);
File.WriteAttribute("Synonym", Directory.Synonym);

//meta verileri kullanarak tüm dizin ayrıntılarını inceliyoruz
Directory.Props Döngüsündeki her Prop için




EndCycle;

//dizinin tüm tablolu kısımlarını dolaşmak için meta verileri kullan
Dizindeki her PM için Döngünün Tablo Bölümleri
File.WriteElementStart("TabularPart");
File.WriteAttribute("Ad", PM.Ad);
File.WriteAttribute("Synonym", PM.Synonym);

PM.Props Döngüsünden her bir Prop için
File.WriteElementStart("Sahne");
File.WriteAttribute("Ad", Attributes.Name);
File.WriteAttribute("Synonym", Attributes.Synonym);
File.WriteEndElement();
EndCycle;

File.WriteEndElement();
EndCycle;

//WriteEndElement - WriteBeginElement kullanılarak daha önce açılan şubeyi "kapatır"
File.WriteEndElement();
EndCycle;

File.WriteEndElement();
Dosya.Close();