Quali sono i requisiti fondamentali per le applicazioni aziendali? Alcuni dei principali obiettivi sono i seguenti:
- Facilità di modifica/adattamento della logica operativa dell'applicazione alle mutevoli sfide aziendali.
- Facilità di integrazione con altre applicazioni.
Come viene affrontata la prima sfida in 1C è stato descritto brevemente nella sezione 'Customizzazione e Supporto'; torneremo su questo interessante argomento in uno dei prossimi articoli. Oggi parleremo invece della seconda sfida, ossia l'integrazione. ; мы еще вернемся к этой интересной теме в одной из будущих статей. Сегодня же речь пойдет о второй задаче, об интеграции.
Sfide di integrazione
I compiti di integrazione possono variare. Per alcune soluzioni è sufficiente uno scambio dati interattivo semplice, ad esempio per inviare in banca l'elenco dei dipendenti per l'emissione di carte plastificate per stipendi. Per compiti più complessi potrebbe essere necessario uno scambio dati completamente automatizzato, possibilmente con accesso alla logica aziendale di un sistema esterno. Ci sono compiti di natura specializzata, come l'integrazione con attrezzature esterne (ad esempio, attrezzature commerciali, scanner mobili, ecc.) o con sistemi ereditati o specializzati (ad esempio, con sistemi di riconoscimento delle etichette RFID). È estremamente importante scegliere il meccanismo di integrazione più adatto per ogni compito.
Possibilità di integrazione con 1C
Esistono diversi approcci per implementare integrazioni con le applicazioni 1C; quale scegliere dipende dalle esigenze del compito.
- Implementazione basata su , forniti dalla piattaforma, della propria API specializzata dal lato dell'applicazione 1C (ad esempio, un insieme di servizi Web o HTTP che invocheranno applicazioni di terze parti per scambiare dati con l'applicazione 1C). Il vantaggio di questo approccio è la resistenza dell'API ai cambiamenti dell'implementazione dal lato dell'applicazione 1C. La peculiarità di questo approccio è che è necessario modificare il codice sorgente della soluzione standard 1C, il che può richiedere potenzialmente sforzi per fondere i codici sorgente durante il passaggio a una nuova versione della configurazione. In questo caso, potrebbe tornare utile una nuova funzionalità progressiva — . Le estensioni sono, in sostanza, un meccanismo di plugin che consente di creare aggiunte alle soluzioni applicative senza modificare le stesse soluzioni applicative. Spostare l'API di integrazione nell'estensione della configurazione eviterà complessità durante la fusione delle configurazioni al passaggio a una nuova versione della soluzione standard.
- Utilizzo dei meccanismi di integrazione della piattaforma, che forniscono accesso esterno al modello a oggetti dell'applicazione e non richiedono modifiche all'applicazione o la creazione di estensioni. Il vantaggio di questo approccio è che non è necessario modificare l'applicazione 1C. Lo svantaggio è che se l'applicazione 1C è stata modificata, potrebbero essere necessarie ulteriori modifiche all'applicazione integrata. Un esempio di tale approccio è l'uso del protocollo OData per l'integrazione, implementato nella piattaforma 1C:Enterprise (maggiore dettaglio qui sotto).
- Utilizzo di protocolli applicativi pronti all'uso, implementati nelle soluzioni standard di 1C. Molte soluzioni standard di 1C e dei partner implementano, basandosi sui meccanismi di integrazione forniti dalla piattaforma, i propri protocolli applicativi mirati a compiti specifici. Utilizzando questi meccanismi, non è necessario scrivere codice all'interno dell'applicazione 1C poiché ci avvaliamo delle funzionalità standard della soluzione applicativa. Dallato dell'applicazione 1C, è necessario solo effettuare alcune configurazioni.
Meccanismi di integrazione nella piattaforma 1C:Enterprise
Import/esportazione di file
Immaginiamo di dover effettuare uno scambio bidirezionale di dati tra l'applicazione 1C e un'applicazione a scelta. Ad esempio, dobbiamo sincronizzare l'elenco dei prodotti (il catalogo Nomenclatura) tra l'applicazione 1C e un'applicazione a scelta.

Per risolvere questo problema, si può scrivere un'estensione che esporta il catalogo Nomenclatura in un file di un formato specifico (testuale, XML, JSON, ...) e che è in grado di leggere questo formato.
La piattaforma implementa un meccanismo di serializzazione degli oggetti applicativi in XML sia direttamente, tramite i metodi del contesto globale ScriviXML/LeggiXML, sia con l'ausilio di un oggetto secondario XDTO (XML Data Transfer Objects).
Qualsiasi oggetto nel sistema 1C:Enterprise può essere serializzato in un formato XML e viceversa.
Questa funzione restituirà la rappresentazione dell'oggetto in formato XML:
Funzione Oggetto_In_XML(Oggetto)
ScritturaXML = Nuova ScritturaXML();
ScritturaXML.ImpostaStringa();
ScriviXML(ScritturaXML, Oggetto);
Restituisci ScritturaXML.Chiudi();
FineFunzione
Ecco come apparirà l'esportazione del catalogo Nomenclatura in XML utilizzando XDTO:
&
Procedura EsportaXMLSuServere()
NuovoSerializzatoreXDTO = SerializzatoreXDTO;
NuovaRegistroXML = Nuovo RegistroXML();
NuovaRegistroXML.ApriFile("C:DataNomenclatura.xml", "UTF-8");
NuovaRegistroXML.ScriviAnnuncioXML();
NuovaRegistroXML.ScriviInizioElemento("CatalogoNomenclatura");
Selezione = Cataloghi.Nomenclatura.Seleziona();
Mentre Selezione.Siguiente() Ciclo
OggettoNomenclatura = Selezione.OttieniOggetto();
NuovoSerializzatoreXDTO.ScriviXML(NuovaRegistroXML, OggettoNomenclatura, DestinazioneTipoXML.Esplicito);
FineCiclo;
NuovaRegistroXML.ScriviFineElemento();
NuovaRegistroXML.Chiudi();
FineProcedura
Attraverso una semplice modifica del codice esportiamo il catalogo in JSON. I prodotti saranno scritti in un array; per varietà presenteremo una versione in inglese della sintassi:
&AtServer
Procedure ExportJSONOnServer()
NewXDTOSerializer = XDTOSerializer;
NewJSONWriter = New JSONWriter();
NewJSONWriter.OpenFile("C:DataNomenclatura.json", "UTF-8");
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("CatalogNomenclatura");
NewJSONWriter.WriteStartArray();
Selection = Catalogs.Nomenclatura.Select();
While Selection.Next() Do
NomenclatureObject = Selection.GetObject();
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("Nomenclatura");
NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
NewJSONWriter.WriteEndObject();
EndDo;
NewJSONWriter.WriteEndArray();
NewJSONWriter.WriteEndObject();
NewJSONWriter.Close();
EndProcedure
Dopo, resterà solo da trasferire i dati all'utente finale. La piattaforma 1C:Enterprise supporta i principali protocolli Internet, come HTTP, FTP, POP3, SMTP, IMAP, comprese le loro versioni sicure. È inoltre possibile utilizzare HTTP e/o Web services per il trasferimento dei dati.
Servizi HTTP e web

Le applicazioni 1C possono implementare i propri servizi HTTP e web, e anche chiamare i servizi HTTP e web realizzati da applicazioni di terze parti.
Interfaccia REST e protocollo OData
A partire dalla versione 8.3.5, la piattaforma 1C:Enterprise può generare automaticamente per l'intera soluzione applicativa. Qualsiasi oggetto di configurazione (riferimento, documento, registro informazioni, ecc.) può essere reso accessibile per recuperare e modificare dati attraverso l'interfaccia REST. La piattaforma utilizza il protocollo versione 3.0. La pubblicazione dei servizi OData viene eseguita dal menu del Configuratore 'Amministrazione -> Pubblicazione sul server web', deve essere selezionata l'opzione 'Pubblica interfaccia standard OData'. Sono supportati i formati atom/XML e JSON. Una volta che la soluzione applicativa è pubblicata sul server web, i sistemi esterni possono accedervi tramite l'interfaccia REST utilizzando richieste HTTP. Non è richiesta programmazione sul lato 1C per lavorare con l'applicazione 1C tramite il protocollo OData.
Pertanto, un URL del tipo http:////odata/standard.odata/Catalog_Номенклатура restituirà il contenuto del catalogo Nomenclatura in formato XML — una collezione di elementi entry (l'intestazione del messaggio è 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à di funzionamento: riscaldamento/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 Номенклатура in formato JSON (URL di tipo http:////odata/standard.odata/Catalog_Номенклатура?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Nomenclatura",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Condizionatore Mitsubishi",
"Описание": "Potenza 2,5 kW, modalità di funzionamento: caldo/freddo"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Condizionatore Daikin",
"Описание": "Potenza 3 kW, modalità di funzionamento: caldo/freddo"
}, …
Fonti di dati esterne

In alcuni casi, lo scambio di dati tramite può risultare la soluzione ottimale. Le fonti di dati esterne sono oggetti applicativi di configurazione 1C che consentono di interagire con qualsiasi database compatibile ODBC sia in lettura che in scrittura. Le fonti di dati esterne 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 l'organizzazione dello scambio di dati con altri sistemi informativi non basati su 1C:Enterprise.
Questo meccanismo è ampiamente utilizzato nelle implementazioni di 1C e le sue applicazioni sono molto varie. Include lo scambio di dati tra le applicazioni 1C installate nelle filiali dell'organizzazione, lo scambio di dati tra l'applicazione 1C e il sito dell'e-commerce, e lo scambio di dati tra l'applicazione server 1C e il client mobile (creato con la piattaforma mobile 1C:Enterprise), e molto altro.
Uno dei concetti chiave nel meccanismo di scambio dati è il piano di scambio. Il piano di scambio è un particolare tipo di oggetto della piattaforma applicativa 1C, che definisce, tra l'altro, la composizione dei dati che parteciperanno allo scambio (quali specifici registri, documenti, registri e così via). Il piano di scambio contiene anche informazioni sui partecipanti allo scambio (i cosiddetti nodi di scambio).
Il secondo componente del meccanismo di scambio dati è il meccanismo di registrazione delle modifiche. Questo meccanismo tiene automaticamente traccia delle modifiche ai dati nel sistema che devono essere trasmesse ai consumatori finali nell'ambito del piano di scambio. Grazie a questo meccanismo, la piattaforma monitora le modifiche avvenute dalla precedente sincronizzazione e consente di ridurre al minimo la quantità di dati trasmessi durante la sessione di sincronizzazione successiva.
Lo scambio di dati avviene attraverso messaggi XML di una struttura specifica. Il messaggio contiene i dati modificati dall'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 destinatario riguardo alla ricezione dei messaggi. Tale conferma è contenuta in ogni messaggio proveniente dal nodo destinatario, sotto forma del numero dell'ultimo messaggio ricevuto. La numerazione dei messaggi permette alla piattaforma di comprendere quali dati siano già stati trasferiti correttamente al nodo destinatario e di evitare invii ripetuti, trasmettendo solo i dati modificati dalla ricezione da parte del nodo mittente dell'ultimo messaggio con la ricevuta dei dati ricevuti dal nodo destinatario. Con questo sistema di funzionamento si garantisce la consegna anche su canali di trasmissione inaffidabili e in caso di perdita di messaggi.
Componenti esterni
In alcuni casi, nella risoluzione di problematiche di integrazione, si devono affrontare requisiti specifici, come protocolli di interazione e formati di dati che non sono supportati dalla piattaforma 1C:Enterprise. Per questo tipo di compiti, la piattaforma offre , che consente di creare moduli collegati dinamicamente, ampliando le funzionalità di 1C:Enterprise.
Un esempio tipico di un compito con tali requisiti è l'integrazione di una soluzione applicativa 1C con attrezzature commerciali, 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, sia sul lato client (incluso, tra l'altro, il client web, così come 1C:Enterprise). La tecnologia dei componenti esterni prevede un'interfaccia di programmazione abbastanza semplice e chiara (C++) per l'interazione del componente con la piattaforma 1C:Enterprise, che deve essere implementata dallo sviluppatore.
Le possibilità offerte dall'uso di componenti esterni sono molto ampie. È possibile implementare interazioni attraverso protocolli specifici per lo scambio di dati con dispositivi e sistemi esterni, integrare algoritmi specifici per il trattamento dei dati e dei formati, ecc.
Meccanismi di integrazione obsoleti
La piattaforma offre meccanismi di integrazione che non si raccomanda di utilizzare nelle nuove soluzioni; sono mantenuti per motivi di retrocompatibilità e nel caso in cui l'altra parte non possa lavorare con protocolli più moderni. Uno di questi è l'interazione con file nel formato DBF (supportato nel linguaggio integrato tramite l'oggetto XBase).
Un altro meccanismo di integrazione obsoleto è l'utilizzo della tecnologia COM (disponibile solo su piattaforma Windows). La piattaforma 1C:Enterprise offre due modalità di integrazione per Windows che utilizzano la tecnologia COM: Server Automation e Connessione Esterna. Sono molto simili, ma una delle differenze fondamentali è che nel caso del Server Automation viene avviata un'applicazione client 1C:Enterprise 8 a tutti gli effetti, mentre nel caso della connessione esterna viene avviato un relativamente piccolo server COM intra-processo. Ciò significa che nel caso di lavoro tramite Server Automation è possibile sfruttare le funzionalità dell'applicazione client, eseguendo azioni simili a quelle interattive dell'utente. Utilizzando la connessione esterna, è possibile utilizzare solo le funzioni della logica di business, e queste possono essere eseguite sia sul lato client della connessione, dove viene creato il server COM intra-processo, sia invocando la logica di business sul lato server di 1C:Enterprise.
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. Tuttavia, è importante ricordare che questi meccanismi funzioneranno solo se il server 1C opera in un ambiente Windows.
Meccanismi di integrazione implementati nelle configurazioni standard
Formato EnterpriseData

In alcune configurazioni di 1C (elenco sottostante), è 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 per lo scambio dati avviene nelle impostazioni delle soluzioni applicative):
- «1C:ERP Gestione dell'impresa 2.0»
- «Automazione complessiva 2»
- «Contabilità dell'impresa», edizione 3.0
- «Contabilità dell'impresa KORP», edizione 3.0
- «Vendita al dettaglio», edizione 2.0
- «Gestione del commercio base», edizione 11
- «Gestione del commercio», edizione 11
- «Salario 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 alle entità aziendali (documenti e elementi di catalogo) presentate nei programmi 1C, ad esempio: verbale di lavori eseguiti, ordine di incasso, 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, distribuito dal lato dell'applicazione 1C. Il file con i dati viene inviato come parametro dei metodi web
- attraverso e-mail
Nel caso di uno scambio attraverso un servizio web, l'applicazione di terze parti inizia una sessione di scambio dati richiamando i metodi web dell'applicazione 1C. Negli altri casi, l'iniziatore della sessione di scambio sarà l'applicazione 1C (inviando il file con i dati nella directory corrispondente o inviando il file con i dati all'indirizzo e-mail configurato).
Inoltre, dal lato 1C, viene configurata la frequenza con cui avverrà la sincronizzazione (per le opzioni con scambio di file tramite directory e e-mail):
- programmato (con frequenza impostata)
- manualmente; l'utente deve avviare manualmente la sincronizzazione ogni volta che ne ha bisogno
Monitoraggio dei messaggi
Le applicazioni 1C registrano i messaggi di sincronizzazione inviati e ricevuti e si aspettano lo stesso dalle applicazioni di terze parti. Questo consente di utilizzare il meccanismo di numerazione dei messaggi, descritto in precedenza nella sezione «Meccanismo di scambio dati».
Le applicazioni 1C durante la sincronizzazione trasmettono solo le informazioni relative alle modifiche apportate alle entità aziendali dal momento dell'ultima sincronizzazione (per minimizzare il volume delle informazioni trasmesse). Durante la prima sincronizzazione, l'applicazione 1C esporta tutte le entità aziendali (ad esempio, gli elementi del catalogo delle merci) nel formato EnterpriseData in un file XML (poiché tutte sono "nuove" per l'applicazione esterna). L'applicazione esterna deve elaborare le informazioni provenienti dal file XML inviato da 1C e, durante la successiva sessione di sincronizzazione, includere nel file inviato a 1C, in una sezione speciale XML, l'informazione che il messaggio proveniente da 1C con un determinato numero è stato ricevuto con successo. Il messaggio di avviso è per l'applicazione 1C un segnale che tutte le entità aziendali sono state elaborate con successo dall'applicazione esterna e che non è più necessario trasferire informazioni al riguardo. Oltre all'avviso, il file XML dell'applicazione esterna può contenere anche dati per la sincronizzazione da parte dell'applicazione (ad esempio, documenti di vendita di beni e servizi).
Dopo aver ricevuto il messaggio di ricevuta, l'applicazione 1C segna tutte le modifiche inviate nel messaggio precedente come sincronizzate con successo. Solo le modifiche non sincronizzate nelle entità aziendali (creazione di nuove entità, modifica e eliminazione di quelle esistenti) saranno inviate all'applicazione esterna durante la successiva sessione di sincronizzazione.

Nella trasmissione dei dati dall'applicazione esterna all'applicazione 1C, lo scenario cambia. L'applicazione esterna deve compilare la sezione di ricevuta nel file XML in modo appropriato e posizionare i dati aziendali da sincronizzare dalla sua parte nel formato EnterpriseData.

Scambio semplificato di dati senza ricevuta
Per i casi di integrazione semplice, in cui è sufficiente inviare 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 trasmette informazioni sulle vendite a «1C:Contabilità»), è disponibile un'opzione semplificata di lavoro tramite un servizio web (senza ricevuta), che non richiede configurazioni lato applicazione 1C.
Soluzioni integrate specializzate
Esiste una soluzione standard "1C: Conversione dati", che utilizza i meccanismi della piattaforma per la conversione e lo scambio di dati tra configurazioni standard di 1C, ma può essere utilizzata anche per integrare applicazioni di terze parti.
Integrazione con soluzioni bancarie
Standard , sviluppato da specialisti 1C oltre 10 anni fa, è diventato praticamente lo standard del settore in Russia. Il passo successivo in questa direzione è la tecnologia , che consente di inviare documenti di pagamento in banca e ricevere estratti conto direttamente dai programmi del sistema "1C:Enterprise" con la pressione di un pulsante nel programma "1C"; in questo caso non è necessaria l'installazione e l'avvio di programmi aggiuntivi sul computer client.
Esistono anche .
Altro
Meritano di essere menzionati , standard per lo scambio di informazioni commerciali (sviluppato in collaborazione con Microsoft, Intel, Price.ru e altre aziende), .
Fonte: habr.com
