Metode de integrare cu 1C

Care sunt cele mai importante cerințe pentru aplicațiile de afaceri? Unele dintre cele mai importante sarcini sunt următoarele:

  • Ușurința de a schimba/adapta logica aplicației la schimbarea sarcinilor de afaceri.
  • Integrare ușoară cu alte aplicații.

Cum se rezolvă prima sarcină în 1C a fost descris pe scurt în secțiunea „Personalizare și asistență”. din acest articol; Vom reveni asupra acestui subiect interesant într-un articol viitor. Astăzi vom vorbi despre a doua sarcină, integrarea.

Sarcini de integrare

Sarcinile de integrare pot fi diferite. Pentru a rezolva unele probleme, este suficient un simplu schimb de date interactiv - de exemplu, pentru a transfera o listă de angajați la o bancă pentru emiterea de carduri de plastic salariale. Pentru sarcini mai complexe, poate fi necesar un schimb de date complet automatizat, posibil cu referire la logica de afaceri a unui sistem extern. Există sarcini de natură specializată, cum ar fi integrarea cu echipamente externe (de exemplu, echipamente de vânzare cu amănuntul, scanere mobile etc.) sau cu sisteme vechi sau foarte specializate (de exemplu, cu sisteme de recunoaștere a etichetelor RFID). Este extrem de important să selectați cel mai potrivit mecanism de integrare pentru fiecare sarcină.

Opțiuni de integrare cu 1C

Există diferite abordări pentru implementarea integrării cu aplicațiile 1C; pe care să o alegeți depinde de cerințele sarcinii.

  1. Bazat pe implementare mecanisme de integrarefurnizat de platformă, propriul API specializat pe partea aplicației 1C (de exemplu, un set de servicii Web sau HTTP care va apela aplicații terțe pentru a face schimb de date cu aplicația 1C). Avantajul acestei abordări este rezistența API-ului la schimbările de implementare din partea aplicației 1C. Particularitatea abordării este că este necesar să se schimbe codul sursă al unei soluții standard 1C, care poate necesita efort la îmbinarea codurilor sursă atunci când se trece la o nouă versiune a configurației. În acest caz, o nouă funcționalitate progresivă poate veni în ajutor - extensii de configurare. Extensiile sunt, în esență, un mecanism de plugin care vă permite să creați completări la soluțiile de aplicație fără a modifica soluțiile de aplicație în sine. Mutarea API-ului de integrare în extensia de configurare vă va permite să evitați dificultățile la îmbinarea configurațiilor atunci când treceți la o nouă versiune a unei soluții standard.
  2. Folosind mecanisme de integrare a platformei care oferă acces extern la modelul obiect al aplicației și nu necesită modificarea aplicației sau crearea unei extensii. Avantajul acestei abordări este că nu este nevoie să schimbați aplicația 1C. Minus - dacă aplicația 1C a fost îmbunătățită, atunci pot fi necesare îmbunătățiri în aplicația integrată. Un exemplu al acestei abordări este utilizarea protocolului OData pentru integrare, implementat pe partea platformei 1C:Enterprise (mai multe despre el mai jos).
  3. Utilizarea protocoalelor gata de aplicare implementate în soluții standard 1C. Multe soluții standard de la 1C și parteneri implementează propriile protocoale de aplicație, concentrate pe sarcini specifice, bazate pe mecanismele de integrare oferite de platformă. Când utilizați aceste mecanisme, nu este nevoie să scrieți cod pe partea aplicației 1C, deoarece Folosim capabilitățile standard ale soluției aplicației. Pe partea aplicației 1C, trebuie doar să facem anumite setări.

Mecanisme de integrare în platforma 1C:Enterprise

Import/export fișiere

Să presupunem că ne confruntăm cu sarcina schimbului de date bidirecțional între o aplicație 1C și o aplicație arbitrară. De exemplu, trebuie să sincronizăm o listă de produse (directorul Nomenclatură) între aplicația 1C și o aplicație arbitrară.

Metode de integrare cu 1C
Pentru a rezolva această problemă, puteți scrie o extensie care descarcă directorul Nomenclatură într-un fișier cu un anumit format (text, XML, JSON, ...) și poate citi acest format.

Platforma implementează un mecanism de serializare a obiectelor aplicației în XML atât direct, prin metodele de context global WriteXML/ReadXML, cât și folosind obiectul auxiliar XDTO (XML Data Transfer Objects).

Orice obiect din sistemul 1C:Enterprise poate fi serializat într-o reprezentare XML și invers.

Această funcție va returna o reprezentare XML a obiectului:

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

Iată cum va arăta exportul directorului Nomenclatură în XML folosind XDTO:

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

Prin simpla modificare a codului, exportăm directorul în JSON. Produsele vor fi scrise într-o matrice; Pentru varietate, iată versiunea în limba engleză a sintaxei:

&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

Apoi, tot ce rămâne este să transferați datele către consumatorul final. Platforma 1C:Enterprise acceptă principalele protocoale de Internet HTTP, FTP, POP3, SMTP, IMAP, inclusiv versiunile lor securizate. De asemenea, puteți utiliza HTTP și/sau serviciile Web pentru a transfera date.

HTTP și servicii web

Metode de integrare cu 1C

Aplicațiile 1C își pot implementa propriile servicii HTTP și web, precum și apele HTTP și servicii web implementate de aplicații terțe.

Interfață REST și protocol OData

Începând cu versiunea 8.3.5, platforma 1C:Enterprise poate fi automat creați o interfață REST pentru întreaga soluție de aplicare. Orice obiect de configurare (director, document, registru de informații etc.) poate fi pus la dispoziție pentru primirea și modificarea datelor prin interfața REST. Platforma folosește protocolul ca protocol de acces OData versiunea 3.0. Publicarea serviciilor OData se realizează din meniul Configurator „Administrare -> Publicare pe un server web”, caseta de selectare „Publicare interfață OData standard” trebuie bifată. Formatele Atom/XML și JSON sunt acceptate. După ce soluția aplicației este publicată pe serverul web, sistemele terțe o pot accesa prin interfața REST folosind cereri HTTP. Pentru a lucra cu aplicația 1C prin protocolul OData, nu este necesară programarea pe partea 1C.

Deci, un URL ca http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура ne va returna conținutul catalogului Nomenclatură în format XML - o colecție de elemente de intrare (titlul mesajului este omis pentru concizie):

<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"/>
...

Adăugând șirul „?$format=application/json” la adresa URL, obținem conținutul catalogului Nomenclaturii în format JSON (URL-ul formei 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 кВт, режимы работы: тепло/холод"
}, …

Surse de date externe

Metode de integrare cu 1C
În unele cazuri, schimbul de date prin surse de date externe poate fi cea mai buna solutie. Sursele de date externe sunt un obiect de configurare a aplicației 1C care vă permite să interacționați cu orice bază de date compatibilă ODBC, atât pentru citire, cât și pentru scriere. Sursele de date externe sunt disponibile atât pe Windows, cât și pe Linux.

Mecanism de schimb de date

Mecanism 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 sunt bazate pe 1C:Enterprise.

Acest mecanism este utilizat activ în implementările 1C, iar gama de sarcini rezolvate cu ajutorul său este foarte largă. Aceasta include schimbul de date între aplicațiile 1C instalate în sucursalele organizației și schimbul între aplicația 1C și site-ul magazinului online și schimbul de date între aplicația server 1C și clientul mobil (creat folosind platforma mobilă 1C:Enterprise) și multe Mai mult.

Unul dintre conceptele cheie în mecanismul de schimb de date este planul de schimb. Un plan de schimb este un tip special de obiect al platformei de aplicație 1C, care determină, în special, compoziția datelor care vor participa la schimb (care directoare, documente, registre etc.). 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 monitorizează automat sistemul pentru modificări ale datelor care trebuie transferate utilizatorilor finali ca parte a planului de schimb. Folosind acest mecanism, platforma urmărește modificările care au avut loc de la ultima sincronizare și vă permite să minimizați cantitatea de date transferate în timpul următoarei sesiuni de sincronizare.

Schimbul de date are loc folosind mesaje XML cu o anumită structură. Mesajul conține date care s-au modificat de la ultima sincronizare cu nodul și câteva informații de serviciu. Structura mesajelor acceptă numerotarea mesajelor și vă permite să primiți confirmarea de la nodul destinatar că mesajele au fost primite. O astfel de confirmare este cuprinsă î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 transmise cu succes către nodul receptor și să evite retransmiterea prin transmiterea doar a datelor care s-au schimbat de când nodul expeditor a primit ultimul mesaj cu o chitanță pentru datele primite de nodul receptor. Această schemă de operare asigură livrarea garantată chiar și cu canale de transmisie nesigure și pierderi de mesaje.

Componente externe

Într-o serie de cazuri, atunci când se rezolvă probleme de integrare, trebuie să se confrunte cu cerințe specifice, de exemplu, protocoale de interacțiune, formate de date, care nu sunt prevăzute în platforma 1C:Enterprise. Pentru o astfel de gamă de sarcini, platforma oferă tehnologia componentelor externe, care vă permite să creați module plug-in dinamice care extind funcționalitatea 1C:Enterprise.

Un exemplu tipic de sarcină cu cerințe similare ar fi integrarea unei soluții de aplicație 1C cu echipamente de vânzare cu amănuntul, variind de la cântare la case de marcat și scanere de coduri de bare. Componentele externe pot fi conectate atât pe partea serverului 1C:Enterprise, cât și pe partea clientului (inclusiv, dar fără a se limita la, clientul web, precum și următoarea versiune a platformei mobile 1C: Întreprindere). Tehnologia componentelor externe oferă o interfață software (C++) destul de simplă și de înțeles pentru interacțiunea componentelor cu platforma 1C:Enterprise, care trebuie implementată de dezvoltator.

Posibilitățile care se deschid la utilizarea componentelor externe sunt foarte largi. Puteți implementa interacțiunea folosind un protocol specific de schimb de date cu dispozitive și sisteme externe, puteți construi algoritmi specifici pentru procesarea datelor și formatelor de date etc.

Mecanisme de integrare învechite

Platforma oferă mecanisme de integrare care nu sunt recomandate pentru utilizare în soluții noi; acestea sunt lăsate din motive de compatibilitate inversă și, de asemenea, în cazul în care cealaltă parte nu poate lucra cu protocoale mai moderne. Una dintre ele lucrează cu fișiere în format DBF (suportate în limbajul încorporat folosind obiectul XBase).

Un alt mecanism de integrare moștenit este utilizarea tehnologiei COM (disponibilă doar pe platforma Windows). Platforma 1C:Enterprise oferă două metode de integrare pentru Windows folosind tehnologia COM: server de automatizare și conexiune externă. Sunt foarte asemănătoare, dar una dintre diferențele fundamentale este că, în cazul serverului Automation, este lansată o aplicație client 1C:Enterprise 8 cu drepturi depline, iar în cazul unei conexiuni externe, un COM în proces relativ mic. serverul este lansat. Adică, dacă lucrați prin serverul Automation, puteți utiliza funcționalitatea aplicației client și puteți efectua acțiuni similare cu acțiunile interactive ale utilizatorului. Când utilizați o conexiune externă, puteți utiliza numai funcții logice de afaceri și acestea pot fi executate atât pe partea client a conexiunii, unde este creat un server COM în proces, cât și puteți apela logica de afaceri pe serverul 1C:Enterprise. latură.

Tehnologia COM poate fi folosită și 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. Dar trebuie amintit că aceste mecanisme vor funcționa doar dacă serverul 1C funcționează într-un mediu Windows.

Mecanisme de integrare implementate în configurații standard

Format de date de întreprindere

Metode de integrare cu 1C
Într-un număr de configurații 1C (lista de mai jos), pe baza mecanismului de schimb de date al platformei descris mai sus, este implementat un mecanism gata făcut pentru schimbul de date cu aplicații externe, care nu necesită modificarea codului sursă al configurațiilor (pregătirea pentru date). schimbul se face în setările soluțiilor aplicației):

  • „1C:ERP Enterprise Management 2.0”
  • „Automatizare complexă 2”
  • „Contabilitatea întreprinderii”, ediția 3.0
  • „Contabilitatea unei întreprinderi CORP”, ediția 3.0
  • „Retail”, ediția 2.0
  • „Managementul de bază al comerțului”, ediția a 11-a
  • Managementul comerțului, Ediția 11
  • „Salarii și managementul personalului CORP”, ediția a 3-a

Formatul folosit pentru schimbul de date este EnterpriseData, bazat pe XML. Formatul este orientat spre afaceri - structurile de date descrise în acesta corespund entităților de afaceri (documente și elemente de director) prezentate în programele 1C, de exemplu: act de finalizare, ordin de primire în numerar, contraparte, articol etc.

Schimbul de date între aplicația 1C și o aplicație terță parte poate avea loc:

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

În cazul schimbului prin intermediul unui serviciu web, o aplicație terță parte va iniția o sesiune de schimb de date apelând metodele web corespunzătoare ale aplicației 1C. În alte cazuri, inițiatorul sesiunii de schimb va fi aplicația 1C (prin plasarea fișierului de date în directorul corespunzător sau trimiterea fișierului de date la adresa de e-mail configurată).
De asemenea, pe partea 1C puteți configura cât de des va avea loc sincronizarea (pentru opțiunile cu schimb de fișiere prin intermediul unui director și e-mail):

  • conform programului (cu o frecvență specificată)
  • manual; utilizatorul va trebui să înceapă manual sincronizarea de fiecare dată când are nevoie de ea

Recunoașterea mesajelor

Aplicațiile 1C păstrează înregistrări ale mesajelor de sincronizare trimise și primite și se așteaptă la același lucru de la aplicațiile terțe. Acest lucru vă permite să utilizați mecanismul de numerotare a mesajelor descris mai sus în secțiunea „Mecanismul de schimb de date”.

În timpul sincronizării, aplicațiile 1C transmit doar informații despre modificările care au avut loc cu entitățile de afaceri de la ultima sincronizare (pentru a minimiza cantitatea de informații transferate). În timpul primei sincronizări, aplicația 1C va încărca toate entitățile de afaceri (de exemplu, articolele din cartea de referință a articolului) în format EnterpriseData într-un fișier XML (deoarece sunt toate „noi” pentru aplicația externă). Aplicația terță parte trebuie să prelucreze informațiile din fișierul XML primit de la 1C și, în timpul următoarei sesiuni de sincronizare, să plaseze în fișierul trimis către 1C, într-o secțiune specială XML, informații că mesajul de la 1C cu un anumit număr a fost cu succes primit. Mesajul de primire este un semnal către aplicația 1C că toate entitățile de afaceri au fost procesate cu succes de aplicația externă și nu mai este nevoie să transmitem informații despre ele. Pe lângă chitanță, un fișier XML de la o aplicație terță parte poate conține și date pentru sincronizare de către aplicație (de exemplu, documente pentru vânzarea de bunuri și servicii).

După primirea mesajului de primire, aplicația 1C marchează toate modificările transmise în mesajul anterior ca fiind sincronizate cu succes. Doar modificările nesincronizate ale entităților de afaceri (crearea de noi entități, modificarea și ștergerea celor existente) vor fi trimise la aplicația externă în timpul următoarei sesiuni de sincronizare.

Metode de integrare cu 1C
Când transferați date dintr-o aplicație externă în aplicația 1C, imaginea este inversată. Aplicația externă trebuie să completeze secțiunea de primire a fișierului XML în mod corespunzător și să plaseze datele de afaceri pentru sincronizare din partea sa în formatul EnterpriseData.

Metode de integrare cu 1C

Schimb simplificat de date fără strângere de mână

Pentru cazurile de integrare simplă, când este suficient să transferați doar informații dintr-o aplicație terță în aplicația 1C și nu este necesar transferul invers al datelor de la aplicația 1C către o aplicație terță (de exemplu, integrarea unei aplicații online). magazin care transferă informații de vânzări către 1C: Contabilitate), există o opțiune simplificată de lucru printr-un serviciu web (fără confirmare), care nu necesită setări în partea laterală a aplicației 1C.

Soluții de integrare personalizate

Există o soluție standard „1C: Data Conversion”, care utilizează mecanisme de platformă pentru conversia și schimbul de date între configurațiile standard 1C, dar poate fi folosită și pentru integrarea cu aplicații terțe.

Integrare cu solutii bancare

Standard „Banca client”, dezvoltat de specialiștii 1C în urmă cu mai bine de 10 ani, a devenit de fapt un standard industrial în Rusia. Următorul pas în această direcție este tehnologia DirectBank, care vă permite să trimiteți documente de plată către bancă și să primiți extrase de cont de la bancă direct din programele sistemului 1C:Enterprise prin apăsarea unui singur buton din programul 1C; nu necesită instalarea și rularea de programe suplimentare pe computerul client.

Există, de asemenea standard pentru schimbul de date în proiectele salariale.

Alții

Merită menționat protocol de schimb între sistemul 1C:Enterprise și site-ul web, standard de schimb de informații comerciale CommerceML (dezvoltat în comun cu Microsoft, Intel, Price.ru și alte companii), standard pentru schimbul de date pentru achiziționarea tranzacțiilor.

Sursa: www.habr.com

Adauga un comentariu