Modalità di integrazione con 1C

Quali sono i requisiti più importanti per le applicazioni aziendali? Alcuni dei compiti più importanti sono i seguenti:

  • Facilità di modificare/adattare la logica dell'applicazione alle mutevoli attività aziendali.
  • Facile integrazione con altre applicazioni.

Il modo in cui viene risolto il primo compito in 1C è stato brevemente descritto nella sezione "Personalizzazione e supporto". questo articolo; Torneremo su questo interessante argomento in un prossimo articolo. Oggi parleremo del secondo compito, l'integrazione.

Compiti di integrazione

Le attività di integrazione possono essere diverse. Per risolvere alcuni problemi è sufficiente un semplice scambio interattivo di dati, ad esempio per trasferire un elenco di dipendenti a una banca per l'emissione di carte plastificate salariali. Per compiti più complessi può essere necessario uno scambio di dati completamente automatizzato, eventualmente con riferimento alla logica aziendale di un sistema esterno. Esistono attività di natura specializzata, come l'integrazione con apparecchiature esterne (ad esempio apparecchiature di vendita al dettaglio, scanner mobili, ecc.) o con sistemi legacy o altamente specializzati (ad esempio con sistemi di riconoscimento dei tag RFID). È estremamente importante selezionare il meccanismo di integrazione più appropriato per ciascuna attività.

Opzioni di integrazione con 1C

Esistono diversi approcci per implementare l'integrazione con le applicazioni 1C; quale scegliere dipende dai requisiti dell'attività.

  1. Basato sull'implementazione meccanismi di integrazionefornito dalla piattaforma, la propria API specializzata sul lato dell'applicazione 1C (ad esempio, un insieme di servizi Web o HTTP che chiameranno applicazioni di terze parti per scambiare dati con l'applicazione 1C). Il vantaggio di questo approccio è la resistenza dell’API ai cambiamenti nell’implementazione sul lato dell’applicazione 1C. La particolarità dell'approccio è che è necessario modificare il codice sorgente di una soluzione 1C standard, il che potrebbe potenzialmente richiedere uno sforzo durante l'unione dei codici sorgente quando si passa a una nuova versione della configurazione. In questo caso, una nuova funzionalità progressiva può venire in soccorso: estensioni di configurazione. Le estensioni sono, in sostanza, un meccanismo di plugin che consente di creare aggiunte alle soluzioni applicative senza modificare le soluzioni applicative stesse. Lo spostamento dell'API di integrazione nell'estensione di configurazione ti consentirà di evitare difficoltà durante l'unione delle configurazioni quando si passa a una nuova versione di una soluzione standard.
  2. Utilizzando meccanismi di integrazione della piattaforma che forniscono accesso esterno al modello a oggetti dell'applicazione e non richiedono la modifica dell'applicazione o la creazione di un'estensione. Il vantaggio di questo approccio è che non è necessario modificare l'applicazione 1C. Meno: se l'applicazione 1C è stata migliorata, potrebbero essere necessari miglioramenti nell'applicazione integrata. Un esempio di questo approccio è l'uso del protocollo OData per l'integrazione, implementato sul lato della piattaforma 1C:Enterprise (ne parleremo più avanti).
  3. Utilizzo di protocolli applicativi già pronti implementati in soluzioni 1C standard. Molte soluzioni standard di 1C e dei partner implementano i propri protocolli applicativi, focalizzati su compiti specifici, in base ai meccanismi di integrazione forniti dalla piattaforma. Quando si utilizzano questi meccanismi, non è necessario scrivere codice sul lato dell'applicazione 1C, perché Utilizziamo le funzionalità standard della soluzione applicativa. Dal lato dell'applicazione 1C, dobbiamo solo effettuare alcune impostazioni.

Meccanismi di integrazione nella piattaforma 1C:Enterprise

Importa/esporta file

Supponiamo di trovarci di fronte al compito di scambio bidirezionale di dati tra un'applicazione 1C e un'applicazione arbitraria. Ad esempio, dobbiamo sincronizzare un elenco di prodotti (directory Nomenclature) tra l'applicazione 1C e un'applicazione arbitraria.

Modalità di integrazione con 1C
Per risolvere questo problema, puoi scrivere un'estensione che scarichi la directory Nomenclature in un file di un determinato formato (testo, XML, JSON, ...) e possa leggere questo formato.

La piattaforma implementa un meccanismo per serializzare gli oggetti applicativi in ​​XML sia direttamente, attraverso i metodi di contesto globale WriteXML/ReadXML, sia utilizzando l'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à una rappresentazione XML dell'oggetto:

Функция Объект_В_XML(Объект)
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    ЗаписатьXML(ЗаписьXML, Объект);
    Возврат ЗаписьXML.Закрыть();
КонецФункции

Ecco come apparirà l'esportazione della directory Nomenclature in XML utilizzando XDTO:

&НаСервере
Процедура ЭкспортXMLНаСервере()	
	НовыйСериализаторXDTO  = СериализаторXDTO;
	НоваяЗаписьXML = Новый ЗаписьXML();
	НоваяЗаписьXML.ОткрытьФайл("C:DataНоменклатура.xml", "UTF-8");
	
	НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
	НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
	
	Выборка = Справочники.Номенклатура.Выбрать();
	
	Пока Выборка.Следующий() Цикл 
		ОбъектНоменклатура = Выборка.ПолучитьОбъект();
		НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
	КонецЦикла;
	
	НоваяЗаписьXML.ЗаписатьКонецЭлемента();
	НоваяЗаписьXML.Закрыть();	
КонецПроцедуры

Modificando semplicemente il codice, esportiamo la directory in JSON. I prodotti verranno scritti in un array; Per varietà, ecco la versione inglese della sintassi:

&AtServer
Procedure ExportJSONOnServer()
	NewXDTOSerializer  = XDTOSerializer;
	NewJSONWriter = New JSONWriter();
	NewJSONWriter.OpenFile("C:DataНоменклатура.json", "UTF-8");
	
	NewJSONWriter.WriteStartObject();
	NewJSONWriter.WritePropertyName("СправочникНоменклатура");
	NewJSONWriter.WriteStartArray();
	
	Selection = Catalogs.Номенклатура.Select();	
	
	While Selection.Next() Do 
		NomenclatureObject = Selection.GetObject();
		
		NewJSONWriter.WriteStartObject();
		
		NewJSONWriter.WritePropertyName("Номенклатура");
		NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
		
		NewJSONWriter.WriteEndObject();
	EndDo;
	
	NewJSONWriter.WriteEndArray();
	NewJSONWriter.WriteEndObject();
	NewJSONWriter.Close();	
EndProcedure

Quindi non resta che trasferire i dati al consumatore 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 trasferire i dati.

HTTP e servizi web

Modalità di integrazione con 1C

Le applicazioni 1C possono implementare i propri servizi HTTP e Web, nonché chiamare 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 creare un'interfaccia REST per l'intera soluzione applicativa. Qualsiasi oggetto di configurazione (rubrica, documento, registro informazioni, ecc.) può essere reso disponibile per la ricezione e la modifica dei dati tramite l'interfaccia REST. La piattaforma utilizza il protocollo come protocollo di accesso Odati versione 3.0. La pubblicazione dei servizi OData viene eseguita dal menu del Configuratore “Amministrazione -> Pubblicazione su un server web”, la casella di controllo “Pubblica interfaccia OData standard” deve essere selezionata. Sono supportati i formati Atom/XML e JSON. Dopo che la soluzione applicativa è stata pubblicata sul web server, i sistemi di terze parti possono accedervi tramite l'interfaccia REST utilizzando richieste HTTP. Per lavorare con l'applicazione 1C tramite il protocollo OData, non è necessaria la programmazione sul lato 1C.

Quindi, un URL come http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура ci restituirà il contenuto del catalogo della Nomenclatura in formato XML - una raccolta di elementi di ingresso (il titolo del messaggio viene omesso per brevità):

<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
	<title type="text"/>
	<updated>2016-06-06T16:42:17</updated>
	<author/>
	<summary/>
	<link rel="edit" href="Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')" title="edit-link"/>
	<content type="application/xml">
		<m:properties  >
			<d:Ref_Key>35d1f6e4-289b-11e6-8ba4-e03f49b16074</d:Ref_Key>
			<d:DataVersion>AAAAAgAAAAA=</d:DataVersion>
			<d:DeletionMark>false</d:DeletionMark>
			<d:Code>000000001</d:Code>
			<d:Description>Кондиционер Mitsubishi</d:Description>
			<d:Описание>Мощность 2,5 кВт, режимы работы: тепло/холод</d:Описание>
		</m:properties>
	</content>
</entry>
<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
...

Aggiungendo all'URL la stringa “?$format=application/json” otteniamo il contenuto del catalogo Nomenclature in formato JSON (URL del form 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": "Кондиционер Mitsubishi",
"Описание": "Мощность 2,5 кВт, режимы работы: тепло/холод"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Кондиционер Daikin",
"Описание": "Мощность 3 кВт, режимы работы: тепло/холод"
}, …

Fonti dati esterne

Modalità di integrazione con 1C
In alcuni casi, lo scambio di dati tramite fonti di dati esterne potrebbe essere la soluzione migliore. Le origini dati esterne sono un oggetto di configurazione dell'applicazione 1C che consente di interagire con qualsiasi database compatibile con ODBC, sia in lettura che in scrittura. Le origini dati esterne sono disponibili sia su Windows che su Linux.

Meccanismo di scambio dati

Meccanismo di scambio dati è destinato sia alla creazione di sistemi distribuiti geograficamente basati su 1C:Enterprise, sia all'organizzazione dello scambio di dati con altri sistemi informativi non basati su 1C:Enterprise.

Questo meccanismo viene utilizzato attivamente nelle implementazioni 1C e la gamma di compiti risolti con il suo aiuto è molto ampia. Ciò include lo scambio di dati tra le applicazioni 1C installate nelle filiali dell'organizzazione e lo scambio tra l'applicazione 1C e il sito web del negozio online e lo scambio di dati tra l'applicazione server 1C e il client mobile (creato utilizzando la piattaforma mobile 1C:Enterprise) e molto altro ancora Di più.

Uno dei concetti chiave nel meccanismo di scambio dei dati è il piano di scambio. Un piano di scambio è un tipo speciale di oggetto della piattaforma applicativa 1C, che determina, in particolare, la composizione dei dati che parteciperanno allo scambio (quali elenchi, documenti, registri, ecc.). Il piano di scambio contiene anche informazioni sui partecipanti allo scambio (i cosiddetti nodi di scambio).
Il secondo componente del meccanismo di scambio dei dati è il meccanismo di registrazione delle modifiche. Questo meccanismo monitora automaticamente il sistema per rilevare eventuali modifiche ai dati che devono essere trasferiti agli utenti finali come parte del piano di scambio. Utilizzando questo meccanismo, la piattaforma tiene traccia dei cambiamenti avvenuti dall'ultima sincronizzazione e consente di ridurre al minimo la quantità di dati trasferiti durante la successiva sessione di sincronizzazione.

Lo scambio di dati avviene utilizzando messaggi XML di una determinata struttura. Il messaggio contiene i dati che sono cambiati dall'ultima sincronizzazione con il nodo e alcune informazioni sul servizio. La struttura dei messaggi supporta la numerazione dei messaggi e consente di ricevere conferma dal nodo destinatario della ricezione dei messaggi. Tale conferma è contenuta in ciascun messaggio proveniente dal nodo ricevente, sotto forma del numero dell'ultimo messaggio ricevuto. La numerazione dei messaggi consente alla piattaforma di comprendere quali dati sono già stati trasmessi con successo al nodo ricevente e di evitare la ritrasmissione trasmettendo solo i dati che sono cambiati da quando il nodo mittente ha ricevuto l'ultimo messaggio con una ricevuta per i dati ricevuti dal nodo ricevente. Questo schema operativo garantisce la consegna garantita anche in caso di canali di trasmissione inaffidabili e perdita di messaggi.

Componenti esterni

In molti casi, quando si risolvono i problemi di integrazione, è necessario affrontare requisiti specifici, ad esempio protocolli di interazione, formati di dati, che non sono previsti nella piattaforma 1C:Enterprise. Per una tale gamma di compiti, la piattaforma fornisce tecnologia dei componenti esterni, che consente di creare moduli plug-in dinamici che espandono le funzionalità di 1C:Enterprise.

Un tipico esempio di attività con requisiti simili sarebbe l'integrazione di una soluzione applicativa 1C con apparecchiature di vendita al dettaglio, che vanno dalle bilance ai registratori di cassa e ai lettori di codici a barre. I componenti esterni possono essere collegati sia sul lato server 1C:Enterprise che sul lato client (incluso, ma non limitato a, il client web, nonché prossima versione della piattaforma mobile 1C:Impresa). La tecnologia dei componenti esterni fornisce un'interfaccia software (C++) abbastanza semplice e comprensibile per l'interazione dei componenti con la piattaforma 1C:Enterprise, che deve essere implementata dallo sviluppatore.

Le possibilità che si aprono quando si utilizzano componenti esterni sono molto ampie. È possibile implementare l'interazione utilizzando uno specifico protocollo di scambio dati con dispositivi e sistemi esterni, costruire algoritmi specifici per l'elaborazione di dati e formati di dati, ecc.

Meccanismi di integrazione obsoleti

La piattaforma fornisce meccanismi di integrazione che non sono consigliati per l'utilizzo in nuove soluzioni; vengono lasciati per ragioni di compatibilità con le versioni precedenti e anche nel caso in cui l'altra parte non possa funzionare con protocolli più moderni. Uno di questi funziona con file in formato DBF (supportati nel linguaggio integrato utilizzando l'oggetto XBase).

Un altro meccanismo di integrazione legacy è l'uso della tecnologia COM (disponibile solo sulla piattaforma Windows). La piattaforma 1C:Enterprise fornisce due metodi di integrazione per Windows utilizzando la tecnologia COM: server di automazione e connessione esterna. Sono molto simili, ma una delle differenze fondamentali è che nel caso del server di automazione viene avviata un'applicazione client 1C:Enterprise 8 completa e, nel caso di una connessione esterna, una COM in-process relativamente piccola il server viene avviato. Cioè, se lavori tramite il server di automazione, puoi utilizzare la funzionalità dell'applicazione client ed eseguire azioni simili alle azioni interattive dell'utente. Quando si utilizza una connessione esterna, è possibile utilizzare solo le funzioni di logica aziendale e possono essere eseguite sia sul lato client della connessione, dove viene creato un server COM in-process, sia è possibile chiamare la logica aziendale sul server 1C:Enterprise lato.

La tecnologia COM può essere utilizzata anche per accedere a sistemi esterni dal codice dell'applicazione sulla piattaforma 1C:Enterprise. In questo caso, l'applicazione 1C funge da client COM. Ma va ricordato che questi meccanismi funzioneranno solo se il server 1C funziona in ambiente Windows.

Meccanismi di integrazione implementati nelle configurazioni standard

Formato dati aziendale

Modalità di integrazione con 1C
In una serie di configurazioni 1C (elenco sotto), sulla base del meccanismo di scambio dati della piattaforma sopra descritto, viene implementato un meccanismo già pronto per lo scambio di dati con applicazioni esterne, che non richiede la modifica del codice sorgente delle configurazioni (preparazione per i dati lo scambio avviene nelle impostazioni delle soluzioni applicative):

  • "1C:Gestione aziendale ERP 2.0"
  • "Automazione complessa 2"
  • "Contabilità aziendale", edizione 3.0
  • "Contabilità di un'impresa CORP", edizione 3.0
  • "Vendita al dettaglio", edizione 2.0
  • "Gestione commerciale di base", edizione 11
  • Gestione commerciale, edizione 11
  • “Stipendi e gestione del personale CORP”, edizione 3

Il formato utilizzato per lo scambio di dati è Dati aziendali, basato su XML. Il formato è orientato al business: le strutture dati in esso descritte corrispondono alle entità aziendali (documenti ed elementi di directory) presentate nei programmi 1C, ad esempio: atto di completamento, ordine di ricevuta di cassa, controparte, articolo, ecc.

Lo scambio di dati tra l'applicazione 1C e un'applicazione di terze parti può avvenire:

  • tramite una directory di file dedicata
  • tramite la directory FTP
  • attraverso un servizio web distribuito sul lato dell'applicazione 1C. Il file di dati viene passato come parametro ai metodi web
  • Via Posta Elettronica

In caso di scambio tramite servizio web, un'applicazione di terze parti avvierà una sessione di scambio dati richiamando i metodi web corrispondenti dell'applicazione 1C. Negli altri casi, l'iniziatore della sessione di scambio sarà l'applicazione 1C (posizionando il file di dati nella directory appropriata o inviando il file di dati all'indirizzo email configurato).
Sempre sul lato 1C è possibile configurare la frequenza con cui avverrà la sincronizzazione (per le opzioni con scambio di file tramite directory ed e-mail):

  • secondo il programma (con una frequenza specificata)
  • manualmente; l'utente dovrà avviare manualmente la sincronizzazione ogni volta che ne avrà bisogno

Riconoscimento dei messaggi

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 utilizzare il meccanismo di numerazione dei messaggi sopra descritto nella sezione “Meccanismo di scambio dati”.

Durante la sincronizzazione, le applicazioni 1C trasmettono solo informazioni sui cambiamenti avvenuti con le entità aziendali dall'ultima sincronizzazione (per ridurre al minimo la quantità di informazioni trasferite). Durante la prima sincronizzazione, l'applicazione 1C caricherà tutte le entità aziendali (ad esempio, gli articoli del libro di consultazione degli articoli) nel formato EnterpriseData in un file XML (poiché sono tutte “nuove” per l'applicazione esterna). L'applicazione di terze parti deve elaborare le informazioni dal file XML ricevuto da 1C e, durante la successiva sessione di sincronizzazione, inserire nel file inviato a 1C, in un'apposita sezione XML, l'informazione che il messaggio da 1C con un certo numero è andato a buon fine ricevuto. Il messaggio di ricevuta segnala all'applicazione 1C che tutte le entità aziendali sono state elaborate con successo dall'applicazione esterna e non è più necessario trasmettere informazioni su di esse. Un file XML proveniente da un'applicazione di terze parti può contenere, oltre alla ricevuta, anche dati per la sincronizzazione da parte dell'applicazione (ad esempio documenti per la vendita di beni e servizi).

Dopo aver ricevuto il messaggio di ricezione, l'applicazione 1C contrassegna tutte le modifiche trasmesse nel messaggio precedente come sincronizzate correttamente. Solo le modifiche non sincronizzate alle entità aziendali (creazione di nuove entità, modifica ed eliminazione di quelle esistenti) verranno inviate all'applicazione esterna durante la successiva sessione di sincronizzazione.

Modalità di integrazione con 1C
Quando si trasferiscono dati da un'applicazione esterna all'applicazione 1C, l'immagine è invertita. L'applicazione esterna deve compilare opportunamente la sezione ricevuta del file XML e inserire da parte sua i dati aziendali nel formato EnterpriseData per la sincronizzazione.

Modalità di integrazione con 1C

Scambio dati semplificato senza handshake

Nei casi di integrazione semplice, quando è sufficiente trasferire solo le informazioni da un'applicazione di terzi all'applicazione 1C e non è necessario il trasferimento inverso dei dati dall'applicazione 1C a un'applicazione di terzi (ad esempio, integrazione di un'applicazione online negozio che trasferisce le informazioni sulle vendite a 1C: Contabilità), esiste un'opzione semplificata di lavorare tramite un servizio web (senza riconoscimento), che non richiede impostazioni sul lato dell'applicazione 1C.

Soluzioni di integrazione personalizzate

Esiste una soluzione standard “1C: Data Conversion”, che utilizza meccanismi di piattaforma per la conversione e lo scambio di dati tra configurazioni 1C standard, ma può anche essere utilizzata per l'integrazione con applicazioni di terze parti.

Integrazione con soluzioni bancarie

Standard "Banca Cliente", sviluppato dagli specialisti 1C più di 10 anni fa, è diventato effettivamente uno standard del settore in Russia. Il prossimo passo in questa direzione è la tecnologia DirectBank, che consente di inviare documenti di pagamento alla banca e ricevere estratti conto dalla banca direttamente dai programmi del sistema 1C:Enterprise premendo un pulsante nel programma 1C; non richiede l'installazione e l'esecuzione di programmi aggiuntivi sul computer client.

</s>сть така standard per lo scambio di dati nei progetti salariali.

altro

Vale la pena citare protocollo di scambio tra il sistema 1C:Enterprise e il sito web, standard per lo scambio di informazioni commerciali CommercioML (sviluppato in collaborazione con Microsoft, Intel, Price.ru e altre società), standard per lo scambio di dati per l'acquisizione di transazioni.

Fonte: habr.com

Aggiungi un commento