Ngarkimi i lehtë për aplikacionet e palëve të treta. Procesi i ngarkimit të të dhënave në xml. Gjenerimi i një skedari XML. Ngarkimi i thjeshtë për një shembull të leximit xml të një aplikacioni të palës së tretë 1c 8

Do të kursejë kohë në futjen e informacionit në lidhje me blerjen e shërbimeve Peterhost në 1C.
Për ta bërë këtë, duhet të ngarkoni një skedar XML në 1C dhe prej tij do të gjenerohet një dokument "Marrja e mallrave dhe shërbimeve", që përmban informacione në lidhje me shërbimet e blera. Bazuar në këtë dokument mund të gjenerohet një faturë.

Udhëzimet e hollësishme janë dhënë më poshtë.

1. Lidhja e përpunimit të jashtëm

1.1. Nëse jeni duke përdorur bazën e informacionit 1C:Enterprise 8.X me ​​konfigurimin "Enterprise Accounting 2.0", për të ngarkuar një dokument në formatin CommerceML, duhet të lidhni përpunimin e jashtëm ()
Kjo mund të bëhet në dy mënyra:
1. Ruajeni skedarin e përpunimit të jashtëm lokalisht në disk dhe hapeni përmes menysë "File" → "Open" përpara çdo ngarkimi të të dhënave në format CML.
2. Lidhni përgjithmonë përpunimin me bazën e informacionit (IS). Më pas do të jetë i disponueshëm për të gjithë (nëse punon në një rrjet) nga menyja "Vegla" → "Raporte dhe përpunim shtesë" → "Përpunim shtesë i jashtëm".

  • Në menunë "Shërbimi", duhet të zgjidhni "Raporte dhe përpunim shtesë" - "Përpunim shtesë i jashtëm".
  • Klikoni butonin "Shto". Formulari për shtimin e një elementi të ri direktoriumi do të hapet:
  • Në fushën "Emri", tregoni emrin e përpunimit, për shembull, "Ngarkimi i të dhënave në formatin CommerceML (Grupi RU-CENTER)."
  • Klikoni butonin e përzgjedhjes së skedarit dhe specifikoni shtegun për në skedarin e përpunimit të shkarkimit ().
  • Klikoni butonin "OK" Tani përpunimi është i lidhur me infobazën dhe ndodhet në direktorinë "Përpunimi i jashtëm shtesë" dhe mund të hapet duke klikuar dy herë miun.

1.2. Nëse jeni duke përdorur konfigurimet "Manufacturing Enterprise Management" (versioni 10.3 dhe më i lartë) dhe "Trade Management" (versioni 1.3 dhe më i lartë), ky përpunim është aktivizuar tashmë dhe mund të vazhdoni në hapin 2.

2. Formimi i dokumentit “Pranimi i mallrave dhe shërbimeve”

Si rezultat i hapave të mëposhtëm, informacioni në lidhje me shërbimet e blera nga Peterhost do të futet në 1C.
1. Më pas, duhet të ruani në kompjuterin tuaj një skedar XML me të dhënat e dokumentit "Marrja e mallrave dhe shërbimeve" për periudhën e kërkuar. Skedari në formatin XML ndodhet në seksionin e llogarisë personale nën lidhjen "XML për 1C".
Klikoni butonin e përzgjedhjes në të djathtë të fushës "Emri i skedarit të të dhënave" dhe zgjidhni këtë skedar (shih Figurën 1). Në pyetjen "Lexoni të dhënat nga një skedar?" përgjigjuni "OK". Skedari i të dhënave do të lexohet duke përpunuar.
2. Nëse përpunimi është në gjendje të përcaktojë të gjithë korrespondencën midis elementeve të të dhënave të skedarit dhe të dhënave të bazës së informacionit, do të bëhet pyetja "Të ruhen të dhënat në bazën e informacionit?" Nëse përgjigjeni "Po", do të krijohet një dokument i ri "Marrja e mallrave dhe shërbimeve". Shkoni në hapin 3.
3. Nëse nuk identifikohen të gjitha përputhjet e të dhënave, do të shfaqet mesazhi: "Kur ngarkonte të dhënat, programi nuk ishte në gjendje të gjente automatikisht objektet e sigurisë së informacionit që korrespondojnë me elementët e transferuar në skedarin e shkëmbimit..." dhe do të ofrojë të kryejë krahasimi me dorë. Në këtë rast, duhet të bëni sa më poshtë:

  • Klikoni "OK". Do të hapet një formular për krahasimin e objekteve të skedarëve dhe sigurisë së informacionit. Ka disa skeda që korrespondojnë me lloje të ndryshme objektesh (organizata, kontraktorë, artikuj, etj.). Nëse ndonjë lloj i të dhënave nuk është përputhur, do të ketë pikëçuditëse të kuqe në skedat përkatëse (shih Figurën 2).
  • Shkoni te faqeshënuesit e duhur dhe përputhni manualisht elementët. Duhet të merret parasysh që ndeshjet e palëve dhe organizatave kërkohen nga TIN, dhe ndeshjet e nomenklaturës kërkohen së pari me numrin e artikullit, pastaj me emrin. Nëse elementi që korrespondon me të dhënat e skedarit nuk është në IB, atëherë ai mund të krijohet automatikisht duke përdorur të dhënat e skedarit duke klikuar butonin "Krijo duke përdorur të dhëna nga skedari".
  • Kur shtoni artikuj, duhet të kontrolloni veçorinë "Shërbimi" (shih Figurën 3). Ju gjithashtu mund të ndryshoni emrat e plotë dhe të shkurtër të një artikulli në nomenklaturë.
  • Në skedën "Llogaritë", këshillohet të shtoni llogaritë e kontabilitetit të artikujve në mënyrë që kur krijoni dokumentin "Pranimi i mallrave dhe shërbimeve", këta numra të futen automatikisht. Për shembull, vlerat e mëposhtme mund të vendosen për shërbimet: "Llogaria e kontabilitetit" - 25 (Shpenzimet e përgjithshme të prodhimit) dhe "Kontabiliteti për TVSH-në e paraqitur" - 19.04 (TVSH për shërbimet e blera) (shih Figurën 4).
  • Pas krahasimit të të gjithë elementëve dhe klikimit të butonit "OK", programi do të kërkojë konfirmim për të ngarkuar dokumentin në sistemin e sigurisë së informacionit, pas së cilës do të krijojë një dokument të ri "Pranimi i mallrave dhe shërbimeve" (shih Figurën 5).

3. Afishimi i dokumentit “Pranimi i mallrave dhe shërbimeve”

Për të postuar dokumentin "Marrja e mallrave dhe shërbimeve", duhet ta hapni atë duke klikuar dy herë dhe plotësoni fushat që mungojnë, si "Ofset paraprakisht" (për shembull, "Automatik") dhe fushat në "Llogaritë e shlyerjes". Skeda ” (shih Figurën 6). Vlerat e këtyre fushave përcaktohen nga politikat e kontabilitetit të organizatës suaj. Për të postuar dokumentin, klikoni butonin "OK".

4. Formimi i dokumentit “Faturë”.

Pasi të keni krijuar dhe postuar me sukses dokumentin “Pranimi i mallrave dhe shërbimeve”, mund ta përdorni për të krijuar dokumentin “Fatura e pranuar”. Për ta bërë këtë, klikoni në lidhjen e duhur në pjesën e poshtme të majtë të formularit të dokumentit.

Në një organizatë, kontabiliteti mund të mbahet jo vetëm në zgjidhjet në platformën 1C: Enterprise, por edhe në sisteme të tjera softuerësh (Galaktika, Parus, SAP, etj.). Kjo ngre sfidën e integrimit të dy aplikacioneve.

Për shembull, disa aplikacione (le ta quajmë "X") duhet të lexojnë një listë të dokumenteve të konfigurimit. Ne nuk do të flasim për përfitimet praktike të zgjidhjes së një problemi të tillë, do të vërej vetëm se mënyra më e përshtatshme dhe universale në një situatë të tillë do të ishte ngarkimi i një liste dokumentesh në formatin XML.

Shkëmbimi duke përdorur këtë format është universal sepse shumica e aplikacioneve mund të punojnë me të. Le të shohim se si mund të ngarkoni një listë të dokumenteve të konfigurimit në një skedar XML nga 1C: Enterprise.

Ngarko në XML

Dhe kështu, le të kalojmë te gjëja kryesore. Duhet të kalojmë listën e meta të dhënave të dokumentit dhe të gjenerojmë listën në skedarin XML. Pamja e mëposhtme e ekranit tregon algoritmin për gjenerimin e një skedari XML:

Funksioni CreateXML() Eksporto // Merrni emrin e skedarit të përkohshëm Rruga = GetTemporaryFileName(); // Inicializoni klasën "XML Record". Hyrja = New EntryXML; // Hapni një skedar të përkohshëm për shkrim- 8 " ) ; // Shkruani deklaratën e skedarit XML Regjistro. WriteDeclarationXML() ; // Regjistro. WriteElementStart(" DocumentsConfigurations" ) ; // Elementi i parë // Atributi i elementit të parë me datën e krijimit të skedarit Regjistro. WriteAttribute(" krijuar", Format(Data aktuale(), " DF = yyyy-MM- ddThh:mm:ss; DLF= DT" ) ) ; // Shkruani një element për çdo dokument konfigurimi. Ne vendosim emrin e dokumentit në tekst. Për çdo dokument nga metadatat. Regjistrimi i ciklit të dokumenteve. WriteElementStart ("Dokument"); Regjistro. WriteText(Emri i Dokumentit); Regjistro. WriteEndElement() ; Cikli i Fundit ; // Përfundo shkrimin e elementit të parë Regjistro. WriteEndElement() ; Regjistro. Mbyll (); // Mbyll skedarin // Merrni të dhënat binare të skedarit dhe vendoseni në ruajtje të përkohshme BinaryData = BinaryData(Rruga) e re; Adresa = PlaceInTemporaryStorage(Binary Data, New UniqueIdentifier); Adresa e Kthimit; // Kthejeni adresën e skedarit në ruajtje Funksioni i Fundit

Çdo element i krijuar duhet të plotësohet saktë. Pas ekzekutimit të “WriteStartofElement()”, duhet të ekzekutohet metoda “WriteEndElement()”, përndryshe struktura e skedarit XML do të jetë e pasaktë.

Modeli i përgjithshëm për krijimin e skedarëve XML është sekuenca e mëposhtme:

// 1. Inicializoni klasën "XML Record". Hyrja = New EntryXML; // 2. Hapni një skedar të përkohshëm për regjistrim Regjistro. OpenFile (Rruga, " UTF - 8 " ) ; // 3. Shkruani deklaratën e skedarit XML Regjistro. WriteDeclarationXML() ; // // 4. ++ Shkruani përmbajtjen e skedarit XML Regjistro. WriteElementStart("XMLElement"); Regjistro. WriteEndElement() ; // -- Shkruani përmbajtjen e skedarit XML // 5. Mbyllni skedarin Regjistro. Mbylle ();

Këto pesë hapa krijojnë pothuajse çdo skedar XML.

Në shembullin tonë, skedari i gjeneruar konvertohet në të dhëna binare dhe kthehet në vendin ku thirret funksioni CreateXML. Ky skedar më pas mund të shkruhet në sistemin e skedarëve.

Mund të shihni një shembull të skedarit të ngarkuar në pamjen e mësipërme.

Aplikim i Palës së Tretë

Si shembull, kam krijuar një aplikacion në .NET Framework për të demonstruar leximin e një skedari XML në një aplikacion të palës së tretë.

Programi lexon skedarin e krijuar dhe shfaq dokumentet në formën e një liste:

Mund ta provoni vetë, aplikacioni është i disponueshëm për shkarkim duke përdorur lidhjen në fund të artikullit.

Shkathtësi

Formati XML përdoret në shumicën e konfigurimeve për shkëmbimin e të dhënave ndërmjet zgjidhjeve të aplikacioneve në platformën 1C:Enterprise. Një tjetër metodë komunikimi e përdorur zakonisht është përmes një lidhjeje COM. XML ju lejon të shkëmbeni pothuajse me çdo aplikacion, prandaj meriton të quhet universal.

Skedarët për shkarkim:

Aplikacioni për leximin e skedarëve XML.

Përpunimi i gjenerimit të skedarit XML.

Puna me dokumente XML është e disponueshme drejtpërdrejt nga gjuha e integruar e sistemit 1C:Enterprise 8.

Ekziston një mundësi:

  • lexoni dhe shkruani në mënyrë sekuenciale dokumente xml:
    • konvertoni nga një varg i marrë nga teksti i një elementi ose një vlerë atributi XML në një vlerë sipas llojit të specifikuar;
    • merrni një paraqitje të vargut të vlerës për të vendosur në tekstin e një elementi ose vlerën e një atributi XML;
    • merrni llojin e të dhënave XML që korrespondon me llojin e kaluar si parametër;
    • kontrolloni nëse një vlerë e tipit të specifikuar mund të lexohet nga XML;
    • kontrolloni për pajtueshmërinë e skemës XML kur lexoni XML
    • regjistroni vlerën në formatin XML;
    • ktheni një lloj që përputhet me llojin e të dhënave XML.
  • përdorni një model aksesi objekti për të dhënat e dokumentit xml (DocumentDOM), i cili përputhet me standardet e mëposhtme:
    • DOM Niveli 2;
    • XPath (DOM Niveli 3);
    • Ngarkoni dhe ruani DOM (Niveli 3 i DOM).
  • përdorni modelin e objektit XML Schema (XML Schema);
  • përdorni standardin Canonical XML 1.1.

Duke përdorur një lidhje të jashtme dhe mekanizma për të punuar me XML, ju mund të organizoni integrimin me sistemet e aplikacioneve duke përdorur formatet e pranuara në këto sisteme. Për këtë përdoren mekanizmat e transformimit XSL. Për shembull, për një integrim të tillë mund të përdorni serverin BizTalk të Microsoft:

Informacion i shpejtë

Platforma ofron mjete për të punuar me dokumente XML në formatin binar të Fast Infoset. Teknologjia Fast Infoset përdor një sintaksë alternative për shfaqjen e të dhënave XML. Kjo siguron madhësi më të vogla skedarësh dhe shpejtësi më të shpejtë përpunimi sesa të dhënat e shkruara në formatin konvencional XML. Një skedar i shkruar në formatin Fast Infoset ka një shtesë .fi ose .finf.

Mënyrat e funksionimit

Përpunimi UploadLoadDataXML82 zbaton 2 mënyra funksionimi: Ngarkimi (krijimi i një skedari ngarkimi të të dhënave të specifikuara nga përdoruesi) dhe Load (leximi i një skedari ngarkimi të krijuar nga modaliteti me të njëjtin emër dhe shkrimi i të dhënave që përmbahen në të). Modaliteti vendoset duke e zgjedhur atë në fushën Mode.

Përpara se të filloni një modalitet të caktuar (duke klikuar butonin Run), duhet të specifikoni emrin e skedarit të ngarkuar, ose duke e futur manualisht në fushën "Emri i skedarit", ose duke përdorur butonin për të zgjedhur këtë fushë dhe dialogun standard të përzgjedhjes së skedarit .

Në modalitetin e shkarkimit, është e mundur të modifikoni përdorimin e totaleve kur shkruani regjistra, gjë që mund të ndikojë në shpejtësinë e shkarkimit. Butonat "Çaktivizo totalet" dhe "Aktivizo totalet" janë të disponueshëm kur është caktuar flamuri "Aktivizo aftësinë për të modifikuar përdorimin e totaleve gjatë ngarkimit të të dhënave" dhe përdoren për të kontrolluar manualisht mënyrën e përdorimit të totaleve gjatë ngarkimit të të dhënave. ** Kushtet e zbatueshmërisë së përpunimit **

Përpunimi mund të përdoret vetëm në rastet kur baza e informacionit në të cilën janë ngarkuar të dhënat dhe ajo në të cilën janë ngarkuar të dhënat janë homogjene (konfigurimet janë identike, të dhënat mund të ndryshojnë), ose të gjitha objektet e ngarkuara janë pothuajse plotësisht identike në përbërja dhe llojet e detajeve dhe pjesëve tabelare, vetitë e objektit të meta të dhënave “udhëheqëse”, etj. Duhet të theksohet se, për shkak të këtyre kufizimeve, përpunimi synohet kryesisht për shkëmbim ndërmjet IS homogjene.

Formati i skedarit të ngarkimit ndryshon nga formati i skedarit të krijuar gjatë ngarkimit sipas një plani shkëmbimi në pjesën e kokës. Për të ngarkuar të dhëna (elemente të drejtorisë, grupe regjistrash, etj.), përpunimi përdor të njëjtin mekanizëm serializimi XML si ngarkimi sipas planeve të shkëmbimit në këtë pjesë, formatet e skedarëve janë identikë.

Përcaktimi i përbërjes së shkarkimit

Përpunimi lejon ngarkimin e plotë dhe të pjesshëm të të dhënave të bazës së informacionit në një skedar. Përbërja e të dhënave të ngarkuara konfigurohet në dialog duke kontrolluar kutitë në kolonën e pemës që shfaq objektet e meta të dhënave për të cilat mund të ngarkohen të dhënat. Një kolonë shtesë e kutive të kontrollit, "Nëse është e nevojshme", përcakton nevojën për të shkarkuar objekte të këtij lloji "me referencë". Kjo do të thotë, nëse kutia e kontrollit kontrollohet vetëm në kolonën "Nëse është e nevojshme", atëherë të dhënat për një objekt të tillë nuk do të shkarkohen plotësisht, por vetëm në masën që është e nevojshme për të ruajtur integritetin referues në bazën e informacionit që do të ngarkojë shkarkimin. dosje.

Kur hapni një formular, përpunimi vendos shenjën e shkarkimit duke iu referuar të gjitha objekteve, gjë që garanton integritetin referencial të fragmentit të shkarkuar të bazës së informacionit.

Kur klikoni në butonin "Zbuloni objektet e shkarkuara me lidhje", përpunimi analizon se cilat lidhje të dhënash mund të përmbahen në objektet që kanë grupin e flamurit të plotë të shkarkimit dhe automatikisht plotëson kolonën e flamujve që tregojnë nevojën për shkarkim me lidhje. Nëse objekti tashmë ka vendosur flamurin e plotë të shkarkimit, atëherë flamuri i shkarkimit sipas referencës nuk është vendosur.

Aplikacionet e mundshme

Përdorimi i këtij përpunimi është i mundur, për shembull, për të krijuar një kopje rezervë të plotë ose të pjesshme të të dhënave, për të shkëmbyer të dhëna midis bazave të informacionit dhe gjithashtu si një mjet ndihmës kur rivendosni bazat problematike të informacionit.

- faqet e njohura të internetit, të cilat janë gjithashtu një analog i XML me kontrolle të dobëta.

Objektet XML Reader/Writer, FastInfoset, HTML zgjerojnë aftësitë e leximit të skedarëve të tekstit me përpunimin e integruar të etiketave të shënjimit.

Ato përdoren gjithashtu për objektet DOMBuilder/DOMRecord (shih më poshtë) si burime të dhënash.

Skedarët XML 1C përmbajnë informacione teksti, domethënë ato janë skedarë teksti. Objektet 1C XML Reader dhe 1C Write XML janë një "shtesë" që e bën më të lehtë punën me etiketat XML në një skedar 1C.

Objektet ReadingFastInfoset 1C dhe WritingFastInfoset 1C, ReadingHTML 1C dhe WritingHTML 1C janë plotësisht të ngjashme me ReadingXML 1C dhe WritingXML 1C dhe shërbejnë për të punuar në të njëjtën mënyrë me formatet e tjera.

Skedari XML 1C i përdorur në shembuj

Drejtori>

Drejtori>

Text valueProps>
Drejtori>
Konfigurimi>

Shembull 1. Leximi i një skedari XML 1C në një pemë vlerash duke përdorur Reading XML 1C

//hap skedarin XML 1C për lexim duke përdorur ReadingXML 1C
Skedari = ReadXML i ri();
File.OpenFile("D:\ConfigurationStructure.xml");

//përgatitni pemën e vlerës
//çdo degë XML mund të ketë një emër, atribute dhe vlerë
dzXML = NewValueTree();
dzXML.Columns.Add("Emri");
dzXML.Columns.Add("Vlera");
dzXML.Columns.Add("Atributet");

//meqenëse një varg XML mund të ketë disa atribute, ne do t'i shkruajmë ato në tabelën e vlerave
//çdo atribut ka një emër dhe një vlerë
tAtributet = New ValueTable();
tAttributes.Columns.Add("Emri");
tAttributes.Columns.Add("Vlera");

//niveli i foleve do të na ndihmojë të kuptojmë kur duhet të shtojmë një degë të folezuar dhe kur duhet të kthehemi lart në një nivel
Niveli i foleve = 0;
//vija aktuale është një vijë peme, do të ndryshojë me rritjen e foleve
Rreshti aktual = E padefinuar;
//leximi i skedarit XML 1C nuk bëhet rresht pas rreshti, por sipas strukturës kur të përfundojë skedari, leximi do të kthehet FALSE;
Ndërsa File.Read() Loop

//ne jemi të interesuar për tre lloje nyjesh - fillimi i elementit, teksti (vlera e elementit) dhe fundi i elementit (për t'u kthyer në nivelin më të lartë)
Nëse File.NodeType = XMLNodeType.ElementStart Pastaj

Niveli i folezimit = Niveli i folezimit + 1;

//nëse kjo është rreshti i parë, atëherë shtojeni në krye të pemës dhe ruani vetëm emrin
Nëse CurrentRow = I Padefinuar Atëherë
CurrentLine = dXML.Lines.Add();
CurrentLine.Name = File.Name;
Vazhdo;
Përndryshe
//vijat e mbivendosura
CurrentRow = CurrentRow.Rows.Add();
CurrentLine.Name = File.Name; //ruaj emrin

//a ka ky element XML atribute?
Nëse File.NumberAttributes() > 0 Pastaj
//nëse po, kopjoni tabelën e përgatitur bosh për të ruajtur atributet
tAttributetNyja = tAttributet.Kopjo();
//cikli përmes numrit të atributeve të këtij elementi
Për llogarinë = 0 sipas skedarit.Numri i atributeve()-1 Cikli
//për çdo atribut, mbani mend emrin dhe vlerën
Rreshti = tNodeAttributes.Add();
Line.Emri = File.AttributeName(Sch);
Row.Value = File.AttributeValue(Ac);
Cikli i Fundit;
//ruaj tabelën e atributeve të elementit në rreshtin aktual
CurrentRow.Attributes = tNodeAttributes;
fundNëse;
fundNëse;

ElseIf File.NodeType = XMLNodeType.EndElement Pastaj
//në fillim të elementit rrisim nivelin e foleve, në fund të elementit e ulim atë
Niveli i foleve = Niveli i folesë - 1;
//kthejeni linjën aktuale një nivel më lart
CurrentRow = CurrentRow.Parent;

ElseIf File.NodeType = XMLNodeType.Text Pastaj
//nëse elementi ka një vlerë, thjesht ruajeni atë
CurrentRow.Value = File.Value;

fundNëse;

Cikli i Fundit;

File.Close();

Shembulli 2. Regjistrimi i një skedari XML 1C duke përdorur objektin 1C Record XML

//krijoni një skedar Regjistroni XML 1C
Skedari = NewXMLRecord();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("Konfigurimi");

//përdor metadatat për të kapërcyer të gjitha drejtoritë (për më shumë detaje, shih "Puna me metadata")
Për çdo Drejtori nga Cikli Metadata.Directories

//WriteStartofElement - hap një degë të re [në varësi]
File.WriteElementStart("Direktoria");
//WriteAttribute - shkruan një atribut në një degë të hapur më parë
File.WriteAttribute("Emri", Directory.Name);
File.WriteAttribute("Sinonim", Directory.Sinonim);

//duke përdorur metadata ne kalojmë nëpër të gjitha detajet e drejtorisë
Për çdo Props nga Drejtoria.Cikli i Props




Cikli i Fundit;

//përdor metadata për të përshkuar të gjitha pjesët tabelare të drejtorisë
Për çdo PM nga Drejtoria e Pjesëve Tabelore të Ciklit
File.WriteElementStart("TabularPart");
File.WriteAttribute("Emri", PM.Name);
File.WriteAttribute("Sinonim", PM.Sinonim);

Për çdo Rekuizita nga PM.Cikli Rekuizitës
File.WriteElementStart("Props");
File.WriteAttribute("Emri", Atributi.Emri);
File.WriteAttribute("Sinonim", Atribute.Sinonim);
File.WriteEndElement();
Cikli i Fundit;

File.WriteEndElement();
Cikli i Fundit;

//WriteEndElement - “mbyll” degën e hapur më parë duke përdorur WriteBeginElement
File.WriteEndElement();
Cikli i Fundit;

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