Come configurare smartphone e PC. Portale informativo
  • Casa
  • Ferro
  • Oggetto DataSet digitato. Lettura e scrittura di documenti XML

Oggetto DataSet digitato. Lettura e scrittura di documenti XML

Piattaforme: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Configurazioni: Tutte le configurazioni

2012-11-25
34938

XDTO è un meccanismo necessario durante la creazione e l'esecuzione di servizi Web. I pacchetti XDTO vengono utilizzati per descrivere la struttura del file XML richiesto per modificare i dati da e verso XML.

XML è un modo per descrivere una struttura dati complessa in un normale file di testo. Descrive non solo i dati stessi, ma anche i campi in cui sono archiviati.
Ecco un esempio di file XML di base:

XML per i manichini

I nomi (tag) utilizzati in questo file - root, list, name, el - possono essere completamente arbitrari. Le regole base per creare un file XML sono immediatamente visibili dalla sua struttura:
- È possibile nidificare gli elementi;

Inizio dell'elemento<Имя>, la desinenza è lo stesso nome, ma con l'aggiunta del carattere "/".

All'interno dell'elemento si possono trovare:
- Elementi nidificati;
- Testo.

Ogni elemento può avere proprietà (attributi), il loro valore e il nome sono indicati. È vietato utilizzare qualsiasi carattere in XML, perché molti di essi vengono utilizzati direttamente per XML, ad esempio "<» и «>" Il metodo di descrizione XML è molto comodo da utilizzare durante lo scambio con altri programmi di terze parti e viene utilizzato nel meccanismo di scambio dati 1C.

Spazio dei nomi

Un file XML inizia con un'intestazione che descrive la versione XML, la codifica, ecc... L'intestazione in XML non è del tutto necessaria e molto spesso semplicemente non viene utilizzata. L'intestazione può anche definire uno spazio dei nomi.

I file XML vengono trasmessi su Internet e letti da molti programmi diversi. Vengono percepiti - ciò significa che esiste una protezione nel loro codice - se ti imbatti in un determinato nome di elemento in un file XML, devi percepirlo in questo modo e fare esattamente questo. Pertanto, quando utilizziamo il tag IBM, c'è una probabilità abbastanza alta che un altro programma pensi che questo sia IBM, a lui noto, mentre con questo intendevamo qualcosa di nostro.

Per evitare ciò e per indicare chiaramente la differenza tra il nostro IBM e tutti gli altri, è possibile specificare il nome dello spazio dei nomi nel file, un prefisso utilizzato prima del nome degli elementi.

È possibile definire uno spazio dei nomi come segue: xmlns:Prefix (NameSpace) = “URL”, esempio:
xmlns:store = "http://site.ru"

Perché è necessario un URL? Coloro che ci hanno già pensato e guardano oltre - ovviamente, anche lo spazio dei nomi che abbiamo inventato potrebbe non essere unico, ad es. anche chiunque altro può usarlo. Questo è il motivo per cui viene specificato un identificatore univoco speciale, che identifica anche l'esecutore dello spazio dei nomi.

Naturalmente si presuppone che la persona che ha specificato lo spazio dei nomi sia del tutto onesta. Punta al proprio sito e non utilizza più spazi dei nomi diversi con lo stesso sito. Di norma, specifichi sia l'URL del sito che l'URL di una cartella specifica sul sito, in modo che sia possibile creare un altro spazio dei nomi in qualsiasi cartella di questo sito, per il suo utilizzo in qualsiasi situazione.

DOM

Un oggetto è una struttura dati specifica che è autonoma e contiene tutti i suoi dati.

Dato che il file XML descrive dati strutturati, cioè dati sotto forma di una struttura che ha le proprie proprietà e così via, di conseguenza puoi vederli come oggetti. L'esempio sopra potrebbe utilizzare un oggetto LIST con proprietà e un elemento nidificato.

DOM è un modo di trattare un file XML non come testo in un formato specifico, ma come un insieme di oggetti con campi, proprietà e altro.

Gli svantaggi di questo metodo di lavoro includono requisiti elevati per le prestazioni del PC, perché Il DOM elabora (forma una struttura sotto forma di oggetti) l'intero file XML in una sola volta, indipendentemente dalle sue dimensioni, e semplicemente non può "digerire" file di grandi dimensioni (più di 4 GB).

Per analizzare file di grandi dimensioni, viene utilizzato SAX; questo metodo di analisi di un file si basa sulla lettura sequenziale del file e non sulla costruzione della sua intera struttura in una sola volta .

Descrizione del file XML

Se utilizziamo costantemente un file con una struttura particolare per comunicare tra 2 programmi, probabilmente vorremmo quanto segue:

In modo che vengano utilizzati nomi specifici;
- Che vengano utilizzati solo quegli elementi che ci aspettiamo (che “devono esistere per essere utilizzati nello scambio”);
- In modo che gli attributi indichino solo i tipi che ci aspettiamo (numero, stringa, ecc.).

Per la descrizione delle strutture XML sono disponibili i seguenti formati di file (memorizzati anche in un file di testo semplice):

L'estensione DTD è Document Type Definition;
- L'estensione XSD è XML Shema.

Questi formati descrivono come dovrebbe essere un documento. La procedura per verificare la conformità di XML, descritta in tale file standard, si chiama verifica.

XDTO

XDTO è un oggetto 1C che consente di aggiungere una descrizione di un file XML alla configurazione. Più precisamente, non viene descritto il file stesso, ma determinate strutture XML.

Per indicare i tipi utilizzabili viene utilizzata una lista, una libreria di tipi, chiamata factory XDTO. Questa factory specifica non solo i tipi semplici (data, stringa, numero) utilizzati in altri programmi, linguaggi, ecc., ma anche i tipi 1C utilizzati in 1C e in una configurazione specifica.

XDTO Factory include diversi pacchetti. I tipi iniziali sono descritti in un pacchetto chiamato www.w3.org I tipi di dati nella configurazione sono descritti nel pacchetto http://v8.1c.ru/8.1/data/enterprise/current-config

Questi tipi sono denominati in base ai nomi nel configuratore con l'aggiunta della forma inglese (CatalogRef, DocumentObject, CatalogObject, DocumentRef), ad esempio:

CatalogObject.Accounts

Aggiunta di un pacchetto XDTO

Siamo arrivati ​​all'argomento XSLT, un modo per trasformare i file XML in qualcos'altro, come i file HTML. L'argomento XML è estremamente vasto e su di esso è stato scritto più di un libro.

Il nostro compito è capire che XDTO ci consente di descrivere gli elementi che devono essere presenti nel pacchetto XML che deve essere letto o generato. I pacchetti XDTO si trovano nella configurazione 1C e nel ramo Generale - Pacchetti XDTO.

È possibile aggiungere manualmente un pacchetto XDTO a 1C, ma è meglio ottenere il file XSD corrispondente con una descrizione dettagliata dello schema già pronta. Una descrizione dello schema degli oggetti XSD di qualsiasi configurazione può essere ottenuta facendo clic sul ramo Generale - Pacchetti XDTO e selezionando la voce "Esporta schema dati di configurazione XML" nel menu.

Puoi modificare questo file di testo nel Blocco note di Windows, rimuovendo gli oggetti non necessari (non necessari per te). È possibile aggiungere uno schema XSD già pronto a 1C facendo clic con il pulsante destro del mouse sul ramo Generale - Pacchetti XDTO e selezionando "Importa schema XML" dal menu.

Lavorare con XDTO in 1C significa convertire valori da XML a XML. Questo viene fatto utilizzando oggetti del linguaggio 1C Leggi XML/XMLWrite.

Quando lavori con XDTO, devi specificare il pacchetto con cui stai lavorando direttamente. Può essere un pacchetto standard (vedi la discussione sopra, XDTO) o un pacchetto aggiunto alla configurazione.

Il pacchetto è identificato dall'URL specificato nel pacchetto. Esistono due modalità principali di lavoro:

Serializzazione: modifica automatica dei valori da XML a 1C e viceversa;

Compilare i campi di un oggetto, crearlo e scriverlo in XML (così come leggere da XML e successivamente leggere i suoi campi).

Immaginiamo un esempio di serializzazione del valore:

Serializzatore = Nuovo serializzatore XDTO (XDTO Factory);
File XML = Nuovo record XML();
XMLFile.OpenFile("NomeFile");
Serializer.WriteXML(XMLFile, valore 1C);

La funzione inversa è il serializzatore. XMLReading (), utilizzato da oggetti 1C del linguaggio di lettura XML.
Esempio di scrittura/lettura di un oggetto:

Directory XDTOObject = FactoryXDTO.Create(XDTOFactory. Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Counterparties"));
CompilaPropertyValues(DirectoryXDTOObject, Directory.Counterparties.FindByProperties("Nome", "Ivanov").Link);

Quindi puoi scrivere l'oggetto creato in XML esattamente allo stesso modo della serializzazione. Quando si legge XML nello stesso modo discusso in precedenza, potrebbe non essere un valore XDTO quello che viene restituito, ma proprio un oggetto di questo tipo.

Quando si crea un oggetto XDTO, viene creata una struttura simile alla struttura di un oggetto di configurazione (a meno che, ovviamente, non si crei un oggetto di configurazione dal pacchetto specificato nell'esempio precedente). I campi tipici (nome, codice, ecc.) sono in inglese e l'oggetto viene creato vuoto, quindi deve essere compilato, ogni campo separatamente o utilizzando la funzione FillPropertyValues

Un errore che indica che il file non è conforme allo schema XSD è comune quando il sistema non può leggere i dati dal report. In generale, le persone spesso commettono tali errori ed è abbastanza facile affrontarli.

Innanzitutto, devi capire cosa significa uno schema XSD per capire esattamente a cosa non è conforme il tuo file.

Quindi XSD lo è linguaggio di programmazione, descrive la struttura del report. La struttura include, ad esempio, parametri del contenuto del report, tipo, aspetto, nonché sintassi dei dati, sezioni che contengono informazioni.

Si scopre che lo schema XSD lo è descrizione della struttura del report, eseguito in uno dei linguaggi di programmazione. Se nel report vengono inserite informazioni errate, queste saranno semplicemente illeggibili per lo schema, motivo per cui il sistema genera un errore indicante che il file non corrisponde allo schema XSD.

Ciò significa che le informazioni inserite non possono essere lette nel linguaggio di programmazione, quindi il programma le riconosce come errate.

Vale la pena notare che questo problema può sorgere a causa di dati inseriti in modo errato(ad esempio, hai commesso un errore inserendo il TIN dell'organizzazione), sia a causa del formato errato di inserimento dei dati (ad esempio, hai indicato spazi o trattini aggiuntivi).

Tuttavia, questo non è l'unico motivo per cui il file non è conforme allo schema XSD. Questo errore può verificarsi anche perché sul tuo dispositivo è installata una versione obsoleta del programma in cui stai effettuando la segnalazione e anche se l'autorità fiscale stessa non ha installato un aggiornamento del programma.

Per risolvere l'errore nello schema XSD, dovrai farlo controlla che tutti i dati siano corretti, che hai inserito e controlla anche se è stato rilasciato un aggiornamento per il programma su cui stai lavorando. Tuttavia, prima di controllare il file, guarda attentamente il testo dell'errore che ti restituisce.

Il fatto è che in alcune situazioni, dopo il testo che indica che il file non corrisponde allo schema, ci sono due punti e quindi viene indicata la causa di questo problema. Se la causa dell'errore stesso non è indicata, aggiornare il programma all'ultima versione.

Una volta completato l'aggiornamento, prova a inviare nuovamente la segnalazione. Se dopo aver aggiornato nuovamente il file viene visualizzato un errore, è necessario farlo cerca lì il problema. Se lavori nel programma 1C, puoi controllare il file utilizzando un pulsante speciale chiamato "controlla su Internet".

Se i due punti precedenti non ti hanno aiutato ad individuare il problema, allora controlla se hai compilato tutti i campi obbligatori, se hai inserito correttamente tutti i dati, perché molti di essi devono essere compilati con numeri, in questo caso è molto facile fare un errore di battitura.

Inoltre, è necessario controllare tutti i campi per spazi aggiuntivi, trattini e altri caratteri. Se hai controllato l'intero file e non riesci a trovare un errore, o se sei riuscito a trovare un errore, ma non riesci a risolverlo, allora dovresti assolutamente contattare il supporto tecnico al programma con cui si effettua la segnalazione o ai suoi sviluppatori.

Per risolvere questo problema con l'aiuto degli sviluppatori del programma, dovrai inviare alcuni documenti, come il file stesso in cui si trova il rapporto, il protocollo di notifica che ti fornisce il computer.

Inoltre, gli sviluppatori potrebbero chiederti alcune informazioni sulla tua organizzazione, nonché altre informazioni che ritengono necessarie, altrimenti il ​​problema non verrà risolto;

Quindi, se stai tentando di inviare una segnalazione all'autorità fiscale, ma il file dà un errore dicendo che non è conforme allo schema XSD, significa che la tua segnalazione non può essere inviato, perché il programma non può leggere i dati inseriti.

Ma non dovresti farti prendere dal panico, perché nella maggior parte dei casi questo problema risolto in modo abbastanza semplice e rapidamente. Inoltre, se hai inviato il rapporto in tempo, ma non è stato accettato a causa del formato errato, allora l'ufficio delle imposte non ha diritto alla multa per non aver inviato la relazione in tempo. Innanzitutto prestare attenzione al testo dell'errore stesso, forse il motivo del suo verificarsi è già indicato lì.

In realtà le ragioni possono essere solo due. Oppure lo hai installato sul tuo dispositivo? vecchia versione del programma, con cui fai una segnalazione, in questo caso risolvere il problema è semplice, ti basta scaricare l'ultimo aggiornamento, solitamente lo trovi sul sito del programma che stai utilizzando. Il secondo motivo potrebbe essere che hai compilato alcuni dati in modo errato o non hai compilato alcun campo.

In questo caso, devi controllare il tuo file, ma devi ricordare che il programma potrebbe anche considerarlo un errore spazio aggiuntivo. Se non riesci a trovare la causa dell'errore, puoi contattare il supporto tecnico del programma, dove gli specialisti ti aiuteranno sicuramente a risolvere il tuo problema.

Il formato XML è molto utilizzato per lo scambio di diversi documenti di testo tra sistemi informativi. La capacità di creare una struttura unica per i documenti ne consente l'utilizzo in molte aree: biblioteche elettroniche, WEB, importazione/esportazione e molte altre. Senza la possibilità di lavorare comodamente con questo formato, i sistemi 1C non avrebbero guadagnato tale popolarità. Poiché 1C utilizza attivamente le tecnologie WEB, ogni sviluppatore deve essere in grado di leggere XML e scrivervi informazioni.

Rappresentazione e lettura di file XML

Uno dei principali vantaggi del linguaggio di markup XML è la sua struttura e sintassi abbastanza comode e intuitive. Durante la creazione, gli autori si sono posti l'obiettivo di creare un linguaggio di markup che fosse facile da leggere sia dagli esseri umani che dai computer. Oggi XML è stato ampiamente sviluppato in altri formati, ma rimane popolare e ampiamente utilizzato. La struttura del file XML è costruita secondo il seguente schema:

Per considerare un esempio di importazione dei dati in 1C, sarà sufficiente il file presentato sopra. Affinché la procedura scritta possa leggere il file XML è sufficiente passare al suo interno il percorso del file stesso. Ciò può essere fatto tramite l'interfaccia, consentendo agli utenti di specificare il file da soli, o mediante l'elaborazione hardcoded nel testo.

Uno dei modi più diffusi per lavorare con XML di dimensioni fino a 100 MB in 1C è utilizzare il Document Object Model (DOM). Il suo significato è elaborare in sequenza tutti i nodi del documento rappresentati in XML. Nel linguaggio 1C integrato, questo algoritmo si presenta così:

  1. Dichiarazione dei meccanismi con cui viene letto il file XML; Ciclo per attraversare i nodi;
  2. Lettura di dati e attributi in un nodo;
  3. Produzione di informazioni. Se necessario, in questa fase la scrittura può avvenire in variabili o direttamente nelle tabelle necessarie;
  4. Completamento del meccanismo.
Procedura &OnServer ReadOnServer(PathToFile) //dichiarazione dei meccanismi Meccanismo di lettura = Nuovo ReadingXML;

Reader.OpenFile(PercorsoFile);

Costruttore = Nuovo CostruttoreDOM;

  1. Documento = Builder.Read(Lettore);
  2. Creiamo elementi head e scriviamo dati su di essi. Se desideri caricare una grande quantità di informazioni in un file XML, in questa fase utilizzerai i loop. Fai attenzione e ricorda che la richiesta dei dati deve essere effettuata prima del loop e non all'interno di esso;
  3. Chiudi il file.
//apri il file Nomenclatura.xml e scrivi l'elemento head RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem("Prodotti"); //seleziona i dati per il record SelectionFromDirectory = Directories.Nomenclature.Select(); //ciclo in cui avviene la registrazione Ciclo While SelectingFromDirectory.Next() //scrittura di nuovi dati RecordToFile.RecordBeginningElement("Product");

RecordInFile.RecordAttribute("Nome", SelectionFromDirectory.Nome);

WriteToFile.WriteAttribute("InitialPrice", Line(SelectionFromDirectory.InitialPrice));

WriteToFile.WriteEndElement(); FineCiclo; //Chiude l'elemento head e il file WriteVFile.WriteEndElement(); WriteInFile.Close();

Meccanismo XDTO in 1C


Un algoritmo server simile al precedente ti aiuterà a salvare il nuovo XML sul tuo disco rigido. L'unica differenza è la necessità di aggiungere dati per 1 prodotto alla fabbrica XDTO, un meccanismo speciale della piattaforma 8.3 1C. Se è necessario creare più livelli di nidificazione, dovrai descrivere ciascun elemento di testa.

//Apri il file XML RecordVFile = Nuovo RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //Indica a 1C quale tipo di dati deve essere creato - elemento head AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); //seleziona i dati per il caricamento SelectionFromDirectory = Directories.Nomenclature.Select(); //Aggiungi singoli prodotti all'elemento head While Select dal ciclo Directory.Next() Product = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Product"));

Product.Name = Seleziona da Directory.Name;

Prodotto.InitialPrice = String(SelectionFromDirectory.InitialPrice);

AllProducts.Add(Prodotto); FineCiclo; //scrive i dati e chiude il file FactoryXDTO.WriteXML(WriteToFile, AllProducts); WriteInFile.Close();

I meccanismi considerati sono abbastanza universali e, se opportunamente configurati, possono risolvere la maggior parte dei problemi. Tuttavia, ci sono molte sfumature nell'interazione tra 1C e XML. È molto più efficace studiarli in condizioni reali e non su attività di test in cui l'elaborazione di un file XML risolve problemi piuttosto ristretti.

Questo capitolo ti mostrerà come scrivere schemi XML. Imparerai anche che il diagramma può essere scritto in diversi modi.
Documento XML
Diamo un'occhiata a questo documento XML chiamato "shiporder.xml":

xmlns:xsi="http://www.w3.org/2001/XMLSchema-istanza"

xsi:noNamespaceSchemaLocation="shiporder.xsd">

Giovanni Smith
Olà Nordmann


Lunghezza 23
4000 Stavanger
1
10.90


Norvegia
1
9.90

Burlesque impero

Edizione speciale Nascondi il tuo cuore .

Creazione di uno schema XML

Ora vogliamo creare uno schema per il documento XML sopra.

Inizieremo aprendo un nuovo file, che chiameremo "shiporder.xsd". Per creare uno schema potremmo semplicemente seguire la struttura del documento XML e definire ogni elemento così come lo troviamo. Inizieremo con una dichiarazione XML standard seguita da un elemento xs:schema che definisce lo schema:



...

Nello schema sopra stiamo utilizzando spazi dei nomi standard (xs) e l'URI associato a questo spazio dei nomi è la definizione del linguaggio dello schema, che ha il valore standard http://www.w3.org/2001/XMLSchema.

Successivamente, dobbiamo definire un elemento "shiporder". Questo elemento ha un attributo e contiene altri elementi, quindi lo trattiamo come un tipo complesso. Gli elementi figli di un elemento "shiporder" sono circondati da un elemento xs:sequence che definisce una sequenza ordinata di sottoelementi:




...


Successivamente dobbiamo definire l'elemento "orderperson" come tipo semplice (poiché non contiene attributi o altri elementi). Il tipo (xs:string) è preceduto da un prefisso dello spazio dei nomi associato allo schema XML, che specifica un tipo di dati dello schema predefinito:










Con l'aiuto degli schemi possiamo determinare il numero di possibili occorrenze per un elemento con attributi MaxOccurs e MinOccurs. MaxOccurs specifica il numero massimo di occorrenze per un elemento e MinOccurs specifica il numero minimo di occorrenze per un elemento. Il valore predefinito sia per MaxOccurs che per MinOccurs è 1!

Ora possiamo definire l'elemento "item". Questo elemento può apparire più volte all'interno di un elemento "shiporder". Ciò viene determinato impostando l'attributo maxOccurs dell'elemento "item" su "unbounded" , il che significa che possono esserci tante occorrenze dell'elemento "item" quante desidera l'autore. Tieni presente che l'elemento "nota" è facoltativo. Lo abbiamo definito impostando l'attributo minOccurs su zero:










Ora possiamo dichiarare l'attributo "shiporder" dell'elemento. Poiché questo è un attributo obbligatorio, specifichiamo use="required".

Nota: le dichiarazioni degli attributi devono sempre venire per ultime:

Ecco un elenco completo del file di schema chiamato "shiporder.xsd":





























Circuiti separati

Il metodo di progettazione precedente è molto semplice, ma può essere difficile da leggere e gestire quando i documenti sono complessi.

Il successivo metodo di progettazione si basa sulla definizione di tutti gli elementi e gli attributi e quindi sul loro riferimento utilizzando l'attributo ref.

Ecco il nuovo design del file dello schema ("shiporder.xsd"):








































Utilizzo di tipi con nome

Il terzo metodo di progettazione definisce classi o tipi, consentendo il riutilizzo delle definizioni degli elementi. Questo viene fatto nominando gli elementi simpleTypes e complexTypes, e poi facendo riferimento ad essi attraverso l'attributo type dell'elemento.

Ecco il terzo disegno del file dello schema ("shiporder.xsd"):

































L'elemento vincolo indica che il tipo di dati è stato derivato dallo spazio dei nomi del tipo di dati dello schema XML W3C. Quindi il seguente snippet significa che il valore dell'elemento o dell'attributo deve essere il valore di una stringa:

L'elemento vincolo viene utilizzato più spesso per applicare restrizioni agli elementi. Osserva le seguenti righe del diagramma precedente:





Ciò specifica che il valore dell'elemento o dell'attributo deve essere una stringa, deve contenere esattamente sei caratteri per riga e tali caratteri devono essere un numero compreso tra 0 e 9.

È apparso il compito di creare un file XML basato su uno schema XSD. La ricerca nei forum ha portato a un gran numero di discussioni relative a un malinteso del processo e solo a un paio di articoli che ne spiegano l'essenza. Le persone facevano domande, lottavano con la soluzione, ma dopo che il problema cedeva, semplicemente sparivano senza descrivere il meccanismo. Ciò ha portato alla creazione di una semplice descrizione del processo.
PS Non imprecare troppo, il mio obiettivo non era creare una sorta di articolo scientifico utilizzando rigorosamente la terminologia corretta, ma semplicemente aiutare a fare il primo passo verso la comprensione del potentissimo meccanismo di scambio tramite XML.
P.P.S. Devo subito prenotare che il file di upload allegato all'articolo è solo un template che crea solo una parte della struttura del file XML richiesto, perchè il mio lavoro con questo download è stato di natura piuttosto didattica (copiare il precedente documento di esportazione sul sito FCS e scaricare solo la parte tabellare dei Prodotti da un file Excel mi è sembrata una soluzione più efficace), e la mancanza di tempo non mi ha permesso mi ha portato a completare la creazione dell'intera struttura, basandomi solo su considerazioni di perfezionismo.

Pertanto, dopo essersi registrati sul sito Web FCS, è diventato chiaro che per creare documenti di reporting statistico sulle esportazioni, è necessario scaricare i dati dai documenti di gestione del commercio di beni e servizi e creare un file per il download.

Sono disponibili due opzioni di download.

Primo: caricare la parte tabellare con i Prodotti da un file Excel (è stata scelta questa opzione come opzione di lavoro, perché aveva il vantaggio che non c'era bisogno di preoccuparsi di elaborare l'“Intestazione” del documento, ma si poteva semplicemente copiare il precedente, modificandolo nella sezione “Intestazione” “quanto richiesto).

Secondo: creare un file XML secondo lo schema scaricato dal sito FCS sotto forma di "Album di formati per moduli di documenti elettronici". L'album contiene un numero abbastanza elevato di schemi XSD. Hanno trovato un diagramma del "Modulo statistico per la contabilità della circolazione delle merci" e file aggiuntivi con le descrizioni delle sue tipologie. Gli schemi sono allegati all'articolo nell'archivio con elaborazione.

Per visualizzare gli schemi XSD, abbiamo utilizzato il Microsoft XML Notepad 2007 gratuito.

L'immagine mostra il file principale con lo schema XSD "Modulo statistico per la contabilità della circolazione delle merci". L'immagine evidenzia i blocchi principali dello schema XSD che ci servono per capirlo.

Dal diagramma è chiaro che dobbiamo ottenere un file XML riempito con la struttura specificata nel ramo "xs:element" del tipo StaticFormType.

La struttura può essere piuttosto complessa (come nel nostro caso). Con descrizioni di tipo presenti direttamente nel ramo, inserite in un ramo separato o addirittura posizionate in un altro file.

Questa struttura ha un tipo StaticFormType, che a sua volta consiste in un tipo base BaseDocType, un insieme di oggetti di diversi tipi e attributi di testo.

Il tipo di base BaseDocStyle è definito in un file (e spazio dei nomi) diverso
.

Questo file contiene molti tipi che non vengono utilizzati nel nostro caso.

Ora passiamo a lavorare in 1C. In poche parole, ciò che dobbiamo fare si riduce a quanto segue:

1. XDTO Factory è in fase di creazione

OurFactoryXDTO = CreateFactoryXDTO(ArrayFullFileNamesWithXSDSchemas);

2. Nella factory XDTO vengono creati tutti i tipi di dati complessi, che poi compileremo nel file XML creato:

StaticFormType = MyFactoryXDTO.Type("urn:customs.ru:Information:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");

I tipi di dati inclusi in un certo tipo possono essere ottenuti dalla raccolta delle sue proprietà:

CUOrganizationType = StaticFormType.Properties.Get("Destinatario").Type; NameType = CUOrganizationType.Properties.Get("NomeOrganizzazione").Type; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Type; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Type;

3. Una volta creati tutti i tipi di dati complessi, creiamo una struttura di file XML basata su di essi, composta da oggetti XDTO Factory:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType);

// raccolta con documenti NewDocuments = MyFactoryXDTO.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "Lettera di vettura"); NewDocuments.PrDocumentNumber = MyFactoryXDTO.Create(PrDocumentNumberType, "numero 123"); NewDocuments.PrDocumentDate = MyFactoryXDTO.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(NewDocuments);

Allo stesso tempo, inserisci i dettagli elementari (tipi semplici).

4. Infine, scarichiamo tutto da XDTO Factory in un file:

File XML = Nuova voce XML(); FileXML.OpenFile(NomeFile); FileXML.WriteXMLDeclaration(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Chiudi();

PS L'archivio contiene un file modello di caricamento in XML (vengono creati solo alcuni dettagli, che riflettono tutti i casi in cui il file è compilato) e schemi XSD.

Decomprimere tutti i file in una determinata directory.

Verrà creato XML in esso.