Vienkārša augšupielāde trešās puses lietojumprogrammai. Datu augšupielādes process uz xml. XML faila ģenerēšana. Vienkārša augšupielāde trešās puses lietojumprogrammai 1c 8 lasīšanas xml piemērs

Tas ietaupīs laiku, ievadot informāciju par Peterhost pakalpojumu iegādi 1C.
Lai to izdarītu, 1C ir jāaugšupielādē XML fails, un no tā tiks ģenerēts dokuments “Preču un pakalpojumu saņemšana”, kurā būs informācija par iegādātajiem pakalpojumiem. Pamatojoties uz šo dokumentu, var izveidot rēķinu.

Sīki izstrādāti norādījumi ir sniegti zemāk.

1. Ārējās apstrādes pieslēgšana

1.1. Ja izmantojat 1C:Enterprise 8.X informācijas bāzi ar “Enterprise Accounting 2.0” konfigurāciju, lai ielādētu dokumentu CommerceML formātā, ir jāpievieno ārējā apstrāde ()
To var izdarīt divos veidos:
1. Saglabājiet ārējās apstrādes failu lokāli diskā un atveriet to izvēlnē “Fails” → “Atvērt” pirms katras datu ielādes CML formātā.
2. Pieslēgt apstrādi informācijas bāzei (IS) pastāvīgi. Tad tas būs pieejams ikvienam (ja strādā tīklā) no izvēlnes “Rīki” → “Papildu atskaites un apstrāde” → “Papildu ārējā apstrāde”.

  • Izvēlnē “Pakalpojums” ir jāizvēlas “Papildu atskaites un apstrāde” - “Papildu ārējā apstrāde”.
  • Noklikšķiniet uz pogas "Pievienot". Tiks atvērta veidlapa jauna direktorija elementa pievienošanai:
  • Laukā “Nosaukums” norādiet apstrādes nosaukumu, piemēram, “Datu ielāde CommerceML formātā (RU-CENTER grupa).”
  • Noklikšķiniet uz faila atlases pogas un norādiet ceļu uz lejupielādes apstrādes failu ().
  • Noklikšķiniet uz pogas “OK” Tagad apstrāde ir savienota ar informācijas bāzi un atrodas direktorijā “Papildu ārējā apstrāde”, un to var atvērt, veicot dubultklikšķi ar peli.

1.2. Ja izmantojat “Ražošanas uzņēmuma pārvaldības” (versija 10.3 un jaunāka versija) un “Tirdzniecības pārvaldība” (versija 1.3 un jaunāka) konfigurācijas, šī apstrāde jau ir iespējota un varat pāriet uz 2. darbību.

2. Dokumenta “Preču un pakalpojumu saņemšana” noformēšana

Tālāk norādīto darbību rezultātā informācija par pakalpojumiem, kas iegādāti no Peterhost, tiks ievadīta 1C.
1. Tālāk savā datorā ir jāsaglabā XML fails ar dokumenta “Preču un pakalpojumu saņemšana” datiem uz nepieciešamo periodu. Fails XML formātā atrodas sadaļā Personiskais konts zem saites “XML for 1C”.
Noklikšķiniet uz atlases pogas pa labi no lauka “Datu faila nosaukums” un atlasiet šo failu (skatiet 1. attēlu). Uz jautājumu “Lasīt datus no faila?” atbildi "OK". Datu fails tiks nolasīts, apstrādājot.
2. Ja apstrāde spēj noteikt visu atbilstību starp faila datu elementiem un informācijas bāzes datiem, tiks uzdots jautājums “Saglabāt datus infobāzē?”. Ja atbildēsit “Jā”, tiks izveidots jauns dokuments “Preču un pakalpojumu saņemšana”. Pārejiet uz 3. darbību.
3. Ja netiek identificētas visas datu atbilstības, tiks parādīts ziņojums: “Programma, ielādējot datus, nespēja automātiski atrast informācijas drošības objektus, kas atbilst apmaiņas failā pārsūtītajiem elementiem...” un piedāvās veikt salīdzinājums manuāli. Šajā gadījumā jums jāveic šādas darbības:

  • Noklikšķiniet uz "OK". Tiks atvērta veidlapa failu objektu un informācijas drošības salīdzināšanai. Tam ir vairākas cilnes, kas atbilst dažāda veida objektiem (organizācijas, darbuzņēmēji, priekšmeti utt.). Ja kāda veida dati nav saskaņoti, attiecīgajās cilnēs būs sarkanas izsaukuma zīmes (sk. 2. attēlu).
  • Dodieties uz atbilstošām grāmatzīmēm un manuāli saskaņojiet elementus. Jāņem vērā, ka darījumu partneru un organizāciju atbilstības tiek meklētas pēc NĪN, bet nomenklatūras atbilstības tiek meklētas vispirms pēc raksta numura, pēc tam pēc nosaukuma. Ja faila datiem atbilstošais elements nav IB, tad to var izveidot automātiski, izmantojot faila datus, noklikšķinot uz pogas “Izveidot, izmantojot datus no faila”.
  • Pievienojot preces, ir jāatzīmē rekvizīts “Service” (skat. 3. attēlu). Varat arī mainīt vienuma pilnos un īsos nosaukumus nomenklatūrā.
  • Cilnē “Konti” vēlams pievienot preču uzskaites kontus, lai, veidojot dokumentu “Preču un pakalpojumu saņemšana”, šie numuri tiktu ievadīti automātiski. Piemēram, pakalpojumiem var iestatīt šādas vērtības: “Grāmatvedības konts” – 25 (Kopējie ražošanas izdevumi) un “Iesniegtā PVN uzskaite” – 19.04 (PVN par iegādātajiem pakalpojumiem) (skat. 4. attēlu).
  • Pēc visu elementu salīdzināšanas un pogas “OK” nospiešanas programma lūgs apstiprinājumu dokumenta augšupielādei informācijas drošības sistēmā, pēc tam izveidos jaunu dokumentu “Preču un pakalpojumu saņemšana” (skat. 5. attēlu).

3. Dokumenta “Preču un pakalpojumu saņemšana” ievietošana

Lai ievietotu dokumentu “Preču un pakalpojumu saņemšana”, tas jāatver, veicot dubultklikšķi un jāaizpilda trūkstošie lauki, piemēram, “Avansa ieskaite” (piemēram, “Automātiski”) un lauki “Norēķinu konti”. ” cilne (skat. 6. attēlu). Šo lauku vērtības nosaka jūsu organizācijas grāmatvedības politikas. Lai ievietotu dokumentu, noklikšķiniet uz pogas “OK”.

4. Dokumenta “Rēķins” noformēšana

Pēc veiksmīgas “Preču un pakalpojumu saņemšanas” dokumenta izveidošanas un grāmatošanas ar to var izveidot dokumentu “Saņemts rēķins”. Lai to izdarītu, noklikšķiniet uz atbilstošās saites dokumenta veidlapas apakšējā kreisajā daļā.

Organizācijā grāmatvedību var uzturēt ne tikai risinājumos platformā 1C:Enterprise, bet arī citās programmatūras sistēmās (Galaktika, Parus, SAP u.c.). Tas rada izaicinājumu integrēt divas lietojumprogrammas.

Piemēram, kādai lietojumprogrammai (sauksim to par "X") ir jāizlasa konfigurācijas dokumentu saraksts. Mēs nerunāsim par praktiskiem ieguvumiem no šādas problēmas risināšanas, tikai atzīmēšu, ka ērtākais un universālākais veids šādā situācijā būtu augšupielādēt dokumentu sarakstu XML formātā.

Apmaiņa, izmantojot šo formātu, ir universāla, jo lielākā daļa lietojumprogrammu var strādāt ar to. Apskatīsim, kā jūs varat augšupielādēt konfigurācijas dokumentu sarakstu XML failā no 1C:Enterprise.

Augšupielādēt XML formātā

Un tā, pāriesim pie galvenā. Mums ir jāšķērso dokumenta metadatu saraksts un jāģenerē saraksts XML failā. Šis ekrānuzņēmums parāda XML faila ģenerēšanas algoritmu:

Funkcija CreateXML() Eksportēt // Iegūstiet pagaidu faila nosaukumu Ceļš = GetTemporaryFileName() ; // Inicializējiet klasi "XML ieraksts". Entry = New EntryXML; // Atveriet pagaidu failu rakstīšanai- 8 " ) ; // Uzrakstiet XML faila deklarāciju Ieraksts. WriteDeclarationXML() ; // Ieraksts. WriteElementStart(" DokumentiKonfigurācijas" ) ; // Pirmais elements // Pirmā elementa atribūts ar faila izveides datumu Ieraksts. WriteAttribute(" ģenerēts ", formāts(pašreizējais datums(),), " DF = gggg-MM- ddThh:mm:ss; DLF = DT" ) ) ; // Uzrakstiet elementu katram konfigurācijas dokumentam. Tekstā ievietojam dokumenta nosaukumu. Katram dokumentam no metadatiem. Dokumentu cikla ierakstīšana. WriteElementStart("Dokuments"); Ieraksts. WriteText(Dok.Nosaukums) ; Ieraksts. WriteEndElement() ; EndCycle ; // Pabeidziet rakstīt pirmo elementu Ieraksts. WriteEndElement() ; Ieraksts. Aizvērt (); // Aizveriet failu // Iegūstiet faila bināros datus un ievietojiet to pagaidu krātuvē Bināri dati = jauni Bināri dati(Ceļš) ; Adrese = PlaceInTemporaryStorage (bināri dati, jauns unikālais identifikators); Atgriešanās adrese; // Atgriezt faila adresi krātuvē EndFunction

Katrs izveidotais elements ir jāaizpilda pareizi. Pēc “WriteStartofElement()” izpildes ir jāizpilda metode “WriteEndElement()”, pretējā gadījumā XML faila struktūra būs nepareiza.

Vispārējā veidne XML failu izveidei ir šāda secība:

// 1. Inicializējiet "XML ieraksta" klasi Entry = New EntryXML; // 2. Atveriet pagaidu failu ierakstīšanai Ieraksts. OpenFile (ceļš, " UTF - 8 " ) ; // 3. Uzrakstiet XML faila deklarāciju Ieraksts. WriteDeclarationXML() ; // // 4. ++ Uzrakstiet XML faila saturu Ieraksts. WriteElementStart("XMLElement"); Ieraksts. WriteEndElement() ; // -- ierakstiet XML faila saturu // 5. Aizveriet failu Ieraksts. Aizvērt ();

Šīs piecas darbības izveido gandrīz jebkuru XML failu.

Mūsu piemērā ģenerētais fails tiek pārveidots par binārajiem datiem un tiek atgriezts vietā, kur tiek izsaukta funkcija CreateXML. Pēc tam šo failu var ierakstīt failu sistēmā.

Augšupielādētā faila piemēru var redzēt iepriekš esošajā ekrānuzņēmumā.

Trešās puses pieteikums

Piemēram, es izveidoju lietojumprogrammu .NET Framework, lai demonstrētu XML faila lasīšanu trešās puses lietojumprogrammā.

Programma nolasa izveidoto failu un parāda dokumentus saraksta veidā:

Varat to izmēģināt pats, lietojumprogramma ir pieejama lejupielādei, izmantojot saiti raksta beigās.

Daudzpusība

XML formāts tiek izmantots lielākajā daļā konfigurāciju datu apmaiņai starp lietojumprogrammu risinājumiem platformā 1C: Enterprise. Vēl viena izplatīta saziņas metode ir COM savienojums. XML ļauj apmainīties ar gandrīz jebkuru lietojumprogrammu, tāpēc to ir pelnījis saukt par universālu.

Faili lejupielādei:

XML failu lasītāja lietojumprogramma.

Notiek XML faila ģenerēšanas apstrāde.

Darbs ar XML dokumentiem ir pieejams tieši no 1C:Enterprise 8 sistēmas iebūvētās valodas.

Pastāv iespēja:

  • secīgi lasīt un rakstīt xml dokumentus:
    • konvertēt no virknes, kas iegūta no elementa teksta vai XML atribūta vērtības, par vērtību atbilstoši norādītajam tipam;
    • iegūstiet elementa tekstā ievietojamās vērtības virknes attēlojumu vai XML atribūta vērtību;
    • iegūt XML datu tipu, kas atbilst tipam, kas nodots kā parametrs;
    • pārbaudīt, vai norādītā tipa vērtību var nolasīt no XML;
    • lasot XML, pārbaudiet atbilstību XML shēmai
    • ierakstīt vērtību XML formātā;
    • atgriež veidu, kas atbilst XML datu tipam.
  • xml dokumentu datiem (DocumentDOM) izmantojiet objektu piekļuves modeli, kas atbilst šādiem standartiem:
    • DOM 2. līmenis;
    • XPath (DOM 3. līmenis);
    • DOM ielāde un saglabāšana (DOM 3. līmenis).
  • izmantot XML shēmas objekta modeli (XML Schema);
  • izmantojiet Canonical XML 1.1 standartu.

Izmantojot ārējo savienojumu un mehānismus darbam ar XML, jūs varat organizēt integrāciju ar lietojumprogrammu sistēmām, izmantojot šajās sistēmās pieņemtos formātus. Šim nolūkam tiek izmantoti XSL transformācijas mehānismi. Piemēram, šādai integrācijai varat izmantot Microsoft BizTalk serveri:

Ātra informācija

Platforma nodrošina rīkus darbam ar XML dokumentiem Fast Infoset binārajā formātā. Fast Infoset tehnoloģija izmanto alternatīvu sintaksi XML datu attēlošanai. Tas nodrošina mazāku failu izmēru un ātrāku apstrādes ātrumu nekā parastajā XML formātā ierakstītie dati. Fast, kas rakstīts Fast Infoset formātā, ir .fi vai .finf paplašinājums.

Darbības režīmi

Apstrāde UploadLoadDataXML82 realizē 2 darbības režīmus: Augšupielādēt (lietotāja norādīto datu augšupielādes faila izveidošana) un Load (tāda paša nosaukuma režīmā izveidotā augšupielādes faila nolasīšana un tajā esošo datu ierakstīšana). Režīms tiek iestatīts, atlasot to laukā Mode.

Pirms konkrēta režīma palaišanas (noklikšķinot uz pogas Palaist), jums jānorāda augšupielādes faila nosaukums, ievadot to manuāli laukā “Faila nosaukums” vai izmantojot pogu, lai atlasītu šo lauku un standarta faila atlases dialoglodziņu. .

Lejupielādes režīmā ir iespējams rediģēt kopsummas izmantošanu, rakstot reģistrus, kas var ietekmēt lejupielādes ātrumu. Pogas “Atspējot kopsummas” un “Iespējot kopsummas” ir pieejamas, ja ir iestatīts karogs “Iespējot iespēju rediģēt kopsummas izmantošanu datu ielādes laikā”, un tās izmanto, lai manuāli kontrolētu kopsummas izmantošanas režīmu datu ielādes laikā. ** Apstrādes piemērošanas nosacījumi**

Apstrādi var izmantot tikai gadījumos, ja informācijas bāze, kurā dati tika augšupielādēti, un tā, kurā dati tika ielādēti, ir viendabīga (konfigurācijas ir identiskas, dati var atšķirties), vai visi augšupielādētie objekti ir gandrīz pilnībā identiski detaļu un tabulas daļu sastāvs un veidi, “vadošā” metadatu objekta īpašības utt. Jāņem vērā, ka šo ierobežojumu dēļ apstrāde galvenokārt ir paredzēta apmaiņai starp viendabīgām IS.

Augšupielādes faila formāts atšķiras no faila formāta, kas izveidots, augšupielādējot saskaņā ar apmaiņas plānu galvenes daļā. Lai augšupielādētu datus (direktorija elementus, reģistra ierakstu kopas utt.), apstrādei tiek izmantots tāds pats XML serializācijas mehānisms kā augšupielādei saskaņā ar apmaiņas plāniem, šajā daļā failu formāti ir identiski.

Izkraušanas sastāva noteikšana

Apstrāde ļauj gan pilnībā, gan daļēji augšupielādēt informācijas bāzes datus failā. Augšupielādēto datu sastāvs tiek konfigurēts dialoglodziņā, atzīmējot rūtiņas koka kolonnā, kurā tiek parādīti metadatu objekti, par kuriem var augšupielādēt datus. Papildu izvēles rūtiņu kolonna “Ja nepieciešams” nosaka nepieciešamību izlādēt šāda veida objektus “pēc atsauces”. Tas ir, ja izvēles rūtiņa ir atzīmēta tikai kolonnā “Ja nepieciešams”, dati par šādu objektu netiks lejupielādēti pilnībā, bet tikai tādā apjomā, kas nepieciešams, lai saglabātu atsauces integritāti informācijas bāzē, kas ielādēs lejupielādi. failu.

Atverot veidlapu, apstrāde iestata izkraušanas zīmi, atsaucoties uz visiem objektiem, kas garantē izlādētā informācijas bāzes fragmenta atsauces integritāti.

Noklikšķinot uz pogas “Noteikt objektus, kas lejupielādēti, izmantojot saiti”, apstrāde analizē, kuras datu saites var ietvert objektos, kuriem ir iestatīts pilns lejupielādes karodziņš, un automātiski aizpilda karogu kolonnu, kas norāda uz nepieciešamību lejupielādēt, izmantojot saiti. Ja objektam jau ir iestatīts pilnas izkraušanas karodziņš, tad izkraušanas karogs pēc atsauces nav iestatīts.

Iespējamie pielietojumi

Šīs apstrādes izmantošana ir iespējama, piemēram, datu pilnīgas vai daļējas rezerves kopijas izveidošanai, datu apmaiņai starp informācijas bāzēm, kā arī kā palīglīdzekli, atjaunojot problemātiskās informācijas bāzes.

- labi zināmas tīmekļa lapas, kas ir arī XML analogs ar vājām pārbaudēm.

XML lasītāja/rakstītāja objekti, FastInfoset, HTML paplašina teksta failu lasīšanas iespējas ar iebūvētu iezīmēšanas tagu apstrādi.

Tie tiek izmantoti arī DOMBuilder/DOMRecord objektiem (skatiet tālāk) kā datu avoti.

XML 1C faili satur teksta informāciju, tas ir, tie ir teksta faili. 1C XML Reader un 1C Write XML objekti ir “papildinājums”, kas atvieglo darbu ar XML tagiem 1C failā.

Objekti ReadingFastInfoset 1C un WritingFastInfoset 1C, ReadingHTML 1C un WritingHTML 1C ir pilnīgi līdzīgi ReadingXML 1C un WritingXML 1C, un tie darbojas tādā pašā veidā ar citiem formātiem.

piemēros izmantotais XML 1C fails

Katalogs>

Katalogs>

Teksts valueProps>
Katalogs>
Konfigurācija>

1. piemērs. 1C XML faila lasīšana vērtību kokā, izmantojot Reading XML 1C

//atveriet XML 1C failu lasīšanai, izmantojot ReadingXML 1C
Fails = Jauns ReadXML();
File.OpenFile("D:\ConfigurationStructure.xml");

//sagatavo vērtību koku
//katrai XML filiālei var būt nosaukums, atribūti un vērtība
dzXML = NewValueTree();
dzXML.Columns.Add("Nosaukums");
dzXML.Columns.Add("Vērtība");
dzXML.Columns.Add("Atribūti");

//tā kā XML virknei var būt vairāki atribūti, mēs tos ierakstīsim vērtību tabulā
//katram atribūtam ir nosaukums un vērtība
tAtribūti = Jauna vērtību tabula();
tAtribūti.Slejas.Pievienot("Nosaukums");
tAtribūti.Columns.Add("Vērtība");

//ligzdošanas līmenis palīdzēs mums saprast, kad jāpievieno ligzdots zars un kad jāpaceļas atpakaļ par līmeni
Ligzdošanas līmenis = 0;
//pašreizējā līnija ir koka līnija, mainīsies, palielinoties ligzdai
CurrentRow = Nedefinēts;
//XML 1C faila lasīšana netiek veikta rindu pa rindiņai, bet gan atbilstoši struktūrai; kad fails beidzas, lasīšana atgriezīsies FALSE
Kamēr File.Read() Loop

//mūs interesē trīs veidu mezgli - elementa sākums, teksts (elementa vērtība) un elementa beigas (lai atgrieztos augstākajā līmenī)
Ja File.NodeType = XMLNodeType.ElementStart Tad

Ligzdošanas līmenis = ligzdošanas līmenis + 1;

//ja šī ir pirmā rinda, tad pievienojiet to koka pašā augšpusē un saglabājiet tikai nosaukumu
Ja CurrentRow = Nedefinēts, tad
PašreizējāRinda = dXML.Rindas.Pievienot();
CurrentLine.Name = faila nosaukums;
Turpināt;
Citādi
//ligzdotas līnijas
PašreizējāRinda = PašreizējāRinda.Rindas.Pievienot();
CurrentLine.Name = faila nosaukums; //saglabājiet nosaukumu

//vai šim XML elementam ir atribūti?
Ja File.NumberAttributes() > 0 Tad
//ja jā, kopējiet sagatavoto tukšo tabulu, lai saglabātu atribūtus
tAttributesNode = tAttributes.Copy();
//pārskatiet šī elementa atribūtu skaitu
Kontam = 0 pēc faila. Atribūtu skaits ()-1 cikls
//katram atribūtam atcerieties nosaukumu un vērtību
Rinda = tNodeAttributes.Add();
Line.Name = File.AttributeName(Sch);
Rinda.Vērtība = File.AttributeValue(Ac);
EndCycle;
//saglabājiet elementa atribūtu tabulu pašreizējā rindā
CurrentRow.Attributes = tNodeAttributes;
endIf;
endIf;

ElseIf File.NodeType = XMLNodeType.EndElement Tad
//elementa sākumā paaugstinām ligzdošanas līmeni, elementa beigās samazinām
Ligzdošanas līmenis = ligzdošanas līmenis — 1;
//atgriež pašreizējo rindiņu vienu līmeni uz augšu
PašreizējāRinda = CurrentRow.Parent;

ElseIf File.NodeType = XMLNodeType.Text Tad
//ja elementam ir vērtība, vienkārši saglabājiet to
CurrentRow.Value = File.Value;

endIf;

EndCycle;

File.Close();

2. piemērs. 1C XML faila ierakstīšana, izmantojot objektu 1C Record XML

//izveidot failu Record XML 1C
Fails = NewWriteXML();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("Konfigurācija");

//izmantojiet metadatus, lai šķērsotu visus direktorijus (sīkāku informāciju skatiet sadaļā "Darbs ar metadatiem")
Katram direktorijam no Metadata.Directories cikla

//WriteStartofElement - atver jaunu [pakārtoto] filiāli
File.WriteElementStart("Directory");
//WriteAttribute - raksta atribūtu iepriekš atvērtai filiālei
File.WriteAttribute("Nosaukums", Directory.Name);
File.WriteAttribute("Sinonīms", Direktorija.Sinonīms);

//izmantojot metadatus, mēs izejam visu direktorija informāciju
Katram Rekvizīti no Directory.Props cikla




EndCycle;

//izmantojiet metadatus, lai šķērsotu visas direktorija tabulas daļas
Katram PM no direktorija. Tabulārās cikla daļas
File.WriteElementStart("TabularPart");
File.WriteAttribute("Nosaukums", PM.Nosaukums);
File.WriteAttribute("Sinonīms", PM.Sinonīms);

Katram Props no PM.Props cikla
File.WriteElementStart("Rekvizīti");
File.WriteAttribute("Nosaukums", Atribūti.Nosaukums);
File.WriteAttribute("Sinonīms", Atribūti.Sinonīms);
File.WriteEndElement();
EndCycle;

File.WriteEndElement();
EndCycle;

//WriteEndElement - “aizver” filiāli, kas iepriekš tika atvērta, izmantojot WriteBeginElement
File.WriteEndElement();
EndCycle;

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