Enkel opplasting for tredjepartsapplikasjoner. Prosessen med å laste opp data til xml. Genererer en XML-fil. Enkel opplasting for et tredjepartsprogram 1c 8 lese xml eksempel

Det vil spare tid på å legge inn informasjon om kjøp av Peterhost-tjenester i 1C.
For å gjøre dette, må du laste opp en XML-fil til 1C, og fra den genereres et dokument "Kvittering av varer og tjenester", som inneholder informasjon om de kjøpte tjenestene. En faktura kan genereres basert på dette dokumentet.

Detaljerte instruksjoner er gitt nedenfor.

1. Tilkobling av ekstern prosessering

1.1. Hvis du bruker informasjonsbasen 1C:Enterprise 8.X med "Enterprise Accounting 2.0"-konfigurasjonen, må du koble til ekstern behandling for å laste et dokument i CommerceML-format ()
Dette kan gjøres på to måter:
1. Lagre den eksterne behandlingsfilen lokalt på disken og åpne den via menyen "Fil" → "Åpne" før hver lasting av data i CML-format.
2. Koble behandling til informasjonsbasen (IS) permanent. Da vil den være tilgjengelig for alle (hvis du jobber over et nettverk) fra menyen "Verktøy" → "Ytterligere rapporter og behandling" → "Ytterligere ekstern behandling".

  • I menyen "Tjeneste" må du velge "Ytterligere rapporter og behandling" - "Ytterligere ekstern behandling".
  • Klikk på "Legg til"-knappen. Skjemaet for å legge til et nytt katalogelement åpnes:
  • I «Navn»-feltet angir du navnet på behandlingen, for eksempel «Laster data i CommerceML-format (RU-CENTER Group).»
  • Klikk på filvalg-knappen og spesifiser banen til nedlastingsbehandlingsfilen ().
  • Klikk på "OK"-knappen Nå er behandlingen koblet til infobasen og ligger i katalogen "Ytterligere ekstern behandling", og den kan åpnes ved å dobbeltklikke med musen.

1.2. Hvis du bruker konfigurasjonene "Manufacturing Enterprise Management" (versjon 10.3 og nyere) og "Trade Management" (versjon 1.3 og høyere), er denne behandlingen allerede aktivert, og du kan fortsette til trinn 2.

2. Dannelse av dokumentet "Mottak av varer og tjenester"

Som et resultat av trinnene nedenfor vil informasjon om tjenestene kjøpt fra Peterhost legges inn i 1C.
1. Deretter må du lagre en XML-fil med dataene i dokumentet "Mottak av varer og tjenester" for den nødvendige perioden på datamaskinen din. Filen i XML-format ligger i delen Personlig konto under lenken "XML for 1C".
Klikk på valgknappen til høyre for "Datafilnavn"-feltet og velg denne filen (se figur 1). Til spørsmålet "Lese data fra en fil?" svar "OK". Datafilen vil bli lest ved behandling.
2. Hvis behandlingen er i stand til å bestemme all samsvar mellom fildataelementene og infobasedataene, vil spørsmålet “Lagre dataene til infobasen?” bli stilt. Svarer du "Ja", opprettes et nytt dokument "Mottak av varer og tjenester". Gå til trinn 3.
3. Hvis ikke alle datatreff blir identifisert, vil meldingen vises: "Ved lasting av data kunne programmet ikke automatisk finne informasjonssikkerhetsobjekter som tilsvarer elementene som er overført i utvekslingsfilen..." og vil tilby å utføre sammenligning manuelt. I dette tilfellet må du gjøre følgende:

  • Klikk "OK". Et skjema for sammenligning av filobjekter og informasjonssikkerhet åpnes. Den har flere faner som tilsvarer ulike typer objekter (organisasjoner, entreprenører, gjenstander osv.). Hvis noen type data ikke har blitt matchet, vil det være røde utropstegn på de tilsvarende fanene (se figur 2).
  • Gå til de aktuelle bokmerkene og match elementene manuelt. Det bør tas i betraktning at treff av motparter og organisasjoner søkes etter TIN, og treff av nomenklatur søkes først etter artikkelnummer, deretter etter navn. Hvis elementet som tilsvarer fildataene ikke er i IB, kan det opprettes automatisk ved å bruke fildataene ved å klikke på knappen "Opprett med data fra fil".
  • Når du legger til elementer, må du sjekke egenskapen "Service" (se figur 3). Du kan også endre hele og korte navn på en vare i nomenklaturen.
  • På fanen "Kontoer" anbefales det å legge til vareregnskapskontoer slik at disse tallene legges inn automatisk når du oppretter dokumentet "Mottak av varer og tjenester". Følgende verdier kan for eksempel settes for tjenester: «Regnskapskonto» – 25 (Samlede produksjonskostnader) og «Regnskap for innsendt merverdiavgift» – 19.04 (MVA på kjøpte tjenester) (se figur 4).
  • Etter å ha sammenlignet alle elementene og klikket på "OK"-knappen, vil programmet be om bekreftelse for å laste opp dokumentet til informasjonssikkerhetssystemet, hvoretter det vil opprette et nytt dokument "Mottak av varer og tjenester" (se figur 5).

3. Poster dokumentet "Mottak av varer og tjenester"

For å legge inn dokumentet "Mottak av varer og tjenester" må du åpne det ved å dobbeltklikke og fylle ut de manglende feltene, for eksempel "Forskuddsmotregning" (for eksempel "Automatisk") og feltene på "Oppgjørskonti" ”-fanen (se figur 6). Verdiene til disse feltene bestemmes av organisasjonens regnskapsprinsipper. For å legge ut dokumentet, klikk på "OK"-knappen.

4. Dannelse av "Faktura"-dokumentet

Etter å ha opprettet og postet "Mottak av varer og tjenester"-dokumentet, kan du bruke det til å opprette "Faktura mottatt"-dokumentet. For å gjøre dette, klikk på den aktuelle lenken i nedre venstre del av dokumentskjemaet.

I en organisasjon kan regnskap opprettholdes ikke bare i løsninger på 1C:Enterprise-plattformen, men også i andre programvaresystemer (Galaktika, Parus, SAP, etc.). Dette reiser utfordringen med å integrere to applikasjoner.

For eksempel trenger en applikasjon (la oss kalle det "X") å lese en liste over konfigurasjonsdokumenter. Vi vil ikke snakke om de praktiske fordelene ved å løse et slikt problem; Jeg vil bare merke at den mest praktiske og universelle måten i en slik situasjon ville være å laste opp en liste over dokumenter i XML-format.

Utveksling med dette formatet er universelt fordi de fleste applikasjoner kan fungere med det. La oss se på hvordan du kan laste opp en liste over konfigurasjonsdokumenter til en XML-fil fra 1C:Enterprise.

Last opp til XML

Og så, la oss gå videre til det viktigste. Vi må krysse listen over dokumentmetadata og generere listen i XML-filen. Følgende skjermbilde viser algoritmen for å generere en XML-fil:

Funksjon CreateXML() Export // Få navnet på den midlertidige filen Path = GetTemporaryFileName() ; // Initialiser "XML Record"-klassen Entry = New EntryXML; // Åpne en midlertidig fil for skriving- 8 " ) ; // Skriv XML-filerklæringen Ta opp. WriteDeclarationXML() ; // Ta opp. WriteElementStart(" Dokumentkonfigurasjoner" ) ; // Første element // Attributt til det første elementet med datoen da filen ble opprettet Ta opp. WriteAttribute(" generert ", Format(CurrentDate(), " DF = åååå-MM- ddThh:mm:ss; DLF= DT" ) ) ; // Skriv et element for hvert konfigurasjonsdokument. Vi legger inn navnet på dokumentet i teksten. For hvert dokument fra metadata. Dokumenter syklusopptak. WriteElementStart("Dokument"); Ta opp. WriteText(Doc.Name) ; Ta opp. WriteEndElement() ; EndCycle ; // Skriv ferdig det første elementet Ta opp. WriteEndElement() ; Ta opp. Lukk(); // Lukk filen // Få filens binære data og legg den i midlertidig lagring BinaryData = new BinaryData(Path) ; Adresse = PlaceInTemporaryStorage(BinaryData, New UniqueIdentifier); Returadresse; // Returner adressen til filen til lagringen EndFunction

Hvert element som opprettes må fylles ut riktig. Etter å ha kjørt "WriteStartofElement()", må "WriteEndElement()"-metoden kjøres, ellers vil strukturen til XML-filen være feil.

Den generelle malen for å lage XML-filer er følgende sekvens:

// 1. Initialiser klassen "XML Record". Entry = New EntryXML; // 2. Åpne en midlertidig fil for opptak Ta opp. OpenFile(bane, " UTF - 8 " ) ; // 3. Skriv erklæringen til XML-filen Ta opp. WriteDeclarationXML() ; // // 4. ++ Skriv innholdet i XML-filen Ta opp. WriteElementStart("XMLElement"); Ta opp. WriteEndElement() ; // -- Skriv innholdet i XML-filen // 5. Lukk filen Ta opp. Lukk();

Disse fem trinnene lager nesten hvilken som helst XML-fil.

I vårt eksempel blir den genererte filen konvertert til binære data og returnert til stedet der CreateXML-funksjonen kalles. Denne filen kan deretter skrives til filsystemet.

Du kan se et eksempel på den opplastede filen i skjermbildet ovenfor.

Tredjepartsapplikasjon

Som et eksempel opprettet jeg en applikasjon i .NET Framework for å demonstrere lesing av en XML-fil i en tredjeparts applikasjon.

Programmet leser den opprettede filen og viser dokumentene i form av en liste:

Du kan prøve det selv, applikasjonen er tilgjengelig for nedlasting ved å bruke lenken på slutten av artikkelen.

Allsidighet

XML-formatet brukes i de fleste konfigurasjoner for datautveksling mellom applikasjonsløsninger på 1C:Enterprise-plattformen. En annen vanlig kommunikasjonsmetode er gjennom en COM-tilkobling. XML lar deg utveksle med nesten hvilken som helst applikasjon, og det er derfor den fortjener å bli kalt universell.

Filer for nedlasting:

XML-filleserapplikasjon.

Behandler genereringen av XML-filen.

Arbeid med XML-dokumenter er tilgjengelig direkte fra det innebygde språket i 1C:Enterprise 8-systemet.

Det er en mulighet:

  • sekvensielt lese og skrive xml-dokumenter:
    • konvertere fra en streng hentet fra teksten til et element eller en XML-attributtverdi til en verdi i henhold til den angitte typen;
    • få en strengrepresentasjon av verdien som skal legges inn i teksten til et element eller verdien til et XML-attributt;
    • få XML-datatypen som tilsvarer typen som sendes som en parameter;
    • sjekk om en verdi av den angitte typen kan leses fra XML;
    • se etter XML-skjemasamsvar når du leser XML
    • registrere verdien i XML-format;
    • returnere en type som samsvarer med XML-datatypen.
  • bruk en objekttilgangsmodell for xml-dokumentdata (DocumentDOM), som overholder følgende standarder:
    • DOM nivå 2;
    • XPath (DOM nivå 3);
    • DOM Last inn og lagre (DOM nivå 3).
  • bruk XML Schema-objektmodellen (XML Schema);
  • bruk Canonical XML 1.1-standarden.

Ved å bruke en ekstern tilkobling og mekanismer for å arbeide med XML, kan du organisere integrasjon med applikasjonssystemer ved å bruke formatene som er akseptert i disse systemene. XSL-transformasjonsmekanismer brukes til dette. For en slik integrasjon kan du for eksempel bruke Microsofts BizTalk-server:

Rask informasjon

Plattformen gir verktøy for å arbeide med XML-dokumenter i Fast Infoset binærformat. Fast Infoset-teknologi bruker en alternativ syntaks for å vise XML-data. Dette gir mindre filstørrelser og raskere behandlingshastigheter enn data skrevet i konvensjonelt XML-format. En fil skrevet i Fast Infoset-formatet har filtypen .fi eller .finf.

Driftsmoduser

Behandling av UploadLoadDataXML82 implementerer 2 driftsmoduser: Last opp (oppretter en opplastingsfil med brukerspesifiserte data) og Load (leser en opplastingsfil opprettet av modusen med samme navn og skriver dataene i den). Modusen stilles inn ved å velge den i Modus-feltet.

Før du starter en bestemt modus (klikker på Kjør-knappen), må du spesifisere navnet på opplastingsfilen, enten ved å skrive det inn manuelt i "Filnavn"-feltet, eller ved å bruke knappen for å velge dette feltet og standard filvalgsdialog. .

I nedlastingsmodus er det mulig å redigere bruken av totaler ved skriving av registre, noe som kan påvirke nedlastingshastigheten. Knappene "Deaktiver totaler" og "Aktiver totaler" er tilgjengelige når flagget "Aktiver muligheten til å redigere bruken av totaler mens du laster data" er satt og brukes til å manuelt kontrollere modusen for bruk av totaler ved lasting av data. ** Vilkår for bruk av behandling**

Behandling kan kun brukes i tilfeller der informasjonsbasen som dataene ble lastet opp i og den som dataene ble lastet inn i er homogene (konfigurasjonene er identiske, dataene kan variere), eller alle de opplastede objektene er nesten helt identiske i sammensetning og typer detaljer og tabelldeler, egenskaper til det "ledende" metadataobjektet, etc. Det skal bemerkes at på grunn av disse begrensningene er behandlingen hovedsakelig ment for utveksling mellom homogene IS.

Filformatet for opplasting avviker fra filformatet som er opprettet ved opplasting i henhold til en utvekslingsplan i header-delen. For å laste opp data (katalogelementer, sett med registerposter, etc.), bruker behandlingen den samme XML-serialiseringsmekanismen som opplasting i henhold til utvekslingsplaner; i denne delen er filformatene identiske.

Bestemme sammensetningen av lossingen

Behandling tillater både full og delvis opplasting av infobasedata til en fil. Sammensetningen av de opplastede dataene konfigureres i dialogboksen ved å merke av i boksene i kolonnen i treet som viser metadataobjekter som data kan lastes opp for. En ekstra kolonne med avmerkingsbokser, "Hvis nødvendig", angir behovet for å laste ut objekter av denne typen "ved referanse." Det vil si at hvis avmerkingsboksen bare er merket av i kolonnen "Hvis nødvendig", vil ikke dataene for et slikt objekt bli lastet ned fullstendig, men bare i den grad det er nødvendig for å opprettholde referanseintegriteten i infobasen som laster nedlastingen. fil.

Når du åpner et skjema, setter behandlingen tegnet på lossing ved referanse til alle objekter, noe som garanterer referanseintegriteten til det avlastede fragmentet av informasjonsbasen.

Når du klikker på "Oppdag objekter lastet ned via lenke"-knappen, analyserer behandlingen hvilke datalenker som kan være inneholdt i objekter som har hele nedlastingsflaggsettet, og fyller automatisk ut kolonnen med flagg som indikerer behovet for å laste ned via lenke. Hvis objektet allerede har satt full utlastingsflagg, er ikke flagget for lossing ved referanse satt.

Mulige bruksområder

Bruken av denne behandlingen er for eksempel mulig for å lage en hel eller delvis sikkerhetskopi av data, utveksle data mellom informasjonsbaser, og også som et hjelpeverktøy ved gjenoppretting av problematiske informasjonsbaser.

- kjente nettsider, som også er en analog av XML med svake kontroller.

XML Reader/Writer Objects, FastInfoset, HTML utvider tekstfillesefunksjonene med innebygd prosessering av markup-tagger.

De brukes også for DOMBuilder/DOMRecord-objekter (se nedenfor) som datakilder.

XML 1C-filer inneholder tekstinformasjon, det vil si at de er tekstfiler. 1C XML Reader og 1C Write XML-objekter er et "tillegg" som gjør det enklere å jobbe med XML-tagger i en 1C-fil.

Objektene ReadingFastInfoset 1C og WritingFastInfoset 1C, ReadingHTML 1C og WritingHTML 1C ligner fullstendig på ReadingXML 1C og WritingXML 1C og fungerer på samme måte med andre formater.

XML 1C-fil brukt i eksemplene

Katalog>

Katalog>

TekstverdiProps>
Katalog>
Konfigurasjon>

Eksempel 1. Lese en 1C XML-fil inn i et verditre ved å bruke Reading XML 1C

//åpne XML 1C-filen for lesing ved hjelp av ReadingXML 1C
Fil = Ny ReadXML();
File.OpenFile("D:\ConfigurationStructure.xml");

//forbered verditreet
//hver XML-gren kan ha et navn, attributter og verdi
dzXML = NewValueTree();
dzXML.Columns.Add("Navn");
dzXML.Columns.Add("Verdi");
dzXML.Columns.Add("Attributter");

//siden en XML-streng kan ha flere attributter, vil vi skrive dem i verditabellen
//hvert attributt har et navn og en verdi
tAttributes = New ValueTable();
tAttributes.Columns.Add("Navn");
tAttributes.Columns.Add("Verdi");

//hekkenivået vil hjelpe oss å forstå når vi trenger å legge til en nestet gren, og når vi må gå opp et nivå
Nestingsnivå = 0;
//nåværende linje er en tregrense, vil endre seg etter hvert som hekkingen øker
CurrentRow = Udefinert;
//lesing av XML 1C-filen gjøres ikke linje for linje, men i henhold til strukturen; når filen avsluttes, vil lesingen returnere FALSE
Mens File.Read() Loop

//vi er interessert i tre typer noder - begynnelsen av elementet, teksten (verdien av elementet) og slutten av elementet (for å gå tilbake til toppnivået)
Hvis File.NodeType = XMLNodeType.ElementStart deretter

Nesting Level = Nesting Level + 1;

//hvis dette er den første linjen, legg den til øverst i treet og lagre bare navnet
Hvis CurrentRow = Udefinert Da
CurrentRow = dXML.Rows.Add();
CurrentLine.Name = File.Name;
Fortsette;
Ellers
// nestede linjer
CurrentRow = CurrentRow.Rows.Add();
CurrentLine.Name = File.Name; //lagre navnet

//har dette XML-elementet attributter?
Hvis File.NumberAttributes() > 0 Da
//hvis ja, kopier den forberedte tomme tabellen for å lagre attributter
tAttributesNode = tAttributes.Copy();
//gå gjennom antallet attributter til dette elementet
For konto = 0 etter File.Number of Attributes()-1 Syklus
//husk navnet og verdien for hvert attributt
Rad = tNodeAttributes.Add();
Line.Name = File.AttributeName(Sch);
Row.Value = File.AttributeValue(Ac);
EndCycle;
//lagre elementets attributttabell til gjeldende linje
CurrentRow.Attributes = tNodeAttributes;
slutt om;
slutt om;

ElseIf File.NodeType = XMLNodeType.EndElement Deretter
//i begynnelsen av elementet øker vi hekkenivået, på slutten av elementet reduserer vi det
Nesting Level = Nesting Level - 1;
//retur gjeldende linje ett nivå opp
CurrentRow = CurrentRow.Prent;

ElseIf File.NodeType = XMLNodeType.Text Then
//hvis elementet har en verdi, bare lagre det
CurrentRow.Value = File.Value;

slutt om;

EndCycle;

File.Close();

Eksempel 2. Ta opp en 1C XML-fil ved å bruke 1C Record XML-objektet

//opprett en fil Record XML 1C
Fil = NewWriteXML();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("Konfigurasjon");

//bruk metadata for å gå gjennom alle kataloger (for mer informasjon, se "Arbeid med metadata")
For hver katalog fra Metadata.Directories Cycle

//WriteStartofElement - åpner en ny [underordnet] gren
File.WriteElementStart("Katalog");
//WriteAttribute - skriver et attributt til en tidligere åpnet gren
File.WriteAttribute("Navn", Directory.Name);
File.WriteAttribute("Synonym", Directory.Synonym);

//ved å bruke metadata går vi gjennom alle katalogdetaljene
For hver rekvisita fra Directory.Props-syklusen




EndCycle;

//bruk metadata for å krysse alle tabelldeler av katalogen
For hver PM fra katalogen Tabelldeler av syklusen
File.WriteElementStart("TabularPart");
File.WriteAttribute("Navn", PM.Navn);
File.WriteAttribute("Synonym", PM.Synonym);

For hver Props fra PM.Props Cycle
File.WriteElementStart("Props");
File.WriteAttribute("Navn", Attributter.Navn);
File.WriteAttribute("Synonym", Attributes.Synonym);
File.WriteEndElement();
EndCycle;

File.WriteEndElement();
EndCycle;

//WriteEndElement - "lukker" grenen som tidligere ble åpnet med WriteBeginElement
File.WriteEndElement();
EndCycle;

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