Quali sono i requisiti principali per le applicazioni aziendali? Tra i più importanti ci sono i seguenti compiti:
- Facilità di modifica/adattamento della logica di funzionamento dell'applicazione alle mutevoli esigenze aziendali.
- Facilità di integrazione con altre applicazioni.
Il modo in cui viene risolto il primo compito in 1C è stato brevemente descritto nella sezione «Personalizzazione e supporto» ; torneremo su questo interessante argomento in uno dei prossimi articoli. Oggi parleremo invece del secondo compito, l'integrazione.
Compiti di integrazione
I compiti di integrazione possono essere diversi. Per alcuni è sufficiente uno scambio di dati interattivo semplice – ad esempio, per inviare alla banca l'elenco dei dipendenti per l'emissione delle carte di pagamento per salari. Per compiti più complessi potrebbe essere necessario uno scambio di dati completamente automatizzato, possibilmente con riferimento alla logica aziendale di un sistema esterno. Ci sono compiti che hanno un carattere specializzato, come l'integrazione con attrezzature esterne (ad esempio, attrezzature di vendita, scanner mobili, ecc.) o con sistemi ereditati o altamente specializzati (ad esempio, con sistemi di riconoscimento di etichette RFID). È estremamente importante per ogni compito scegliere il meccanismo di integrazione più adatto.
Possibilità di integrazione con 1C
Esistono diversi approcci alla realizzazione dell'integrazione con le applicazioni 1C; quale scegliere dipende dai requisiti del compito.
- Implementazione basata su , forniti dalla piattaforma, da un proprio API specializzato lato applicazione 1C (ad esempio, un insieme di servizi Web o HTTP che richiamano applicazioni esterne per lo scambio di dati con l'applicazione 1C). Il vantaggio di questo approccio è la resistenza dell'API alle modifiche dell'implementazione lato applicazione 1C. La particolarità dell'approccio è che è necessario modificare il codice sorgente della soluzione standard di 1C, il che può richiedere sforzi potenziali nella fusione dei codici sorgente durante il passaggio a una nuova versione della configurazione. In questo caso, può risultare utile una nuova funzionalità progressiva — . Le estensioni sono, di fatto, un meccanismo di plugin che consente di creare aggiunte per soluzioni applicative senza modificare le stesse. Spostare l'API di integrazione nell'estensione di configurazione permetterà di evitare difficoltà durante la fusione delle configurazioni al passaggio a una nuova versione della soluzione standard.
- L'uso dei meccanismi di integrazione della piattaforma, che forniscono accesso dall'esterno al modello a oggetti dell'applicazione e non richiedono modifiche all'applicazione o creazione di un'estensione. Il vantaggio di questo approccio è che non è necessario modificare l'applicazione 1C. Lo svantaggio è che, se l'applicazione 1C è stata modificata, potrebbero essere necessari adattamenti nell'applicazione integrata. Un esempio di questo approccio è l'uso del protocollo OData per l'integrazione, implementato dalla piattaforma 1C:Enterprise (maggiore dettaglio a seguire).
- L'uso di protocolli applicativi predefiniti, implementati nelle soluzioni standard 1C. Molte soluzioni standard di 1C e dei partner realizzano i propri protocolli applicativi basati sui meccanismi di integrazione forniti dalla piattaforma, orientati a compiti specifici. Utilizzando questi meccanismi, non è necessaria la scrittura di codice sul lato dell'applicazione 1C, poiché utilizziamo le funzionalità predefinite della soluzione applicativa. Sul lato dell'applicazione 1C, è sufficiente eseguire alcune configurazioni.
Meccanismi di integrazione nella piattaforma 1C:Enterprise
Importazione/esportazione di file
Supponiamo che ci troviamo di fronte alla necessità di uno scambio bidirezionale di dati tra l'applicazione 1C e un'applicazione qualsiasi. Ad esempio, dobbiamo sincronizzare l'elenco dei prodotti (il catalogo Nomenclatura) tra l'applicazione 1C e un'applicazione qualsiasi.

Per affrontare questa esigenza, è possibile scrivere un'estensione che estrae il catalogo Nomenclatura in un file di un formato specifico (testo, XML, JSON, …) e che è in grado di leggere questo formato.
Nella piattaforma è implementato un meccanismo di serializzazione degli oggetti applicativi in XML sia direttamente, attraverso i metodi del contesto globale ScrivereXML/LeggereXML, sia mediante un oggetto ausiliario XDTO (XML Data Transfer Objects).
Qualsiasi oggetto nel sistema 1C:Enterprise può essere serializzato in una rappresentazione XML e viceversa.
Questa funzione restituirà la rappresentazione dell'oggetto in formato XML:
Funzione Oggetto_V_XML(Oggetto)
RegistrazioneXML = Nuova RegistrazioneXML();
RegistrazioneXML.ImpostaStringa();
ScriviXML(RegistrazioneXML, Oggetto);
Restituisci RegistrazioneXML.Chiudi();
FineFunzione
questo sarà l'aspetto dell'esportazione del catalogo Nomenclatura in XML utilizzando XDTO:
&AtServer
Procedura EsportaXMLSuServer()
NuovoSerializzatoreXDTO = SerializzatoreXDTO;
NuovaRegistrazioneXML = Nuova RegistrazioneXML();
NuovaRegistrazioneXML.ApriFile("C:DataNomenclatura.xml", "UTF-8");
NuovaRegistrazioneXML.ScriviDichiarazioneXML();
NuovaRegistrazioneXML.ScriviInizioElemento("CatalogoNomenclatura");
Selezione = Cataloghi.Nomenclatura.Seleziona();
Mentre Selezione.Successivo() Fai
OggettoNomenclatura = Selezione.OttieniOggetto();
NuovoSerializzatoreXDTO.ScriviXML(NuovaRegistrazioneXML, OggettoNomenclatura, AssegnazioneTipoXML.Esplicita);
FineCiclo;
NuovaRegistrazioneXML.ScriviFineElemento();
NuovaRegistrazioneXML.Chiudi();
FineProcedura
Con una semplice modifica al codice esportiamo il catalogo in JSON. I prodotti saranno scritti in un array; per varietà, presentiamo la variante sintattica in inglese:
&AtServer
Procedura EsportaJSONSuServer()
NuovoSerializzatoreXDTO = SerializzatoreXDTO;
NuovoScrittoreJSON = Nuovo ScrittoreJSON();
NuovoScrittoreJSON.ApriFile("C:DataNomenclatura.json", "UTF-8");
NuovoScrittoreJSON.ScriviInizioOggetto();
NuovoScrittoreJSON.ScriviNomeProprietà("CatalogoNomenclatura");
NuovoScrittoreJSON.ScriviInizioArray();
Selezione = Cataloghi.Nomenclatura.Seleziona();
Mentre Selezione.Successivo() Fai
OggettoNomenclatura = Selezione.OttieniOggetto();
NuovoScrittoreJSON.ScriviInizioOggetto();
NuovoScrittoreJSON.ScriviNomeProprietà("Nomenclatura");
NuovoSerializzatoreXDTO.ScriviJSON(NuovoScrittoreJSON, OggettoNomenclatura, AssegnazioneTipoXML.Implicita);
NuovoScrittoreJSON.ScriviFineOggetto();
FineFai;
NuovoScrittoreJSON.ScriviFineArray();
NuovoScrittoreJSON.ScriviFineOggetto();
NuovoScrittoreJSON.Chiudi();
FineProcedura
Rimane solo da trasferire i dati al destinatario finale. La piattaforma 1C:Enterprise supporta i principali protocolli internet HTTP, FTP, POP3, SMTP, IMAP, comprese le loro versioni sicure. È inoltre possibile utilizzare HTTP e/o servizi Web per il trasferimento dei dati.
Servizi HTTP e web

Le applicazioni 1C possono implementare i propri servizi HTTP e web, così come invocare servizi HTTP e web implementati da applicazioni di terze parti.
Interfaccia REST e protocollo OData
A partire dalla versione 8.3.5, la piattaforma 1C:Enterprise può automaticamente per l'intera soluzione applicativa. Qualsiasi oggetto di configurazione (catalogo, documento, registro delle informazioni, ecc.) può essere reso accessibile per ottenere e modificare i dati tramite l'interfaccia REST. Come protocollo di accesso, la piattaforma utilizza il protocollo versione 3.0. La pubblicazione dei servizi OData avviene dal menu del Configuratore «Amministrazione -> Pubblicazione sul server web», e la casella «Pubblica l'interfaccia standard OData» deve essere selezionata. Sono supportati i formati atom/XML e JSON. Dopo che la soluzione applicativa è stata pubblicata sul server web, i sistemi esterni possono accedervi tramite l'interfaccia REST utilizzando richieste HTTP. Per lavorare con l'applicazione 1C tramite il protocollo OData non è necessaria alcuna programmazione dal lato 1C.
Quindi, un URL del tipo http:////odata/standard.odata/Catalog_Номенклатура resterà il contenuto del catalogo Nomenclature in formato XML — una collezione di elementi entry (l'intestazione del messaggio è stata omessa per brevità):
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Condizionatore Mitsubishi
Potenza 2,5 kW, modalità operative: caldo/freddo
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Aggiungendo alla URL la stringa «?$format=application/json», otterremo il contenuto del catalogo Nomenclature in formato JSON (URL del tipo http:////odata/standard.odata/Catalog_Номенклатура?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Номенклатура",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Condizionatore Mitsubishi",
"Descrizione": "Potenza 2,5 kW, modalità operative: caldo/freddo"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Condizionatore Daikin",
"Descrizione": "Potenza 3 kW, modalità operative: caldo/freddo"
}, …
Fonti esterne di dati

In alcuni casi, lo scambio di dati avviene tramite può risultare la soluzione ottimale. Le sorgenti esterne di dati sono un oggetto applicativo della configurazione 1C, che consente l'interazione con qualsiasi database compatibile con ODBC sia in lettura che in scrittura. Le sorgenti esterne di dati sono disponibili sia su Windows che su Linux.
Meccanismo di scambio dati
è progettato sia per la creazione di sistemi territorialmente distribuiti basati su 1C:Enterprise, sia per organizzare lo scambio di dati con altri sistemi informativi non basati su 1C:Enterprise.
Questo meccanismo è ampiamente utilizzato nelle implementazioni di 1C, e l'ampiezza delle attività che può gestire è piuttosto vasta. Si occupa dello scambio di dati tra le applicazioni 1C installate nelle filiali dell'organizzazione, dello scambio tra un'applicazione 1C e il sito di un negozio online, e dello scambio di dati tra l'applicazione server 1C e il client mobile (creato con la piattaforma mobile di 1C:Enterprise), e molto altro.
Uno dei concetti chiave nel meccanismo di scambio dati è il piano di scambio. Il piano di scambio è un tipo speciale di oggetto applicativo della piattaforma 1C, che definisce, in particolare, l'insieme dei dati che parteciperanno allo scambio (quali esattamente sono i registri, i documenti, i registri e così via). Il piano di scambio contiene anche informazioni sui partecipanti allo scambio (i cosiddetti nodi di scambio).
La seconda componente del meccanismo di scambio dati è il meccanismo di registrazione delle modifiche. Questo meccanismo tiene automaticamente traccia in sistema delle modifiche ai dati che devono essere trasmesse ai consumatori finali nell'ambito del piano di scambio. Con questo meccanismo, la piattaforma monitora le modifiche avvenute dal momento dell'ultima sincronizzazione, e consente di minimizzare il volume dei dati trasmessi nell'ambito della successiva sessione di sincronizzazione.
Lo scambio di dati avviene tramite messaggi XML di una determinata struttura. Il messaggio contiene dati che sono cambiati dal momento dell'ultima sincronizzazione con il nodo e alcune informazioni di servizio. La struttura dei messaggi supporta la numerazione dei messaggi e consente di ricevere conferme dal nodo ricevente riguardo alla ricezione dei messaggi. Tale conferma è contenuta in ogni messaggio proveniente dal nodo ricevente, sotto forma del numero dell'ultimo messaggio ricevuto. La numerazione dei messaggi consente alla piattaforma di comprendere quali dati siano stati già trasmessi con successo al nodo ricevente, evitando la trasmissione ripetuta e inviando solo i dati modificati dal momento in cui il nodo mittente ha ricevuto l'ultimo messaggio con la ricevuta dei dati ricevuti dal nodo ricevente. Con questo schema di lavoro si garantisce la consegna anche in caso di canali di trasmissione poco affidabili e perdita di messaggi.
Componenti esterni
In alcuni casi, nella risoluzione di compiti di integrazione, è necessario affrontare requisiti specifici, ad esempio protocolli di interazione, formati di dati con cui la piattaforma 1C:Enterprise non prevede di lavorare. Per questo tipo di compiti, la piattaforma prevede , che consente di creare moduli collegabili dinamicamente, ampliando le funzionalità di 1C:Enterprise.
Un esempio tipico di compito con requisiti simili può essere l'integrazione di una soluzione applicativa 1C con attrezzature commerciali, che vanno dalle bilance ai registratori di cassa e scanner di codici a barre. I componenti esterni possono essere collegati sia sul lato server di 1C:Enterprise che sul lato client (incluso, tra l'altro, il web-client e anche 1C:Enterprise). La tecnologia dei componenti esterni prevede un'interfaccia di programmazione (C++) sufficientemente semplice e chiara per l'interazione del componente con la piattaforma 1C:Enterprise che deve essere implementata dallo sviluppatore.
Le opportunità che si aprono con l'uso di componenti esterni sono piuttosto ampie. È possibile implementare interazioni secondo un protocollo specifico di scambio dati con dispositivi e sistemi esterni, integrare algoritmi specifici di elaborazione dati e formati di dati, ecc.
Meccanismi di integrazione obsoleti
Nella piattaforma sono disponibili meccanismi di integrazione che non si raccomanda di utilizzare in nuove soluzioni; sono stati mantenuti per motivi di compatibilità retroattiva e nel caso in cui l'altra parte non possa lavorare con protocolli più moderni. Uno di questi è il lavoro con file di formato DBF (supportato nel linguaggio integrato tramite l'oggetto XBase).
Un altro meccanismo di integrazione obsoleto è l'uso della tecnologia COM (disponibile solo sulla piattaforma Windows). La piattaforma 1C:Enterprise offre due modalità di integrazione per Windows che utilizzano la tecnologia COM: Automation-server e Collegamento esterno. Sono molto simili, ma una delle differenze principali è che nel caso dell'Automation-server viene avviata un'applicazione client completa 1C:Enterprise 8, mentre nel caso del collegamento esterno viene avviato un relativamente piccolo server COM intra-processo. Cioè, nel caso di lavoro tramite il server Automation si può utilizzare la funzionalità dell'applicazione client, eseguire azioni simili a quelle interattive dell'utente. Utilizzando il collegamento esterno, è possibile utilizzare solo le funzioni di logica aziendale, che possono essere eseguite sia sul lato client del collegamento, dove viene creato il server COM intra-processo, sia effettuare chiamate alla logica aziendale sul lato del server 1C:Enterprise.
Inoltre, la tecnologia COM può essere utilizzata per accedere a sistemi esterni dal codice dell'applicazione sulla piattaforma 1C:Enterprise. In questo caso, l'applicazione 1C funge da client COM. Ma è importante ricordare che questi meccanismi funzioneranno solo se il server 1C opera nell'ambiente Windows.
Meccanismi di integrazione realizzati in configurazioni standard
Formato EnterpriseData

In alcune configurazioni 1C (nell'elenco qui sotto) è stato implementato un meccanismo di scambio dati con applicazioni esterne basato sul meccanismo di scambio dati della piattaforma descritto sopra, che non richiede modifiche al codice sorgente delle configurazioni (la preparazione allo scambio di dati avviene nelle impostazioni delle soluzioni applicative):
- «1C:ERP Gestione dell'Impresa 2.0»
- «Automazione Completa 2»
- «Contabilità dell'Impresa», edizione 3.0
- «Contabilità dell'Impresa CORP», edizione 3.0
- «Retail», edizione 2.0
- «Gestione delle vendite base», edizione 11
- «Gestione delle vendite», edizione 11
- «Stipendio e gestione del personale KORP», edizione 3
Per lo scambio di dati viene utilizzato il formato , basato su XML. Il formato è orientato al business – le strutture dati descritte corrispondono a entità aziendali (documenti e elementi di repertorio) presentate nei programmi 1C, ad esempio: atto di lavori eseguiti, ricevuta di cassa, controparte, nomenclatura, ecc.
Lo scambio di dati tra l'applicazione 1C e un'applicazione di terze parti può avvenire:
- attraverso una directory di file dedicata
- attraverso una directory FTP
- attraverso un servizio web implementato sul lato dell'applicazione 1C. Il file con i dati viene trasmesso come parametro dei metodi web
- tramite email
In caso di scambio tramite servizio web, l'applicazione di terze parti avvierà la sessione di scambio dati richiamando i corrispondenti metodi web dell'applicazione 1C. Negli altri casi, l'initiatore della sessione di scambio sarà l'applicazione 1C (inviando il file con i dati nella directory appropriata o inviando il file con i dati all'indirizzo email configurato).
Inoltre, sul lato 1C viene impostata la periodicità della sincronizzazione (per le opzioni di scambio file tramite directory e email):
- secondo un programma (con periodicità impostata)
- manuale; l'utente dovrà avviare manualmente la sincronizzazione ogni volta che ne avrà bisogno
Ricezione delle conferme
Le applicazioni 1C tengono traccia dei messaggi di sincronizzazione inviati e ricevuti e si aspettano lo stesso dalle applicazioni di terze parti. Ciò consente di attivare il meccanismo di numerazione dei messaggi, descritto in precedenza nella sezione «Meccanismo di scambio dati».
Le applicazioni 1C durante la sincronizzazione trasferiscono solo le informazioni sulle modifiche avvenute alle entità aziendali dalla ultima sincronizzazione (per minimizzare il volume dei dati trasferiti). Durante la prima sincronizzazione, l'applicazione 1C scaricherà tutte le entità aziendali (ad esempio, gli elementi del catalogo di nomenclatura) nel formato EnterpriseData in un file XML (poiché sono tutte "nuove" per l'applicazione esterna). L'applicazione esterna deve elaborare le informazioni dal file XML ricevuto da 1C e, durante la successiva sessione di sincronizzazione, inserire nel file inviato a 1C, in una sezione speciale XML, l'informazione che il messaggio da 1C con un determinato numero è stato ricevuto con successo. Il messaggio di ricevuta è per l'applicazione 1C un segnale che tutte le entità aziendali sono state elaborate con successo dall'applicazione esterna e non è più necessario inviare informazioni su di esse. Oltre alla ricevuta, il file XML dall'applicazione esterna può contenere anche dati per la sincronizzazione da parte dell'applicazione (ad esempio, documenti di vendita di beni e servizi).
Dopo la ricezione del messaggio di ricevuta, l'applicazione 1C contrassegna tutte le modifiche inviate nel messaggio precedente come correttamente sincronizzate. Solo le modifiche non sincronizzate alle entità aziendali (creazione di nuove entità, modifica e cancellazione di quelle esistenti) saranno inviate all'applicazione esterna durante la successiva sessione di sincronizzazione.

Quando si trasferiscono dati dall'applicazione esterna all'applicazione 1C, la situazione cambia. L'applicazione esterna deve compilare la sezione di ricevuta nel file XML di conseguenza e inserire i dati aziendali da sincronizzare da parte sua nel formato EnterpriseData.

Scambio semplificato di dati senza ricevuta
Per i casi di integrazione semplice, in cui è sufficiente trasferire solo informazioni dall'applicazione esterna all'applicazione 1C e non è necessaria la restituzione dei dati dall'applicazione 1C all'applicazione esterna (ad esempio, integrazione di un negozio online che trasferisce informazioni sulle vendite a "1C: Contabilità"), è disponibile una variante semplificata di lavoro tramite un web service (senza ricevuta), che non richiede impostazioni dal lato dell'applicazione 1C.
Soluzioni di integrazione specializzate
Esiste una soluzione standard «1C:Conversione dei dati», che utilizza i meccanismi della piattaforma per la conversione e lo scambio dei dati tra configurazioni standard di 1C, ma può essere anche utilizzata per l'integrazione con applicazioni di terze parti.
Integrazione con soluzioni bancarie
Standard , sviluppato da specialisti di 1C oltre 10 anni fa, è di fatto diventato uno standard del settore in Russia. Il passo successivo in questa direzione è la tecnologia , che consente di inviare documenti di pagamento alla banca e ricevere estratti conto direttamente dai programmi del sistema «1C:Enterprise» con la pressione di un pulsante nel programma «1C»; non è necessaria l'installazione e l'esecuzione di programmi aggiuntivi sul computer client.
Esiste anche .
Altro
Meritano di essere menzionati , standard di scambio di informazioni commerciali (sviluppato congiuntamente con Microsoft, Intel, Price.ru e altre aziende), .
Fonte: habr.com
