Modalități de integrare cu 1C

Care sunt cele mai importante cerințe pentru aplicațiile de afaceri? Printre cele mai esențiale se numără următoarele sarcini:

  • Facilitatea de modificare/adaptare a logicii de funcționare a aplicației la cerințele de afaceri în continuă schimbare.
  • Facilitatea de integrare cu alte aplicații.

Modul în care se rezolvă prima sarcină în 1C a fost descris pe scurt în secțiunea «Personalizare și suport» acestui articol; ne vom întoarce la această temă interesantă într-unul din articolele viitoare. Astăzi însă, vom discuta despre a doua sarcină, integrarea.

Sarcinile de integrare

Sarcinile de integrare pot fi variate. Pentru unele, este suficient un schimb de date interactiv simplu — de exemplu, pentru a trimite către bancă lista angajaților pentru emiterea cardurilor de salariu. Pentru sarcini mai complexe, poate fi necesar un schimb de date complet automatizat, posibil cu apeluri la logica de afaceri a unui sistem extern. Există sarcini de o natură specializată, precum integrarea cu echipamente externe (de exemplu, echipamente de vânzare, scanere mobile etc.) sau cu sisteme moștenite sau specializate (de exemplu, cu sisteme de recunoaștere a etichetelor RFID). Este extrem de important, pentru fiecare sarcină, să alegem mecanismul de integrare cel mai potrivit.

Posibilitățile de integrare cu 1C

Există diferite abordări pentru implementarea integrării cu aplicațiile 1C, alegerea uneia depinde de cerințele sarcinii.

  1. Implementarea pe baza mecanismelor de integrare, furnizate de platformă, a unui API specializat propriu pe partea aplicației 1C (de exemplu, un set de servicii Web sau HTTP, care vor apela aplicații externe pentru a schimba date cu aplicația 1C). Avantajul acestei abordări este stabilitatea API-ului față de modificările implementării pe partea aplicației 1C. O caracteristică a abordării este că este necesară modificarea codului sursă al soluției standard 1C, ceea ce poate necesita eforturi suplimentare la fuziunea codurilor sursă în cazul trecerii la o nouă versiune a configurației. În acest caz, poate interveni o nouă funcționalitate progresivă — extensii ale configurației. Extensiile sunt, în esență, un mecanism de plugin-uri care permite crearea de extensii pentru soluțiile aplicațiilor, fără a modifica aplicațiile în sine. Extragerea API-ului de integrare în extensia de configurare va evita dificultățile în combinarea configurațiilor atunci când se trece la o nouă versiune a soluției standard.
  2. Utilizarea mecanismelor de integrare ale platformei, care oferă acces extern la modelul obiectual al aplicației și nu necesită modificări ale aplicației sau crearea unei extensii. Avantajul acestui abordări este că nu trebuie să modificăm aplicația 1C. Dezavantajul este că, dacă aplicația 1C a fost modificată, pot fi necesare ajustări în aplicația integrată. Un exemplu al acestui tip de abordare este utilizarea protocolului OData pentru integrare, implementat pe partea platformei 1C:Enterprise (mai multe detalii despre acesta mai jos).
  3. Utilizarea protocoalelor aplicațiilor deja existente, implementate în soluțiile standard 1C. Multe soluții standard de la 1C și parteneri implementează, pe baza mecanismelor de integrare furnizate de platformă, propriile protocoale aplicației, orientate către sarcini specifice. Atunci când utilizăm aceste mecanisme, nu este necesară scrierea de cod pe partea aplicației 1C, deoarece beneficiem de funcționalitățile standard ale soluției aplicației. Pe partea aplicației 1C, trebuie doar să facem anumite configurări.

Mecanismele de integrare din platforma 1C:Enterprise

Import/Export de fișiere

Să presupunem că avem de-a face cu sarcina de a realiza un schimb de date bidirecțional între aplicația 1C și o aplicație arbitrara. De exemplu, trebuie să sincronizăm lista de produse (catalogul Nomenclatură) între aplicația 1C și o aplicație arbitrară.

Modalități de integrare cu 1C
Pentru a rezolva această sarcină, se poate scrie o extensie, care exportă catalogul Nomenclatură într-un fișier de un anumit format (text, XML, JSON, …) și poate citi acest format.

Platforma implementa un mecanism de serializare a obiectelor aplicației în XML atât direct, prin metodele contextului global ScrieXML/LeerXML, cât și prin intermediul unui obiect auxiliar XDTO (XML Data Transfer Objects).

Orice obiect din sistemul 1C:Enterprise poate fi serializat în reprezentarea XML și invers.

Această funcție va returna reprezentarea obiectului sub formă de XML:

Funcția Obiect_V_XML(Obiect)
    ÎnregistrareXML = Nouă ÎnregistrareXML();
    ÎnregistrareXML.SetString();
    ScrieXML(ÎnregistrareXML, Obiect);
    Întoarce ÎnregistrareXML.Close();
SfârșitulFuncției

așa va arăta exportul catalogului Nomenclatură în XML folosind XDTO:

&AtServer
Procedură ExportXMLPeServer()
	NouSerealizatorXDTO  = SerealizatorXDTO;
	NouăÎnregistrareXML = Nouă ÎnregistrareXML();
	NouăÎnregistrareXML.OpenFile("C:DataNomenclatura.xml", "UTF-8");
	
	NouăÎnregistrareXML.WriteXMLDeclaration();
	NouăÎnregistrareXML.WriteStartElement("CatalogNomenclatură");
	
	Selecție = Cataloguri.Nomenclatură.Select();
	
	În timp ce Selecție.Next() Ciclul 
		ObiectNomenclatură = Selecție.GetObject();
		NouSerealizatorXDTO.WriteXML(NouăÎnregistrareXML, ObiectNomenclatură, TipDestinațieXML.Declarativ);
	SfârșitulCiclului;
	
	NouăÎnregistrareXML.WriteEndElement();
	NouăÎnregistrareXML.Close();	
SfârșitulProcedurii

Printr-o simplă adaptare a codului, exportăm catalogul în JSON. Produsele vor fi scrise într-un array; pentru diversitate, vom prezenta varianta în engleză a sintaxei:

&AtServer
Procedură ExportJSONPeServer()
	NouSerealizatorXDTO  = SerealizatorXDTO;
	NouScriitorJSON = Nou ScriitorJSON();
	NouScriitorJSON.OpenFile("C:DataNomenclatura.json", "UTF-8");
	
	NouScriitorJSON.WriteStartObject();
	NouScriitorJSON.WritePropertyName("CatalogNomenclatură");
	NouScriitorJSON.WriteStartArray();
	
	Selecție = Cataloguri.Nomenclatură.Select();	
	
	În timp ce Selecție.Next() Fă 
		ObiectNomenclatură = Selecție.GetObject();
		
		NouScriitorJSON.WriteStartObject();
		
		NouScriitorJSON.WritePropertyName("Nomenclatură");
		NouSerealizatorXDTO.WriteJSON(NouScriitorJSON, ObiectNomenclatură, TipAsignmentXML.Implicit);
		
		NouScriitorJSON.WriteEndObject();
	SfârșitulFă;
	
	NouScriitorJSON.WriteEndArray();
	NouScriitorJSON.WriteEndObject();
	NouScriitorJSON.Close();	
SfârșitulProcedurii

Apoi va rămâne doar să transmiți datele consumatorului final. Platforma 1C:Enterprise suportă principalele protocoale internet HTTP, FTP, POP3, SMTP, IMAP, inclusiv versiunile lor sigure. De asemenea, pentru transferul de date se pot folosi HTTP și/sau Web-servicii.

Servicii HTTP și web

Modalități de integrare cu 1C

Aplicațiile 1C pot implementa propriile servicii HTTP și web, precum și apela servicii HTTP și web implementate de aplicații externe.

Interfața REST și protocolul OData

Începând cu versiunea 8.3.5, platforma 1C:Enterprise poate genera automat interfața REST pentru întreaga soluție aplicațională. Orice obiect de configurare (catalog, document, registru de informații etc.) poate fi accesibil pentru obținerea și modificarea datelor prin intermediul interfeței REST. În calitate de protocol de acces, platforma utilizează protocol OData versiunea 3.0. Publicarea serviciilor OData se face din meniul Configuratorului „Administrare -> Publicare pe serverul web”, bifează opțiunea „Publicare interfață standard OData”. Sunt acceptate formatele atom/XML și JSON. După ce soluția aplicativă este publicată pe serverul web, sistemele externe pot accesa aceasta printr-o interfață REST utilizând cereri HTTP. Pentru a lucra cu aplicația 1C prin protocolul OData, nu este necesar programarea pe partea de 1C.

Astfel, URL-ul de forma http://<server>/<configurație>/odata/standard.odata/Catalog_Produs ne va returna conținutul catalogului Produs în format XML — o colecție de elemente entry (antetul mesajului este omis pentru concizie):

<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Produs(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Produs" 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_Produs(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>Aer condiționat Mitsubishi</d:Description>
			<d:Descriere>Putere 2,5 kW, moduri de funcționare: căldură/rece</d:Descriere>
		</m:properties>
	</content>
</entry>
<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Produs(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Produs" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
...

Adăugând la URL șirul „?$format=application/json”, vom obține conținutul catalogului Produs în format JSON (URL de forma http://<server>/<configurație>/odata/standard.odata/Catalog_Produs?$format=application/json ):

{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Produs",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Aer condiționat Mitsubishi",
"Descriere": "Putere 2,5 kW, moduri de funcționare: căldură/rece"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Aer condiționat Daikin",
"Descriere": "Putere 3 kW, moduri de funcționare: căldură/rece"
}, …

Surse externe de date

Modalități de integrare cu 1C
În unele cazuri, schimbul de date prin surse externe de date poate fi soluția optimă. Sursele externe de date sunt un obiect aplicativ de configurare 1C, care permite interacțiunea cu orice bază de date compatibilă ODBC atât pentru citire, cât și pentru scriere. Sursele externe de date sunt disponibile atât pe Windows, cât și pe Linux.

Mecanismul de schimb de date

Mecanismul de schimb de date este destinat atât pentru crearea de sisteme distribuite geografic bazate pe 1C:Enterprise, cât și pentru organizarea schimbului de date cu alte sisteme informaționale, care nu se bazează pe 1C:Enterprise.

Acest mecanism este folosit activ în implementările 1C, iar spectrul de sarcini rezolvate cu ajutorul acestuia este foarte larg. Acesta include schimbul de date între aplicațiile 1C instalate în filialele organizației, schimbul între aplicația 1C și site-ul magazinului online, și schimbul de date între aplicația server 1C și clientul mobil (creat cu ajutorul platformei mobile 1C:Enterprise), și multe altele.

Unul dintre conceptele cheie în mecanismul de schimb de date este planul de schimb. Planul de schimb este un tip special de obiect aplicativ al platformei 1C, care definește, printre altele, compoziția datelor care vor participa la schimb (care anume registri, documente, și altele). Planul de schimb conține de asemenea informații despre participanții la schimb (așa-numitele noduri de schimb).
A doua componentă a mecanismului de schimb de date este mecanismul de înregistrare a modificărilor. Acest mecanism urmărește automat în sistem modificările de date care trebuie transmise consumatorilor finali în cadrul planului de schimb. Cu ajutorul acestui mecanism, platforma urmărește modificările care au avut loc de la ultima sincronizare și permite minimizarea volumului de date transmise în cadrul următoarei sesiuni de sincronizare.

Schimbul de date se realizează prin intermediul mesajelor XML cu o structură specifică. Mesajul conține datele care s-au modificat de la ultima sincronizare cu nodul și anumite informații de servicii. Structura mesajelor suportă numerotarea mesajelor și permite primirea de confirmări de la nodul receptor cu privire la primirea mesajelor. Această confirmare este inclusă în fiecare mesaj care vine de la nodul receptor sub forma numărului ultimului mesaj primit. Numerotarea mesajelor permite platformei să înțeleagă ce date au fost deja transferate cu succes la nodul receptor și să evite retransmiterea, trimițând doar datele care s-au schimbat de la primirea ultimului mesaj de către nodul expeditor, care are o confirmare a datelor primite de nodul receptor. Această schemă de lucru garantează livrarea chiar și în condiții de canal de transmisie nesigure și pierdere de mesaje.

Componente externe

În anumite cazuri, în soluționarea sarcinilor de integrare, este necesar să se facă față cerințelor specifice, cum ar fi protocoalele de interacțiune, formatele de date cu care platforma 1C:Enterprise nu prevede lucrul. Pentru această categorie de sarcini, platforma prevede tehnologia componentelor externe, care permite crearea de module conectabile dinamic, extinzând funcționalitatea 1C:Enterprise.

Un exemplu tipic de sarcină cu astfel de cerințe poate fi integrarea soluției aplicaționale 1C cu echipamente comerciale, începând de la cântare și terminând cu casele de marcat și scanerele de coduri de bare. Componentele externe pot fi conectate atât pe partea serverului 1C:Enterprise, cât și pe partea clientului (inclusiv, de exemplu, și clientul web, precum și următoarea versiune a platformei mobile 1C:Enterprise). Tehnologia componentelor externe prevede un interfață de programare (C++) destul de simplă și clară pentru interacțiunea componentei cu platforma 1C:Enterprise, care trebuie să fie realizată de dezvoltator.

Posibilitățile deschise prin utilizarea componentelor externe sunt foarte largi. Se poate realiza interacțiunea printr-un protocol specific de schimb de date cu dispozitive externe și sisteme, se pot integra algoritmi specifici de procesare a datelor și formate de date etc.

Mecanisme de integrare depășite

Platforma oferă mecanisme de integrare care nu sunt recomandate pentru utilizare în soluțiile noi; aceste mecanisme sunt menținute din motive de compatibilitate retrogradă, dar și în cazul în care cealaltă parte nu poate lucra cu protocoale mai moderne. Unul dintre acestea este lucrul cu fișiere în format DBF (susținut în limbajul încorporat prin obiectul XBase).

Un alt mecanism de integrare depășit este utilizarea tehnologiei COM (disponibilă doar pe platforma Windows). Platforma 1C:Enterprise oferă două moduri de integrare pentru Windows, folosind tehnologia COM: server de automatizare și conexiune externă. Acestea sunt foarte asemănătoare, dar una dintre principalele diferențe este că, în cazul serverului de automatizare, se lansează o aplicație client 1C:Enterprise 8 completă, iar în cazul conexiunii externe, se lansează un server COM de proces relativ mic. Asta înseamnă că, atunci când se lucrează prin serverul de automatizare, se poate utiliza funcționalitatea aplicației client, efectuând acțiuni similare cu cele interactive ale utilizatorului. Când se utilizează conexiunea externă, se pot folosi doar funcțiile logicii de afaceri, care pot fi realizate atât pe partea clientului conexiunii, unde se creează serverul COM de proces, cât și apelând logica de afaceri pe serverul 1C:Enterprise.

De asemenea, tehnologia COM poate fi utilizată pentru a accesa sisteme externe din codul aplicației pe platforma 1C:Enterprise. În acest caz, aplicația 1C acționează ca un client COM. Trebuie reținut că aceste mecanisme vor funcționa doar dacă serverul 1C funcționează într-un mediu Windows.

Mecanismele de integrare implementate în configurațiile standard

Formatul EnterpriseData

Modalități de integrare cu 1C
Într-o serie de configurații 1C (lista de mai jos), pe baza mecanismului de schimb de date descris mai sus, a fost realizat un mecanism de schimb de date cu aplicații externe, fără a necesita modificări ale codului sursă al configurațiilor (pregătirea pentru schimbul de date se face în setările soluțiilor aplicative):

  • „1C:ERP Managementul întreprinderii 2.0”
  • „Automatizare complexă 2”
  • „Contabilitatea întreprinderii”, ediția 3.0
  • „Contabilitatea întreprinderii CORP”, ediția 3.0
  • „Retail”, ediția 2.0
  • „Gestionarea comerțului de bază”, ediția 11
  • „Gestionarea comerțului”, ediția 11
  • „Salarii și managementul resurselor umane CORP”, ediția 3

Pentru schimbul de date se folosește formatul EnterpriseData, bazat pe XML. Formatul este orientat către afaceri - structurile de date descrise corespund entităților de afaceri (documentelor și elementelor din directoare) prezente în programele 1C, de exemplu: act de lucrări finalizate, ordin de încasare, contraentitate, nomenclatură etc.

Schimbul de date între aplicația 1C și o aplicație externă se poate realiza:

  • printr-un director de fișiere dedicat
  • printr-un director FTP
  • printr-un serviciu web, instalat pe partea aplicației 1C. Fișierul cu date este transmis ca parametru al metodelor web
  • prin email

În cazul schimbului prin serviciul web, aplicația externă va iniția sesiunea de schimb de date prin apelarea metodelor web corespunzătoare ale aplicației 1C. În celelalte cazuri, inițiatorul sesiunii de schimb va fi aplicația 1C (prin plasarea fișierului cu date în directorul corespunzător sau trimiterea fișierului cu date la adresa de email configurată).
De asemenea, pe partea 1C se configurează la ce frecvență se va realiza sincronizarea (pentru variantele cu schimb de fișiere prin director și email):

  • conform unui program (cu o frecvență specificată)
  • manual; utilizatorul va trebui să lanseze manual sincronizarea de fiecare dată când va avea nevoie

Confirmarea mesajelor

Aplicațiile 1C țin evidența mesajelor de sincronizare trimise și primite și așteaptă același lucru din partea aplicațiilor externe. Acest lucru permite utilizarea mecanismului de numerotare a mesajelor, descris mai sus în secțiunea „Mecanismul de schimb de date”.

Aplicațiile 1C, în timpul sincronizării, transmit doar informațiile despre schimbările apărute în entitățile de afaceri din timpul ultimei sincronizări (pentru a minimiza volumul de informații transmise). La prima sincronizare, aplicația 1C va expedia toate entitățile de afaceri (de exemplu, elementele din catalogul produselor) în formatul EnterpriseData într-un fișier XML (deoarece toate acestea sunt „noi” pentru aplicația externă). Aplicația externă trebuie să proceseze informațiile din fișierul XML primit de la 1C și, la următoarea sesiune de sincronizare, să plaseze în fișierul trimis către 1C, într-o secțiune specială XML, informația că mesajul de la 1C cu un anumit număr a fost primit cu succes. Mesajul de confirmare reprezintă pentru aplicația 1C un semnal că toate entitățile de afaceri au fost procesate cu succes de aplicația externă și nu mai este necesară transmiterea de informații despre acestea. Pe lângă confirmare, fișierul XML al aplicației externe poate conține, de asemenea, date pentru sincronizarea din partea aplicației (de exemplu, documente de livrare a bunurilor și serviciilor).

După primirea mesajului de confirmare, aplicația 1C marchează toate schimbările transmise în mesajul anterior ca fiind sincronizate cu succes. Numai schimbările nesincronizate în entitățile de afaceri (crearea de entități noi, modificarea și ștergerea celor existente) vor fi trimise aplicației externe la următoarea sesiune de sincronizare.

Modalități de integrare cu 1C
Atunci când datele sunt transmise de la aplicația externă către aplicația 1C, situația se inversează. Aplicația externă trebuie să completeze secțiunea de confirmare în fișierul XML în mod corespunzător și să plaseze datele de afaceri pentru sincronizare din partea sa în formatul EnterpriseData.

Modalități de integrare cu 1C

Schimb de date simplificat fără confirmare

Pentru cazurile de integrare simplă, când este suficient să se transmită informația de la aplicația externă către aplicația 1C și nu este necesară o retur de date din aplicația 1C către aplicația externă (de exemplu, integrarea unui magazin online care transmite informații despre vânzări către „1C:Contabilitate”), există o variantă simplificată de lucru prin intermediul unui serviciu web (fără confirmare), care nu necesită setări pe partea aplicației 1C.

Soluții de integrare specializate

Există o soluție standard „1C: Conversia datelor”, care utilizează mecanismele platformei pentru conversia și schimbul de date între configurațiile standard 1C, dar poate fi utilizată și pentru integrarea cu aplicații externe.

Integrarea cu soluțiile bancare

Standard „Client bancar”, dezvoltată de specialiștii 1C acum mai bine de 10 ani, a devenit practic un standard al industriei în Rusia. Pasul următor în această direcție este tehnologia DirectBank, care permite trimiterea documentelor de plată către bancă și primirea extraselor din bancă direct din programele sistemului „1C: Enterprise” cu o simplă apăsare de buton în programul „1C”; în acest caz, nu este necesară instalarea și rularea unor programe suplimentare pe computerul clientului.

Există de asemenea un standard pentru schimbul de date în proiectele de salarii.

Altele

Merită menționate protocolul de schimb între sistemul 1C: Enterprise și site-ul, standardul de schimb al informațiilor comerciale CommerceML (dezvoltat împreună cu Microsoft, Intel, Price.ru și alte companii), standardul de schimb al datelor pentru operațiunile de achiziție.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster