Métodos de integración con 1C

Cales son os requisitos máis importantes para as aplicacións empresariais? Algunhas das tarefas máis importantes son as seguintes:

  • Facilidade para cambiar/adaptar a lóxica da aplicación ás tarefas empresariais cambiantes.
  • Fácil integración con outras aplicacións.

Como se resolve a primeira tarefa en 1C describiuse brevemente na sección "Personalización e soporte". Este artigo; Volveremos sobre este interesante tema nun próximo artigo. Hoxe falaremos da segunda tarefa, a integración.

Tarefas de integración

As tarefas de integración poden ser diferentes. Para resolver algúns problemas, é suficiente un simple intercambio de datos interactivo, por exemplo, para transferir unha lista de empregados a un banco para a emisión de tarxetas plásticas salariais. Para tarefas máis complexas, pode ser necesario un intercambio de datos totalmente automatizado, posiblemente con referencia á lóxica empresarial dun sistema externo. Hai tarefas de carácter especializado, como a integración con equipos externos (por exemplo, equipos de venda polo miúdo, escáneres móbiles, etc.) ou con sistemas legados ou moi especializados (por exemplo, con sistemas de recoñecemento de etiquetas RFID). É moi importante seleccionar o mecanismo de integración máis axeitado para cada tarefa.

Opcións de integración con 1C

Existen diferentes enfoques para implementar a integración con aplicacións 1C; cal elixir depende dos requisitos da tarefa.

  1. Baseado na implementación mecanismos de integraciónproporcionada pola plataforma, a súa propia API especializada no lado da aplicación 1C (por exemplo, un conxunto de servizos web ou HTTP que chamarán a aplicacións de terceiros para intercambiar datos coa aplicación 1C). A vantaxe deste enfoque é a resistencia da API aos cambios na implementación no lado da aplicación 1C. A peculiaridade do enfoque é que é necesario cambiar o código fonte dunha solución 1C estándar, o que pode requirir esforzo ao combinar códigos fonte ao pasar a unha nova versión da configuración. Neste caso, unha nova funcionalidade progresiva pode vir ao rescate: extensións de configuración. As extensións son, en esencia, un mecanismo de complementos que lle permite crear adicións ás solucións de aplicacións sen cambiar as propias solucións da aplicación. Mover a API de integración á extensión de configuración permitirache evitar dificultades ao combinar configuracións ao pasar a unha nova versión dunha solución estándar.
  2. Usando mecanismos de integración de plataformas que proporcionan acceso externo ao modelo de obxectos da aplicación e non requiren modificación da aplicación nin creación dunha extensión. A vantaxe deste enfoque é que non é necesario cambiar a aplicación 1C. Menos: se se mellorou a aplicación 1C, é posible que se precisen melloras na aplicación integrada. Un exemplo deste enfoque é o uso do protocolo OData para a integración, implementado no lado da plataforma 1C:Enterprise (máis información a continuación).
  3. Uso de protocolos de aplicación preparados e implementados en solucións estándar 1C. Moitas solucións estándar de 1C e socios implementan os seus propios protocolos de aplicación, enfocados a tarefas específicas, baseados nos mecanismos de integración proporcionados pola plataforma. Ao usar estes mecanismos, non hai necesidade de escribir código no lado da aplicación 1C, porque Usamos as capacidades estándar da solución da aplicación. No lado da aplicación 1C, só necesitamos facer determinadas opcións.

Mecanismos de integración na plataforma 1C:Enterprise

Importar/exportar ficheiros

Supoñamos que estamos ante a tarefa de intercambio de datos bidireccional entre unha aplicación 1C e unha aplicación arbitraria. Por exemplo, necesitamos sincronizar unha lista de produtos (directorio de nomenclatura) entre a aplicación 1C e unha aplicación arbitraria.

Métodos de integración con 1C
Para solucionar este problema, pode escribir unha extensión que descargue o directorio de nomenclatura nun ficheiro dun determinado formato (texto, XML, JSON, ...) e poida ler este formato.

A plataforma implementa un mecanismo para serializar obxectos de aplicación en XML tanto directamente, a través dos métodos de contexto global WriteXML/ReadXML, como utilizando o obxecto auxiliar XDTO (XML Data Transfer Objects).

Calquera obxecto do sistema 1C:Enterprise pódese serializar nunha representación XML e viceversa.

Esta función devolverá unha representación XML do obxecto:

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

Así se verá exportando o directorio de nomenclatura a XML usando XDTO:

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

Simplemente modificando o código, exportamos o directorio a JSON. Os produtos escribiranse nunha matriz; Para variedade, aquí está a versión en inglés da sintaxe:

&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

Despois só queda transferir os datos ao consumidor final. A plataforma 1C:Enterprise admite os principais protocolos de Internet HTTP, FTP, POP3, SMTP, IMAP, incluíndo as súas versións seguras. Tamén pode utilizar HTTP e/ou servizos web para transferir datos.

HTTP e servizos web

Métodos de integración con 1C

As aplicacións 1C poden implementar os seus propios servizos HTTP e web, así como chamar a HTTP e servizos web implementados por aplicacións de terceiros.

Interface REST e protocolo OData

A partir da versión 8.3.5, a plataforma 1C:Enterprise pode automaticamente crear unha interface REST para toda a solución da aplicación. Calquera obxecto de configuración (directorio, documento, rexistro de información, etc.) pode estar dispoñible para recibir e modificar datos a través da interface REST. A plataforma utiliza o protocolo como protocolo de acceso OData versión 3.0. A publicación dos servizos OData realízase desde o menú Configurador “Administración -> Publicación nun servidor web”, a caixa de verificación “Publicar interface OData estándar” debe estar marcada. Admítense os formatos Atom/XML e JSON. Despois de que a solución da aplicación se publique no servidor web, os sistemas de terceiros poden acceder a ela a través da interface REST mediante solicitudes HTTP. Para traballar coa aplicación 1C a través do protocolo OData, non é necesaria a programación do lado 1C.

Entón, un URL como http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура devolveranos o contido do catálogo de nomenclatura en formato XML, unha colección de elementos de entrada (o título da mensaxe omítese por motivos de brevedade):

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

Engadindo a cadea “?$format=application/json” ao URL, obtemos o contido do catálogo de nomenclatura en formato JSON (URL do formulario 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 кВт, режимы работы: тепло/холод"
}, …

Fontes de datos externas

Métodos de integración con 1C
Nalgúns casos, o intercambio de datos a través fontes de datos externas pode ser a mellor solución. As fontes de datos externas son un obxecto de configuración de aplicacións 1C que che permite interactuar con calquera base de datos compatible con ODBC, tanto para ler como para escribir. As fontes de datos externas están dispoñibles tanto en Windows como en Linux.

Mecanismo de intercambio de datos

Mecanismo de intercambio de datos está pensado tanto para crear sistemas distribuídos xeograficamente baseados en 1C:Enterprise, como para organizar o intercambio de datos con outros sistemas de información non baseados en 1C:Enterprise.

Este mecanismo utilízase activamente nas implementacións 1C, e a gama de tarefas resoltas coa súa axuda é moi ampla. Isto inclúe o intercambio de datos entre as aplicacións 1C instaladas nas sucursais da organización e o intercambio entre a aplicación 1C e o sitio web da tenda en liña, así como o intercambio de datos entre a aplicación do servidor 1C e o cliente móbil (creado mediante a plataforma móbil 1C:Enterprise), e moito máis. máis.

Un dos conceptos clave no mecanismo de intercambio de datos é o plan de intercambio. Un plan de intercambio é un tipo especial de obxecto da plataforma de aplicacións 1C, que determina, en particular, a composición dos datos que participarán no intercambio (que directorios, documentos, rexistros, etc.). O plan de intercambio tamén contén información sobre os participantes do intercambio (os chamados nodos de intercambio).
O segundo compoñente do mecanismo de intercambio de datos é o mecanismo de rexistro de cambios. Este mecanismo supervisa automaticamente o sistema para detectar cambios nos datos que deben transferirse aos usuarios finais como parte do plan de intercambio. Usando este mecanismo, a plataforma rastrexa os cambios que se produciron desde a última sincronización e permítelle minimizar a cantidade de datos transferidos durante a seguinte sesión de sincronización.

O intercambio de datos prodúcese mediante mensaxes XML dunha determinada estrutura. A mensaxe contén datos que cambiaron desde a última sincronización co nodo e algunha información de servizo. A estrutura da mensaxe admite a numeración das mensaxes e permítelle recibir a confirmación do nodo destinatario de que se recibiron mensaxes. Tal confirmación está contida en cada mensaxe procedente do nodo receptor, en forma do número da última mensaxe recibida. A numeración de mensaxes permite á plataforma comprender que datos xa se transmitiron correctamente ao nodo receptor e evitar a retransmisión transmitindo só os datos que cambiaron desde que o nodo emisor recibiu a última mensaxe cun recibo dos datos recibidos polo nodo receptor. Este esquema operativo garante a entrega garantida mesmo con canles de transmisión pouco fiables e perda de mensaxes.

Compoñentes externos

En certos casos, á hora de resolver problemas de integración, hai que facer fronte a requisitos específicos, por exemplo, protocolos de interacción, formatos de datos, que non están previstos na plataforma 1C:Enterprise. Para tal variedade de tarefas, a plataforma ofrece tecnoloxía de compoñentes externos, que che permite crear módulos enchufables de forma dinámica que amplían a funcionalidade de 1C:Enterprise.

Un exemplo típico dunha tarefa con requisitos similares é a integración dunha solución de aplicación 1C con equipos de venda polo miúdo, que van desde básculas ata caixas rexistradoras e escáneres de códigos de barras. Os compoñentes externos pódense conectar tanto no lado do servidor 1C:Enterprise como no lado do cliente (incluíndo, pero non limitado a, o cliente web, así como próxima versión da plataforma móbil 1C: Empresa). A tecnoloxía de compoñentes externos proporciona unha interface de software (C++) bastante sinxela e comprensible para a interacción de compoñentes coa plataforma 1C:Enterprise, que debe ser implementada polo programador.

As posibilidades que se abren ao utilizar compoñentes externos son moi amplas. Pode implementar a interacción mediante un protocolo de intercambio de datos específico con dispositivos e sistemas externos, crear algoritmos específicos para procesar datos e formatos de datos, etc.

Mecanismos de integración desactualizados

A plataforma ofrece mecanismos de integración que non se recomendan para o seu uso en novas solucións; déixanse por razóns de retrocompatibilidade, e tamén no caso de que a outra parte non poida traballar con protocolos máis modernos. Un deles está a traballar con ficheiros en formato DBF (soportado na linguaxe incorporada mediante o obxecto XBase).

Outro mecanismo de integración herdado é o uso da tecnoloxía COM (só dispoñible na plataforma Windows). A plataforma 1C:Enterprise ofrece dous métodos de integración para Windows mediante tecnoloxía COM: servidor de automatización e conexión externa. Son moi similares, pero unha das diferenzas fundamentais é que, no caso do servidor Automation, lánzase unha aplicación cliente 1C:Enterprise 8 completa e, no caso dunha conexión externa, un COM en proceso relativamente pequeno. lánzase o servidor. É dicir, se traballa a través do servidor de Automatización, pode utilizar a funcionalidade da aplicación cliente e realizar accións similares ás accións interactivas do usuario. Cando se utiliza unha conexión externa, só pode usar funcións de lóxica empresarial, que poden executarse tanto no lado do cliente da conexión, onde se crea un servidor COM en proceso, como pode chamar á lóxica empresarial no servidor 1C:Enterprise. lado.

A tecnoloxía COM tamén se pode usar para acceder a sistemas externos desde o código da aplicación na plataforma 1C:Enterprise. Neste caso, a aplicación 1C actúa como cliente COM. Pero hai que lembrar que estes mecanismos só funcionarán se o servidor 1C funciona nun ambiente Windows.

Mecanismos de integración implementados en configuracións estándar

Formato de datos empresariales

Métodos de integración con 1C
Nunha serie de configuracións 1C (lista a continuación), baseándose no mecanismo de intercambio de datos da plataforma descrito anteriormente, implícase un mecanismo preparado para o intercambio de datos con aplicacións externas, que non require cambiar o código fonte das configuracións (preparación para os datos). o intercambio realízase na configuración das solucións da aplicación):

  • "1C:ERP Enterprise Management 2.0"
  • "Automatización complexa 2"
  • "Contabilidade empresarial", edición 3.0
  • "Contabilidade dunha empresa CORP", edición 3.0
  • "Retail", edición 2.0
  • "Xestión básica do comercio", edición 11
  • Gestión Comercial, Edición 11
  • “Corp de xestión de salarios e persoal”, edición 3

O formato utilizado para o intercambio de datos é EnterpriseData, baseado en XML. O formato está orientado ao negocio: as estruturas de datos descritas nel corresponden a entidades comerciais (documentos e elementos de directorio) presentadas en programas 1C, por exemplo: acto de finalización, orde de recepción de efectivo, contraparte, artigo, etc.

O intercambio de datos entre a aplicación 1C e unha aplicación de terceiros pode producirse:

  • mediante un directorio de ficheiros dedicado
  • a través do directorio FTP
  • a través dun servizo web despregado no lado da aplicación 1C. O ficheiro de datos pásase como parámetro aos métodos web
  • vía correo electrónico

No caso de intercambio a través dun servizo web, unha aplicación de terceiros iniciará unha sesión de intercambio de datos chamando aos métodos web correspondentes da aplicación 1C. Noutros casos, o iniciador da sesión de intercambio será a aplicación 1C (colocando o ficheiro de datos no directorio correspondente ou enviando o ficheiro de datos ao enderezo de correo electrónico configurado).
Tamén no lado 1C pode configurar a frecuencia coa que se producirá a sincronización (para opcións con intercambio de ficheiros a través dun directorio e correo electrónico):

  • segundo o horario (cunha frecuencia especificada)
  • manualmente; o usuario terá que iniciar manualmente a sincronización cada vez que o necesite

Recoñecemento de mensaxes

As aplicacións 1C gardan rexistros das mensaxes de sincronización enviadas e recibidas e esperan o mesmo das aplicacións de terceiros. Isto permítelle utilizar o mecanismo de numeración de mensaxes descrito anteriormente na sección "Mecanismo de intercambio de datos".

Durante a sincronización, as aplicacións 1C transmiten só información sobre os cambios que se produciron nas entidades comerciais desde a última sincronización (para minimizar a cantidade de información transferida). Durante a primeira sincronización, a aplicación 1C cargará todas as entidades empresariais (por exemplo, elementos do libro de referencia do artigo) no formato EnterpriseData nun ficheiro XML (xa que son "novos" para a aplicación externa). A aplicación de terceiros debe procesar a información do ficheiro XML recibido de 1C e, durante a próxima sesión de sincronización, colocar no ficheiro enviado a 1C, nunha sección XML especial, a información de que a mensaxe de 1C cun número determinado foi satisfactoriamente recibido. A mensaxe de recibo é un sinal para a aplicación 1C de que todas as entidades comerciais foron procesadas con éxito pola aplicación externa e xa non é necesario transmitir información sobre elas. Ademais do recibo, un ficheiro XML dunha aplicación de terceiros tamén pode conter datos para a sincronización pola aplicación (por exemplo, documentos para a venda de bens e servizos).

Despois de recibir a mensaxe de recibo, a aplicación 1C marca todos os cambios transmitidos na mensaxe anterior como sincronizados correctamente. Só os cambios non sincronizados nas entidades empresariais (creando novas entidades, cambiando e eliminando as existentes) enviaranse á aplicación externa durante a próxima sesión de sincronización.

Métodos de integración con 1C
Ao transferir datos dunha aplicación externa á aplicación 1C, a imaxe inverte. A aplicación externa debe cubrir a sección de recibo do ficheiro XML en consecuencia e colocar os datos empresariais para a súa sincronización no formato EnterpriseData.

Métodos de integración con 1C

Intercambio de datos simplificado sen apretón de mans

Para os casos de integración sinxela, cando só basta con transferir información dunha aplicación de terceiros á aplicación 1C e non é necesaria a transferencia inversa de datos desde a aplicación 1C a unha aplicación de terceiros (por exemplo, a integración dunha aplicación en liña). tenda que transfire a información de vendas a 1C: Contabilidade), existe unha opción simplificada de traballar a través dun servizo web (sen recoñecemento), que non precisa de configuración no lateral da aplicación 1C.

Solucións de integración personalizadas

Existe unha solución estándar "1C: Conversión de datos", que utiliza mecanismos de plataforma para converter e intercambiar datos entre configuracións estándar 1C, pero tamén se pode usar para a integración con aplicacións de terceiros.

Integración con solucións bancarias

Estándar "Banco cliente", desenvolvido por especialistas en 1C hai máis de 10 anos, converteuse nun estándar da industria en Rusia. O seguinte paso nesta dirección é a tecnoloxía DirectBank, que permite enviar documentos de pagamento ao banco e recibir extractos do banco directamente desde os programas do sistema 1C:Enterprise premendo un botón do programa 1C; non require instalar e executar programas adicionais no ordenador cliente.

Hai tamén estándar para o intercambio de datos en proxectos salariais.

Outro

Digno de mención protocolo de intercambio entre o sistema 1C:Enterprise e o sitio web, estándar de intercambio de información comercial CommerceML (desenvolvido conxuntamente con Microsoft, Intel, Price.ru e outras empresas), estándar para o intercambio de datos para adquirir transaccións.

Fonte: www.habr.com

Engadir un comentario