Încărcare ușoară pentru aplicație terță parte. Procesul de încărcare a datelor în xml. Generarea unui fișier XML. Încărcare simplă pentru o aplicație terță parte 1c 8 exemplu de citire xml

Se va economisi timp la introducerea informațiilor despre achiziționarea serviciilor Peterhost în 1C.
Pentru a face acest lucru, trebuie să încărcați un fișier XML în 1C și din acesta va fi generat un document „Recepție de bunuri și servicii”, care conține informații despre serviciile achiziționate. Pe baza acestui document poate fi generată o factură.

Mai jos sunt oferite instrucțiuni detaliate.

1. Conectarea procesării externe

1.1. Dacă utilizați baza de informații 1C:Enterprise 8.X cu configurația „Enterprise Accounting 2.0”, pentru a încărca un document în format CommerceML trebuie să conectați procesarea externă ()
Acest lucru se poate face în două moduri:
1. Salvați fișierul de procesare externă local pe disc și deschideți prin meniul „Fișier” → „Deschidere” înainte de fiecare încărcare a datelor în format CML.
2. Conectați permanent procesarea la baza de informații (IS). Apoi va fi disponibil pentru toată lumea (dacă lucrează într-o rețea) din meniul „Instrumente” → „Rapoarte și procesare suplimentare” → „Procesare externă suplimentară”.

  • În meniul „Serviciu”, trebuie să selectați „Rapoarte și procesare suplimentare” - „Procesare externă suplimentară”.
  • Faceți clic pe butonul „Adăugați”. Se va deschide formularul pentru adăugarea unui nou element de director:
  • În câmpul „Nume”, indicați numele procesării, de exemplu, „Încărcarea datelor în format CommerceML (RU-CENTER Group)”.
  • Faceți clic pe butonul de selecție a fișierului și specificați calea către fișierul de procesare a descărcarii ().
  • Faceți clic pe butonul „OK” Acum, procesarea este conectată la baza de informații și se află în directorul „Procesare externă suplimentară” și poate fi deschisă făcând dublu clic pe mouse.

1.2. Dacă utilizați configurațiile „Managementul întreprinderii de producție” (versiunea 10.3 și o versiune ulterioară) și „Gestionarea comerțului” (versiunea 1.3 și o versiune ulterioară), această procesare este deja activată și puteți trece la pasul 2.

2. Formarea documentului „Recepția bunurilor și serviciilor”

Ca urmare a pașilor de mai jos, informațiile despre serviciile achiziționate de la Peterhost vor fi introduse în 1C.
1. În continuare, trebuie să salvați pe computer un fișier XML cu datele documentului „Primire de bunuri și servicii” pentru perioada necesară. Fișierul în format XML se află în secțiunea Cont personal sub linkul „XML pentru 1C”.
Faceți clic pe butonul de selecție din dreapta câmpului „Nume fișier de date” și selectați acest fișier (vezi Figura 1). La întrebarea „Citiți datele dintr-un fișier?” raspunde "OK". Fișierul de date va fi citit prin procesare.
2. Dacă procesarea poate determina toată corespondența dintre elementele de date ale fișierului și datele din baza de informații, atunci se va pune întrebarea „Salvați datele în baza de informații?”. Dacă răspundeți „Da”, va fi creat un nou document „Recepție de bunuri și servicii”. Treceți la pasul 3.
3. Dacă nu sunt identificate toate potrivirile de date, se va afișa mesajul: „La încărcarea datelor, programul nu a putut găsi automat obiecte de securitate a informațiilor corespunzătoare elementelor transferate în fișierul de schimb...” și se va oferi să efectueze compararea manuală. În acest caz, trebuie să faceți următoarele:

  • Faceți clic pe „OK”. Se va deschide un formular pentru compararea obiectelor fișierelor și a securității informațiilor. Are mai multe file care corespund diferitelor tipuri de obiecte (organizații, antreprenori, articole etc.). Dacă orice tip de date nu a fost potrivit, vor apărea semne de exclamare roșii pe filele corespunzătoare (vezi Figura 2).
  • Accesați marcajele corespunzătoare și potriviți manual elementele. Trebuie avut în vedere că potrivirile contrapărților și organizațiilor sunt căutate după TIN, iar potrivirile de nomenclatură sunt căutate mai întâi după numărul articolului, apoi după nume. Dacă elementul care corespunde datelor fișierului nu se află în IB, atunci acesta poate fi creat automat folosind datele fișierului făcând clic pe butonul „Creare folosind date din fișier”.
  • Când adăugați articole, trebuie să verificați proprietatea „Service” (vezi Figura 3). De asemenea, puteți modifica numele complet și scurt ale unui articol din nomenclatură.
  • În fila „Conturi”, este recomandabil să adăugați conturi de contabilitate a articolelor, astfel încât la crearea documentului „Primire de bunuri și servicii”, aceste numere să fie introduse automat. De exemplu, pentru servicii pot fi setate următoarele valori: „Cont contabil” – 25 (Cheltuieli totale de producție) și „Contabilitatea TVA transmisă” – 19,04 (TVA la serviciile achiziționate) (vezi Figura 4).
  • După compararea tuturor elementelor și apăsarea butonului „OK”, programul va cere confirmarea încărcării documentului în sistemul de securitate a informațiilor, după care va crea un nou document „Recepția bunurilor și serviciilor” (vezi Figura 5).

3. Afișarea documentului „Recepție bunuri și servicii”

Pentru a posta documentul „Primire de bunuri și servicii”, trebuie să îl deschideți făcând dublu clic și completați câmpurile care lipsesc, cum ar fi „Compensare în avans” (de exemplu, „Automat”) și câmpurile din „Conturi de decontare”. ” (vezi Figura 6). Valorile acestor câmpuri sunt determinate de politicile contabile ale organizației dumneavoastră. Pentru a posta documentul, faceți clic pe butonul „OK”.

4. Formarea documentului „Factură”.

După crearea și postarea cu succes a documentului „Primire de bunuri și servicii”, îl puteți utiliza pentru a crea documentul „Factură primită”. Pentru a face acest lucru, faceți clic pe linkul corespunzător din partea stângă jos a formularului de document.

Într-o organizație, contabilitatea poate fi menținută nu doar în soluții pe platforma 1C:Enterprise, ci și în alte sisteme software (Galaktika, Parus, SAP etc.). Acest lucru ridică provocarea integrării a două aplicații.

De exemplu, o anumită aplicație (să-i spunem „X”) trebuie să citească o listă de documente de configurare. Nu vom vorbi despre beneficiile practice ale rezolvării unei astfel de probleme Voi observa doar că cel mai convenabil și universal mod într-o astfel de situație ar fi încărcarea unei liste de documente în format XML.

Schimbul folosind acest format este universal, deoarece majoritatea aplicațiilor pot funcționa cu el. Să vedem cum puteți încărca o listă de documente de configurare într-un fișier XML din 1C:Enterprise.

Încărcați în XML

Și așa, să trecem la lucrul principal. Trebuie să parcurgem lista de metadate ale documentului și să generăm lista în fișierul XML. Următoarea captură de ecran arată algoritmul pentru generarea unui fișier XML:

Funcția CreateXML() Export // Obține numele fișierului temporar Cale = GetTemporaryFileName() ; // Inițializați clasa „XML Record”. Entry = New EntryXML; // Deschide un fișier temporar pentru scriere- 8 " ) ; // Scrieți declarația fișierului XML Record. WriteDeclarationXML() ; // Record. WriteElementStart(" Configurații documente" ) ; // Primul element // Atributul primului element cu data la care a fost creat fișierul Record. WriteAttribute("generat", Format(CurrentDate(), "DF = aaaa-LL- ddThh:mm:ss; DLF= DT" ) ) ; // Scrieți un element pentru fiecare document de configurare. Am pus numele documentului în text. Pentru fiecare document din metadate. Înregistrarea ciclului documentelor. WriteElementStart("Document"); Record. ScrieText(NumeDoc.) ; Record. WriteEndElement() ; EndCycle ; // Terminați de scris primul element Record. WriteEndElement() ; Record. Închide(); // Închideți fișierul // Obțineți datele binare ale fișierului și puneți-le în stocare temporară BinaryData = nou BinaryData(Cale) ; Adresă = PlaceInTemporaryStorage(BinaryData, New UniqueIdentifier) ​​​​; Adresa expeditorului; // Returnează adresa fișierului în stocare EndFunction

Fiecare element creat trebuie completat corect. După executarea „WriteStartofElement()”, trebuie executată metoda „WriteEndElement()”, altfel structura fișierului XML va fi incorectă.

Șablonul general pentru crearea fișierelor XML este următoarea secvență:

// 1. Inițializați clasa „XML Record”. Entry = New EntryXML; // 2. Deschideți un fișier temporar pentru înregistrare Record. OpenFile(Cale, " UTF - 8 " ) ; // 3. Scrieți declarația fișierului XML Record. WriteDeclarationXML() ; // // 4. ++ Scrieți conținutul fișierului XML Record. WriteElementStart("XMLElement"); Record. WriteEndElement() ; // -- Scrieți conținutul fișierului XML // 5. Închideți fișierul Record. Închide();

Acești cinci pași creează aproape orice fișier XML.

În exemplul nostru, fișierul generat este convertit în date binare și returnat la locația în care este apelată funcția CreateXML. Acest fișier poate fi apoi scris în sistemul de fișiere.

Puteți vedea un exemplu de fișier încărcat în captura de ecran de mai sus.

Aplicație terță parte

De exemplu, am creat o aplicație în .NET Framework pentru a demonstra citirea unui fișier XML într-o aplicație terță parte.

Programul citește fișierul creat și afișează documentele sub forma unei liste:

Puteți încerca singur, aplicația este disponibilă pentru descărcare folosind link-ul de la sfârșitul articolului.

Versatilitate

Formatul XML este utilizat în majoritatea configurațiilor pentru schimbul de date între soluțiile de aplicație de pe platforma 1C:Enterprise. O altă metodă de comunicare frecvent utilizată este prin intermediul unei conexiuni COM. XML vă permite să faceți schimb cu aproape orice aplicație, motiv pentru care merită să fie numit universal.

Fișiere pentru descărcare:

Aplicație de citire a fișierelor XML.

Procesarea generării fișierului XML.

Lucrul cu documente XML este disponibil direct din limbajul încorporat al sistemului 1C:Enterprise 8.

Există o posibilitate:

  • citiți și scrieți secvențial documente xml:
    • conversia dintr-un șir obținut din textul unui element sau o valoare de atribut XML într-o valoare conform tipului specificat;
    • obține o reprezentare șir a valorii de pus în textul unui element sau valoarea unui atribut XML;
    • obțineți tipul de date XML corespunzător tipului trecut ca parametru;
    • verificați dacă o valoare de tipul specificat poate fi citită din XML;
    • verificați conformitatea cu schema XML atunci când citiți XML
    • înregistrați valoarea în format XML;
    • returnează un tip care se potrivește cu tipul de date XML.
  • utilizați un model de acces la obiect pentru datele documentului xml (DocumentDOM), care respectă următoarele standarde:
    • DOM Nivelul 2;
    • XPath (DOM Nivelul 3);
    • Încărcați și salvați DOM (DOM Nivelul 3).
  • utilizați modelul obiect XML Schema (XML Schema);
  • utilizați standardul Canonical XML 1.1.

Folosind o conexiune externă și mecanisme de lucru cu XML, puteți organiza integrarea cu sistemele de aplicații folosind formatele acceptate în aceste sisteme. Pentru aceasta sunt folosite mecanisme de transformare XSL. De exemplu, pentru o astfel de integrare puteți utiliza serverul Microsoft BizTalk:

Informații rapide

Platforma oferă instrumente pentru lucrul cu documente XML în format binar Fast Infoset. Tehnologia Fast Infoset folosește o sintaxă alternativă pentru afișarea datelor XML. Acest lucru oferă fișiere de dimensiuni mai mici și viteze de procesare mai rapide decât datele scrise în format XML convențional. Un fișier scris în formatul Fast Infoset are extensia .fi sau .finf.

Moduri de operare

Procesarea UploadLoadDataXML82 implementează 2 moduri de operare: Upload (crearea unui fișier de încărcare cu date specificate de utilizator) și Load (citirea unui fișier de încărcare creat de modul cu același nume și scrierea datelor conținute în acesta). Modul este setat selectându-l în câmpul Mod.

Înainte de a începe un anumit mod (făcând clic pe butonul Run), trebuie să specificați numele fișierului de încărcare, fie introducându-l manual în câmpul „Nume fișier”, fie folosind butonul pentru a selecta acest câmp și dialogul standard de selecție a fișierului .

În modul de descărcare, este posibil să editați utilizarea totalurilor la scrierea registrelor, ceea ce poate afecta viteza de descărcare. Butoanele „Dezactivați totalurile” și „Activați totalurile” sunt disponibile când este setat indicatorul „Activați capacitatea de a edita utilizarea totalurilor în timpul încărcării datelor” și sunt utilizate pentru a controla manual modul de utilizare a totalurilor la încărcarea datelor. ** Condiții de aplicabilitate a prelucrării**

Prelucrarea poate fi utilizată numai în cazurile în care baza de informații în care au fost încărcate datele și cea în care au fost încărcate datele sunt omogene (configurațiile sunt identice, datele pot diferi), sau toate obiectele încărcate sunt aproape complet identice în compoziția și tipurile de detalii și părți tabulare, proprietățile obiectului de metadate „conducător” etc. Trebuie remarcat faptul că, datorită acestor limitări, prelucrarea este destinată în principal schimbului între IS omogene.

Formatul fișierului de încărcare diferă de formatul de fișier creat la încărcare conform unui plan de schimb din partea antet. Pentru a încărca date (elemente de director, seturi de înregistrări de registru etc.), procesarea utilizează același mecanism de serializare XML ca și încărcarea conform planurilor de schimb în această parte, formatele de fișiere sunt identice;

Determinarea compozitiei descarcarii

Procesarea permite încărcarea completă și parțială a datelor bazei de informații într-un fișier. Compoziția datelor încărcate este configurată în dialog prin bifarea casetelor din coloana arborelui care afișează obiectele metadate pentru care se pot încărca date. O coloană suplimentară de casete de selectare, „Dacă este necesar”, stabilește necesitatea de a descărca obiecte de acest tip „prin referință”. Adică, dacă caseta de selectare este bifată doar în coloana „Dacă este necesar”, atunci datele pentru un astfel de obiect nu vor fi descărcate complet, ci doar în măsura în care este necesar pentru a menține integritatea referențială în baza de informații care va încărca descărcarea. fişier.

La deschiderea unui formular, procesarea stabilește semnul descărcarii prin referire la toate obiectele, ceea ce garantează integritatea referențială a fragmentului descărcat al bazei de informații.

Când faceți clic pe butonul „Detectați obiecte descărcate prin link”, procesarea analizează ce legături de date pot fi conținute în obiectele care au setat steag-ul complet de descărcare și completează automat coloana de steaguri indicând necesitatea descărcarii prin link. Dacă obiectul are deja setat indicatorul de descărcare completă, atunci indicatorul de descărcare prin referință nu este setat.

Aplicații posibile

Utilizarea acestei prelucrări este posibilă, de exemplu, pentru a crea o copie de rezervă completă sau parțială a datelor, pentru a face schimb de date între bazele de informații și, de asemenea, ca instrument auxiliar la restaurarea bazelor de informații problematice.

- pagini web binecunoscute, care sunt, de asemenea, un analog al XML-ului cu verificări slabe.

Obiectele de citire/scriere XML, FastInfoset și HTML extind capacitățile de citire a fișierelor text cu procesarea încorporată a etichetelor de marcare.

Ele sunt, de asemenea, utilizate pentru obiectele DOMBuilder/DOMRecord (vezi mai jos) ca surse de date.

Fișierele XML 1C conțin informații text, adică sunt fișiere text. Obiectele 1C XML Reader și 1C Write XML sunt un „supliment” care facilitează lucrul cu etichete XML într-un fișier 1C.

Obiectele ReadingFastInfoset 1C și WritingFastInfoset 1C, ReadingHTML 1C și WritingHTML 1C sunt complet similare cu ReadingXML 1C și WritingXML 1C și servesc pentru a funcționa în același mod cu alte formate.

Fișier XML 1C folosit în exemple

Director>

Director>

Text valueProps>
Director>
Configurare>

Exemplul 1. Citirea unui fișier XML 1C într-un arbore de valori folosind Reading XML 1C

//deschideți fișierul XML 1C pentru citire folosind ReadingXML 1C
Fișier = New ReadXML();
File.OpenFile("D:\ConfigurationStructure.xml");

//pregătește arborele de valori
//fiecare ramură XML poate avea un nume, atribute și valoare
dzXML = NewValueTree();
dXML.Columns.Add(„Nume”);
dzXML.Columns.Add(„Valoare”);
dzXML.Columns.Add(„Atribute”);

//deoarece un șir XML poate avea mai multe atribute, le vom scrie în tabelul cu valori
//fiecare atribut are un nume și o valoare
tAttribute = New ValueTable();
tAttributes.Columns.Add(„Nume”);
tAttribute.Columns.Add(„Valoare”);

//nivelul de imbricare ne va ajuta să înțelegem când trebuie să adăugăm o ramură imbricată și când trebuie să urcăm un nivel
Nesting Level = 0;
//linia curentă este o linie arborescentă, se va schimba pe măsură ce cuibărirea crește
CurrentRow = Nedefinit;
//citirea fișierului XML 1C nu se face linie cu linie, ci conform structurii când fișierul se termină, citirea va returna FALSE;
While File.Read() Loop

//ne interesează trei tipuri de noduri - începutul elementului, textul (valoarea elementului) și sfârșitul elementului (pentru a reveni la nivelul superior)
Dacă File.NodeType = XMLNodeType.ElementStart Atunci

Nivel de cuib = Nivel de cuib + 1;

//dacă aceasta este prima linie, apoi adăugați-o chiar în vârful arborelui și salvați doar numele
Dacă CurrentRow = Nedefinit, atunci
CurrentRow = dXML.Rows.Add();
CurrentLine.Name = File.Name;
Continua;
In caz contrar
//linii imbricate
CurrentRow = CurrentRow.Rows.Add();
CurrentLine.Name = File.Name; //salvează numele

//are acest element XML atribute?
Dacă File.NumberAttributes() > 0 Atunci
//dacă da, copiați tabelul gol pregătit pentru a salva atributele
tAttributesNode = tAttributes.Copy();
// parcurge numărul de atribute ale acestui element
Pentru cont = 0 după fișier.Număr de atribute()-1 Ciclu
//pentru fiecare atribut, amintiți-vă numele și valoarea
String = tNodeAttributes.Add();
Line.Name = File.AttributeName(Sch);
Row.Value = File.AttributeValue(Ac);
EndCycle;
//salvează tabelul de atribute al elementului pe linia curentă
CurrentRow.Attributes = tNodeAttributes;
endIf;
endIf;

ElseIf File.NodeType = XMLNodeType.EndElement Apoi
//la începutul elementului creștem nivelul de imbricare, la sfârșitul elementului îl micșorăm
Nesting Level = Nesting Level - 1;
//readuce linia curentă cu un nivel în sus
CurrentRow = CurrentRow.Parent;

ElseIf File.NodeType = XMLNodeType.Text Atunci
//dacă elementul are o valoare, salvați-o
CurrentRow.Value = File.Value;

endIf;

EndCycle;

File.Close();

Exemplul 2. Înregistrarea unui fișier XML 1C utilizând obiectul 1C Record XML

//creați un fișier Record XML 1C
Fișier = NewXMLRecord();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("Configurare");

//utilizați metadate pentru a parcurge toate directoarele (pentru mai multe detalii, consultați „Lucrul cu metadate”)
Pentru fiecare Director din Metadate.Ciclul Directoarelor

//WriteStartofElement - deschide o nouă ramură [subordonată].
File.WriteElementStart("Director");
//WriteAttribute - scrie un atribut într-o ramură deschisă anterior
File.WriteAttribute("Nume", Director.Nume);
File.WriteAttribute("Synonym", Directory.Synonym);

//folosind metadate, parcurgem toate detaliile directorului
Pentru fiecare Props din Directory.Props Cycle




EndCycle;

//folosește metadate pentru a parcurge toate părțile tabulare ale directorului
Pentru fiecare PM din Directorul Părți tabelare ale ciclului
File.WriteElementStart("TabularPart");
File.WriteAttribute("Nume", PM.Nume);
File.WriteAttribute("Synonym", PM.Synonym);

Pentru fiecare Props din PM.Props Cycle
File.WriteElementStart("Recuzită");
File.WriteAttribute("Nume", Atribut.Nume);
File.WriteAttribute("Sinonim", Atribute.Synonym);
File.WriteEndElement();
EndCycle;

File.WriteEndElement();
EndCycle;

//WriteEndElement - „închide” ramura deschisă anterior folosind WriteBeginElement
File.WriteEndElement();
EndCycle;

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