Mètodes d'integració amb 1C

Quins són els requisits més importants per a les aplicacions empresarials? Algunes de les tasques més importants són les següents:

  • Facilitat per canviar/adaptar la lògica de l'aplicació al canvi de tasques empresarials.
  • Fàcil integració amb altres aplicacions.

Com es resol la primera tasca a 1C es va descriure breument a la secció "Personalització i suport". aquest article; Tornarem sobre aquest interessant tema en un proper article. Avui parlarem de la segona tasca, la integració.

Tasques d'integració

Les tasques d'integració poden ser diferents. Per resoldre alguns problemes, n'hi ha prou amb un simple intercanvi de dades interactiu, per exemple, per transferir una llista d'empleats a un banc per emetre targetes de plàstic de salari. Per a tasques més complexes, pot ser necessari un intercanvi de dades totalment automatitzat, possiblement amb referència a la lògica de negoci d'un sistema extern. Hi ha tasques de caràcter especialitzat, com la integració amb equips externs (per exemple, equips comercials, escàners mòbils, etc.) o amb sistemes heretats o altament especialitzats (per exemple, amb sistemes de reconeixement d'etiquetes RFID). És molt important seleccionar el mecanisme d'integració més adequat per a cada tasca.

Opcions d'integració amb 1C

Hi ha diferents enfocaments per implementar la integració amb aplicacions 1C; quin triar depèn dels requisits de la tasca.

  1. Basat en la implementació mecanismes d'integracióproporcionada per la plataforma, la seva pròpia API especialitzada al costat de l'aplicació 1C (per exemple, un conjunt de serveis web o HTTP que cridaran aplicacions de tercers per intercanviar dades amb l'aplicació 1C). L'avantatge d'aquest enfocament és la resistència de l'API als canvis en la implementació del costat de l'aplicació 1C. La peculiaritat de l'enfocament és que és necessari canviar el codi font d'una solució estàndard 1C, cosa que pot requerir un esforç en combinar els codis font quan es mou a una nova versió de la configuració. En aquest cas, una nova funcionalitat progressiva pot venir al rescat: extensions de configuració. Les extensions són, en essència, un mecanisme de connectors que us permet crear addicions a solucions d'aplicacions sense canviar les solucions d'aplicació. Moure l'API d'integració a l'extensió de configuració us permetrà evitar dificultats en combinar configuracions quan passeu a una versió nova d'una solució estàndard.
  2. Ús de mecanismes d'integració de plataforma que proporcionen accés extern al model d'objectes de l'aplicació i no requereixen modificació de l'aplicació ni creació d'una extensió. L'avantatge d'aquest enfocament és que no cal canviar l'aplicació 1C. Menys: si s'ha millorat l'aplicació 1C, és possible que es requereixin millores a l'aplicació integrada. Un exemple d'aquest enfocament és l'ús del protocol OData per a la integració, implementat al costat de la plataforma 1C:Enterprise (més informació a continuació).
  3. Ús de protocols d'aplicació ja fets implementats en solucions estàndard 1C. Moltes solucions estàndard d'1C i socis implementen els seus propis protocols d'aplicació, centrats en tasques específiques, basats en els mecanismes d'integració que ofereix la plataforma. Quan s'utilitzen aquests mecanismes, no cal escriure codi al costat de l'aplicació 1C, perquè Utilitzem les capacitats estàndard de la solució d'aplicació. Al costat de l'aplicació 1C, només hem de fer determinades configuracions.

Mecanismes d'integració a la plataforma 1C:Enterprise

Importa/exporta fitxers

Suposem que estem davant de la tasca d'intercanvi de dades bidireccional entre una aplicació 1C i una aplicació arbitrària. Per exemple, hem de sincronitzar una llista de productes (directori de nomenclatura) entre l'aplicació 1C i una aplicació arbitrària.

Mètodes d'integració amb 1C
Per solucionar aquest problema, podeu escriure una extensió que descarregui el directori Nomenclature en un fitxer d'un format determinat (text, XML, JSON, ...) i pugui llegir aquest format.

La plataforma implementa un mecanisme per serialitzar objectes d'aplicació en XML tant directament, mitjançant els mètodes de context global WriteXML/ReadXML, com mitjançant l'objecte auxiliar XDTO (XML Data Transfer Objects).

Qualsevol objecte del sistema 1C:Enterprise es pot serialitzar en una representació XML i viceversa.

Aquesta funció retornarà una representació XML de l'objecte:

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

Així serà l'exportació del directori de nomenclatura a XML mitjançant XDTO:

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

Simplement modificant el codi, exportem el directori a JSON. Els productes s'escriuran en una matriu; Per a la varietat, aquí teniu la versió en anglès de la sintaxi:

&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

Aleshores només queda transferir les dades al consumidor final. La plataforma 1C:Enterprise admet els principals protocols d'Internet HTTP, FTP, POP3, SMTP, IMAP, incloses les seves versions segures. També podeu utilitzar HTTP i/o serveis web per transferir dades.

HTTP i serveis web

Mètodes d'integració amb 1C

Les aplicacions 1C poden implementar els seus propis serveis HTTP i web, així com trucar a HTTP i serveis web implementats per aplicacions de tercers.

Interfície REST i protocol OData

A partir de la versió 8.3.5, la plataforma 1C:Enterprise pot ser automàtica crear una interfície REST per a tota la solució d'aplicació. Qualsevol objecte de configuració (directori, document, registre d'informació, etc.) pot estar disponible per rebre i modificar dades mitjançant la interfície REST. La plataforma utilitza el protocol com a protocol d'accés OData versió 3.0. La publicació dels serveis OData es realitza des del menú Configurador “Administració -> Publicació en un servidor web”, la casella de selecció “Publica la interfície OData estàndard” s'ha de marcar. S'admeten els formats Atom/XML i JSON. Després de publicar la solució de l'aplicació al servidor web, els sistemes de tercers poden accedir-hi mitjançant la interfície REST mitjançant sol·licituds HTTP. Per treballar amb l'aplicació 1C mitjançant el protocol OData, no és necessària la programació del costat 1C.

Per tant, un URL com http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура ens retornarà el contingut del catàleg de nomenclatura en format XML: una col·lecció d'elements d'entrada (el títol del missatge s'omet per concisió):

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

Afegint la cadena “?$format=application/json” a l'URL, obtenim el contingut del catàleg de nomenclatura en format JSON (URL del formulari 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 кВт, режимы работы: тепло/холод"
}, …

Fonts de dades externes

Mètodes d'integració amb 1C
En alguns casos, l'intercanvi de dades via fonts de dades externes pot ser la millor solució. Les fonts de dades externes són un objecte de configuració d'aplicació 1C que us permet interactuar amb qualsevol base de dades compatible amb ODBC, tant per llegir com per escriure. Les fonts de dades externes estan disponibles tant a Windows com a Linux.

Mecanisme d'intercanvi de dades

Mecanisme d'intercanvi de dades està pensat tant per crear sistemes distribuïts geogràficament basats en 1C:Enterprise, com per organitzar l'intercanvi de dades amb altres sistemes d'informació no basats en 1C:Enterprise.

Aquest mecanisme s'utilitza activament en implementacions 1C, i el ventall de tasques resoltes amb la seva ajuda és molt ampli. Això inclou l'intercanvi de dades entre les aplicacions 1C instal·lades a les oficines de l'organització i l'intercanvi entre l'aplicació 1C i el lloc web de la botiga en línia, i l'intercanvi de dades entre l'aplicació del servidor 1C i el client mòbil (creat amb la plataforma mòbil 1C:Enterprise), i molt. més.

Un dels conceptes clau en el mecanisme d'intercanvi de dades és el pla d'intercanvi. Un pla d'intercanvi és un tipus especial d'objecte de la plataforma d'aplicacions 1C, que determina, en particular, la composició de les dades que participaran en l'intercanvi (quins directoris, documents, registres, etc.). El pla d'intercanvi també conté informació sobre els participants de l'intercanvi (els anomenats nodes d'intercanvi).
El segon component del mecanisme d'intercanvi de dades és el mecanisme de registre de canvis. Aquest mecanisme supervisa automàticament el sistema per detectar canvis en les dades que s'han de transferir als usuaris finals com a part del pla d'intercanvi. Mitjançant aquest mecanisme, la plataforma fa un seguiment dels canvis que s'han produït des de l'última sincronització i permet minimitzar la quantitat de dades transferides durant la següent sessió de sincronització.

L'intercanvi de dades es produeix mitjançant missatges XML d'una estructura determinada. El missatge conté dades que han canviat des de l'última sincronització amb el node i alguna informació de servei. L'estructura de missatges admet la numeració de missatges i us permet rebre confirmació del node destinatari que s'han rebut missatges. Aquesta confirmació està continguda en cada missatge procedent del node receptor, en forma del número de l'últim missatge rebut. La numeració de missatges permet a la plataforma entendre quines dades ja s'han transmès amb èxit al node receptor i evitar la retransmissió transmetent només les dades que han canviat des que el node emissor va rebre l'últim missatge amb un rebut de les dades rebudes pel node receptor. Aquest esquema operatiu garanteix un lliurament garantit fins i tot amb canals de transmissió poc fiables i pèrdua de missatges.

Components externs

En alguns casos, a l'hora de resoldre problemes d'integració, s'ha de fer front a requisits específics, per exemple, protocols d'interacció, formats de dades, que no estan previstos a la plataforma 1C:Enterprise. Per a aquest ventall de tasques, la plataforma ofereix tecnologia de components externs, que us permet crear mòduls de connectors dinàmics que ampliïn la funcionalitat d'1C:Enterprise.

Un exemple típic d'una tasca amb requisits similars seria la integració d'una solució d'aplicació 1C amb equips minoristes, que van des de bàscules fins a caixes registradores i escàners de codis de barres. Els components externs es poden connectar tant al costat del servidor 1C:Enterprise com al costat del client (incloent, entre d'altres, el client web, així com propera versió de la plataforma mòbil 1C: Empresa). La tecnologia de components externs proporciona una interfície de programari (C++) força senzilla i entenedora per a la interacció dels components amb la plataforma 1C:Enterprise, que ha de ser implementada pel desenvolupador.

Les possibilitats que s'obren en utilitzar components externs són molt àmplies. Podeu implementar la interacció mitjançant un protocol d'intercanvi de dades específic amb dispositius i sistemes externs, incorporar algorismes específics per processar dades i formats de dades, etc.

Mecanismes d'integració obsolets

La plataforma proporciona mecanismes d'integració que no es recomana utilitzar en noves solucions; es deixen per motius de retrocompatibilitat, i també per si l'altra part no pot treballar amb protocols més moderns. Un d'ells està treballant amb fitxers en format DBF (admesos en l'idioma integrat mitjançant l'objecte XBase).

Un altre mecanisme d'integració heretat és l'ús de la tecnologia COM (només disponible a la plataforma Windows). La plataforma 1C:Enterprise proporciona dos mètodes d'integració per a Windows amb tecnologia COM: servidor d'automatització i connexió externa. Són molt semblants, però una de les diferències fonamentals és que en el cas del servidor Automation, es llança una aplicació client 1C:Enterprise 8 completa i, en el cas d'una connexió externa, una COM en procés relativament petita. s'inicia el servidor. És a dir, si treballeu a través del servidor d'Automatització, podeu utilitzar la funcionalitat de l'aplicació client i realitzar accions semblants a les accions interactives de l'usuari. Quan utilitzeu una connexió externa, només podeu utilitzar funcions de lògica empresarial i es poden executar tant al costat del client de la connexió, on es crea un servidor COM en procés, com podeu trucar a la lògica empresarial al servidor 1C:Enterprise. costat.

La tecnologia COM també es pot utilitzar per accedir a sistemes externs des del codi d'aplicació a la plataforma 1C:Enterprise. En aquest cas, l'aplicació 1C actua com a client COM. Però cal recordar que aquests mecanismes només funcionaran si el servidor 1C funciona en un entorn Windows.

Mecanismes d'integració implementats en configuracions estàndard

Format de dades empresarials

Mètodes d'integració amb 1C
En una sèrie de configuracions 1C (llista a continuació), basant-se en el mecanisme d'intercanvi de dades de la plataforma descrit anteriorment, s'implementa un mecanisme ja preparat per intercanviar dades amb aplicacions externes, que no requereix canviar el codi font de les configuracions (preparació per a les dades). l'intercanvi es fa a la configuració de les solucions d'aplicació):

  • "1C:ERP Enterprise Management 2.0"
  • "Automatització complexa 2"
  • "Comptabilitat de l'empresa", edició 3.0
  • "Comptabilització d'una empresa CORP", edició 3.0
  • "Retail", edició 2.0
  • "Gestió bàsica del comerç", edició 11
  • Gestió comercial, edició 11
  • “Corp de gestió de salaris i personal”, edició 3

El format utilitzat per a l'intercanvi de dades és EnterpriseData, basat en XML. El format està orientat al negoci: les estructures de dades que s'hi descriuen corresponen a entitats comercials (documents i elements de directori) presentades en programes 1C, per exemple: acte de finalització, ordre de recepció d'efectiu, contrapart, article, etc.

L'intercanvi de dades entre l'aplicació 1C i una aplicació de tercers es pot produir:

  • mitjançant un directori de fitxers dedicat
  • mitjançant el directori FTP
  • mitjançant un servei web desplegat al costat de l'aplicació 1C. El fitxer de dades es passa com a paràmetre als mètodes web
  • per correu electrònic

En el cas d'intercanvi mitjançant un servei web, una aplicació de tercers iniciarà una sessió d'intercanvi de dades trucant als mètodes web corresponents de l'aplicació 1C. En altres casos, l'iniciador de la sessió d'intercanvi serà l'aplicació 1C (col·locant el fitxer de dades al directori corresponent o enviant el fitxer de dades a l'adreça de correu electrònic configurada).
També al costat 1C podeu configurar la freqüència amb què es produirà la sincronització (per a opcions amb intercanvi de fitxers a través d'un directori i correu electrònic):

  • segons l'horari (amb una freqüència especificada)
  • manualment; l'usuari haurà d'iniciar manualment la sincronització cada vegada que ho necessiti

Reconeixement dels missatges

Les aplicacions 1C conserven registres dels missatges de sincronització enviats i rebuts i esperen el mateix d'aplicacions de tercers. Això us permet utilitzar el mecanisme de numeració de missatges descrit anteriorment a la secció "Mecanisme d'intercanvi de dades".

Durant la sincronització, les aplicacions 1C només transmeten informació sobre els canvis que s'han produït amb les entitats empresarials des de l'última sincronització (per minimitzar la quantitat d'informació transferida). Durant la primera sincronització, l'aplicació 1C carregarà totes les entitats comercials (per exemple, articles del llibre de referència d'elements) en format EnterpriseData en un fitxer XML (ja que són "nous" per a l'aplicació externa). L'aplicació de tercers ha de processar la informació del fitxer XML rebut de l'1C i, durant la següent sessió de sincronització, col·locar en el fitxer enviat a 1C, en una secció especial XML, la informació que el missatge de l'1C amb un número determinat ha estat correctament. rebut. El missatge de recepció és un senyal a l'aplicació 1C que totes les entitats empresarials han estat processades amb èxit per l'aplicació externa i que ja no cal transmetre informació sobre elles. A més del rebut, un fitxer XML d'una aplicació de tercers també pot contenir dades per a la sincronització de l'aplicació (per exemple, documents per a la venda de béns i serveis).

Després de rebre el missatge de recepció, l'aplicació 1C marca tots els canvis transmesos al missatge anterior com a sincronitzats correctament. Només els canvis no sincronitzats a les entitats empresarials (creació d'entitats noves, canvi i eliminació de les existents) s'enviaran a l'aplicació externa durant la propera sessió de sincronització.

Mètodes d'integració amb 1C
Quan es transfereixen dades d'una aplicació externa a l'aplicació 1C, la imatge s'inverteix. L'aplicació externa ha d'omplir la secció de rebut del fitxer XML en conseqüència i col·locar les dades comercials per a la seva sincronització en el format EnterpriseData.

Mètodes d'integració amb 1C

Intercanvi de dades simplificat sense encaixada de mans

Per als casos d'integració senzilla, quan només n'hi ha prou amb transferir informació d'una aplicació de tercers a l'aplicació 1C i la transferència inversa de dades de l'aplicació 1C a una aplicació de tercers no és necessària (per exemple, la integració d'una aplicació en línia). botiga que transfereix informació de vendes a 1C: Comptabilitat), hi ha una opció simplificada de treballar mitjançant un servei web (sense reconeixement), que no requereix configuració al costat de l'aplicació 1C.

Solucions d'integració personalitzades

Hi ha una solució estàndard "1C: Conversió de dades", que utilitza mecanismes de plataforma per convertir i intercanviar dades entre configuracions estàndard 1C, però també es pot utilitzar per a la integració amb aplicacions de tercers.

Integració amb solucions bancàries

Patró "Banc del client", desenvolupat per especialistes d'1C fa més de 10 anys, s'ha convertit en un estàndard de la indústria a Rússia. El següent pas en aquesta direcció és la tecnologia DirectBank, que permet enviar documents de pagament al banc i rebre extractes del banc directament des dels programes del sistema 1C:Enterprise prement un botó del programa 1C; no requereix instal·lar i executar programes addicionals a l'ordinador client.

També hi ha estàndard per a l'intercanvi de dades en projectes salarials.

Un altre

Val la pena esmentar protocol d'intercanvi entre el sistema 1C:Enterprise i el lloc web, estàndard d'intercanvi d'informació comercial CommerceML (desenvolupat conjuntament amb Microsoft, Intel, Price.ru i altres empreses), estàndard per a l'intercanvi de dades per adquirir transaccions.

Font: www.habr.com

Afegeix comentari