Métodos de integración con 1C.

¿Cuáles son los requisitos más importantes para las aplicaciones empresariales? Algunas de las tareas más importantes son las siguientes:

  • Facilidad para cambiar/adaptar la lógica de la aplicación a las tareas comerciales cambiantes.
  • Fácil integración con otras aplicaciones.

En la sección "Personalización y soporte" se describió brevemente cómo se resuelve la primera tarea en 1C. este artículo; Volveremos a este interesante tema en un artículo futuro. Hoy hablaremos de la segunda tarea, la integración.

Tareas de integración

Las tareas de integración pueden ser diferentes. Para resolver algunos problemas, basta con un simple intercambio de datos interactivo, por ejemplo, transferir una lista de empleados a un banco para emitir tarjetas plásticas de salario. Para tareas más complejas, puede ser necesario un intercambio de datos totalmente automatizado, posiblemente con referencia a la lógica empresarial de un sistema externo. Hay tareas que son de naturaleza especializada, como la integración con equipos externos (por ejemplo, equipos minoristas, escáneres móviles, etc.) o con sistemas heredados o altamente especializados (por ejemplo, con sistemas de reconocimiento de etiquetas RFID). Es extremadamente importante seleccionar el mecanismo de integración más adecuado para cada tarea.

Opciones de integración con 1C

Existen diferentes enfoques para implementar la integración con aplicaciones 1C, cuál elegir depende de los requisitos de la tarea.

  1. Basado en implementación mecanismos de integraciónproporcionada por la plataforma, su propia API especializada en el lado de la aplicación 1C (por ejemplo, un conjunto de servicios web o HTTP que llamarán a aplicaciones de terceros para intercambiar datos con la aplicación 1C). La ventaja de este enfoque es la resistencia de la API a los cambios en la implementación en el lado de la aplicación 1C. La peculiaridad del enfoque es que es necesario cambiar el código fuente de una solución estándar 1C, lo que potencialmente puede requerir esfuerzo al fusionar los códigos fuente al pasar a una nueva versión de la configuración. En este caso, una nueva funcionalidad progresiva puede acudir al rescate: extensiones de configuración. Las extensiones son, en esencia, un mecanismo de complemento que le permite crear adiciones a las soluciones de la aplicación sin cambiar las soluciones de la aplicación en sí. Mover la API de integración a la extensión de configuración le permitirá evitar dificultades al fusionar configuraciones al pasar a una nueva versión de una solución estándar.
  2. Utilizar mecanismos de integración de plataforma que proporcionen acceso externo al modelo de objetos de la aplicación y no requieran modificación de la aplicación ni creación de una extensión. La ventaja de este enfoque es que no es necesario cambiar la aplicación 1C. Menos: si se ha mejorado la aplicación 1C, es posible que se requieran mejoras en la aplicación integrada. Un ejemplo de este enfoque es el uso del protocolo OData para la integración, implementado en el lado de la plataforma 1C:Enterprise (más sobre esto a continuación).
  3. Uso de protocolos de aplicación listos para usar implementados en soluciones estándar 1C. Muchas soluciones estándar de 1C y sus socios implementan sus propios protocolos de aplicación, enfocados en tareas específicas, basados ​​en los mecanismos de integración proporcionados por la plataforma. Al utilizar estos mecanismos, no es necesario escribir código en el lado de la aplicación 1C, porque Utilizamos las capacidades estándar de la solución de la aplicación. En el lado de la aplicación 1C, solo necesitamos realizar ciertas configuraciones.

Mecanismos de integración en la plataforma 1C:Enterprise

Importar/exportar archivos

Supongamos que nos enfrentamos a la tarea del intercambio de datos bidireccional entre una aplicación 1C y una aplicación arbitraria. Por ejemplo, necesitamos sincronizar una lista de productos (directorio de nomenclatura) entre la aplicación 1C y una aplicación arbitraria.

Métodos de integración con 1C.
Para resolver este problema, puede escribir una extensión que descargue el directorio de Nomenclatura en un archivo de un formato determinado (texto, XML, JSON, ...) y pueda leer este formato.

La plataforma implementa un mecanismo para serializar objetos de aplicaciones en XML directamente, a través de los métodos de contexto global WriteXML/ReadXML, y utilizando el objeto auxiliar XDTO (XML Data Transfer Objects).

Cualquier objeto del sistema 1C:Enterprise se puede serializar en una representación XML y viceversa.

Esta función devolverá una representación XML del objeto:

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

Así es como se verá exportar el 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 el código exportamos el directorio a JSON. Los productos se escribirán en una matriz; Para variar, aquí está la versión en inglés de la sintaxis:

&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

Luego solo queda transferir los datos al consumidor final. La plataforma 1C:Enterprise soporta los principales protocolos de Internet HTTP, FTP, POP3, SMTP, IMAP, incluidas sus versiones seguras. También puede utilizar HTTP y/o servicios web para transferir datos.

HTTP y servicios web

Métodos de integración con 1C.

Las aplicaciones 1C pueden implementar sus propios servicios web y HTTP, así como llamar a servicios web y HTTP implementados por aplicaciones de terceros.

Interfaz REST y protocolo OData

A partir de la versión 8.3.5, la plataforma 1C:Enterprise puede automáticamente crear una interfaz REST para toda la solución de aplicación. Cualquier objeto de configuración (directorio, documento, registro de información, etc.) puede estar disponible para recibir y modificar datos a través de la interfaz REST. La plataforma utiliza el protocolo como protocolo de acceso. OData versión 3.0. La publicación de los servicios OData se realiza desde el menú del Configurador “Administración -> Publicar en un servidor web”, se debe marcar la casilla “Publicar interfaz OData estándar”. Se admiten los formatos Atom/XML y JSON. Una vez publicada la solución de la aplicación en el servidor web, los sistemas de terceros pueden acceder a ella a través de la interfaz REST mediante solicitudes HTTP. Para trabajar con la aplicación 1C a través del protocolo OData, no es necesaria la programación en el lado 1C.

Entonces, una URL como http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура nos devolverá el contenido del catálogo de Nomenclatura en formato XML, una colección de elementos de entrada (el título del mensaje se omite por motivos de brevedad):

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

Al agregar la cadena “?$format=application/json” a la URL, obtenemos el contenido del catálogo de Nomenclatura en formato JSON (URL de la forma 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 кВт, режимы работы: тепло/холод"
}, …

Fuentes de datos externas

Métodos de integración con 1C.
En algunos casos, el intercambio de datos a través de fuentes de datos externas puede ser la mejor solución. Las fuentes de datos externas son un objeto de configuración de la aplicación 1C que le permite interactuar con cualquier base de datos compatible con ODBC, tanto para lectura como para escritura. Las fuentes de datos externas están disponibles tanto en Windows como en Linux.

Mecanismo de intercambio de datos

Mecanismo de intercambio de datos está destinado tanto a crear sistemas distribuidos geográficamente basados ​​en 1C:Enterprise como a organizar el intercambio de datos con otros sistemas de información no basados ​​en 1C:Enterprise.

Este mecanismo se utiliza activamente en las implementaciones de 1C y la gama de tareas que se resuelven con su ayuda es muy amplia. Esto incluye el intercambio de datos entre las aplicaciones 1C instaladas en las sucursales de la organización, el intercambio entre la aplicación 1C y el sitio web de la tienda en línea, y el intercambio de datos entre la aplicación del servidor 1C y el cliente móvil (creado usando la plataforma móvil 1C:Enterprise), y mucho más.

Uno de los conceptos clave en el mecanismo de intercambio de datos es el plan de intercambio. Un plan de intercambio es un tipo especial de objeto de la plataforma de aplicaciones 1C, que determina, en particular, la composición de los datos que participarán en el intercambio (qué directorios, documentos, registros, etc.). El plan de intercambio también contiene información sobre los participantes del intercambio (los llamados nodos de intercambio).
El segundo componente del mecanismo de intercambio de datos es el mecanismo de registro de cambios. Este mecanismo monitorea automáticamente el sistema para detectar cambios en los datos que deben transferirse a los usuarios finales como parte del plan de intercambio. Usando este mecanismo, la plataforma rastrea los cambios que han ocurrido desde la última sincronización y le permite minimizar la cantidad de datos transferidos durante la siguiente sesión de sincronización.

El intercambio de datos se produce mediante mensajes XML de una determinada estructura. El mensaje contiene datos que han cambiado desde la última sincronización con el nodo y cierta información del servicio. La estructura del mensaje admite la numeración de mensajes y le permite recibir confirmación del nodo destinatario de que se han recibido los mensajes. Esta confirmación está contenida en cada mensaje procedente del nodo receptor, en forma del número del último mensaje recibido. La numeración de mensajes permite a la plataforma comprender qué datos ya se han transmitido exitosamente al nodo receptor y evitar la retransmisión transmitiendo solo los datos que han cambiado desde que el nodo emisor recibió el último mensaje con un recibo de los datos recibidos por el nodo receptor. Este esquema operativo garantiza una entrega garantizada incluso con canales de transmisión poco confiables y pérdida de mensajes.

Componentes externos

En muchos casos, al resolver problemas de integración, hay que lidiar con requisitos específicos, por ejemplo, protocolos de interacción, formatos de datos, que no están previstos en la plataforma 1C:Enterprise. Para tal variedad de tareas, la plataforma proporciona tecnología de componentes externos, que le permite crear dinámicamente módulos complementarios que amplían la funcionalidad de 1C:Enterprise.

Un ejemplo típico de una tarea con requisitos similares sería la integración de una solución de aplicación 1C con equipos minoristas, desde básculas hasta cajas registradoras y lectores de códigos de barras. Los componentes externos se pueden conectar tanto en el lado del servidor 1C:Enterprise como en el lado del cliente (incluido, entre otros, el cliente web, así como próxima versión de la plataforma móvil 1C:Empresa). La tecnología de componentes externos proporciona una interfaz de software (C++) bastante simple y comprensible para la interacción de los componentes con la plataforma 1C:Enterprise, que debe ser implementada por el desarrollador.

Las posibilidades que se abren al utilizar componentes externos son muy amplias. Puede implementar la interacción utilizando un protocolo de intercambio de datos específico con dispositivos y sistemas externos, incorporar algoritmos específicos para procesar datos y formatos de datos, etc.

Mecanismos de integración obsoletos

La plataforma proporciona mecanismos de integración que no se recomiendan para su uso en nuevas soluciones; se dejan ahí por razones de compatibilidad con versiones anteriores y también en caso de que la otra parte no pueda trabajar con protocolos más modernos. Uno de ellos es trabajar con archivos en formato DBF (compatibles con el lenguaje integrado mediante el objeto XBase).

Otro mecanismo de integración heredado es el uso de tecnología COM (solo disponible en la plataforma Windows). La plataforma 1C:Enterprise proporciona dos métodos de integración para Windows utilizando tecnología COM: servidor de automatización y conexión externa. Son muy similares, pero una de las diferencias fundamentales es que en el caso del servidor de automatización, se inicia una aplicación cliente 1C:Enterprise 8 completa y, en el caso de una conexión externa, un COM en proceso relativamente pequeño. Se inicia el servidor. Es decir, si trabaja a través del servidor de automatización, puede utilizar la funcionalidad de la aplicación cliente y realizar acciones similares a las acciones interactivas del usuario. Cuando se utiliza una conexión externa, solo se pueden utilizar funciones de lógica empresarial y se pueden ejecutar tanto en el lado del cliente de la conexión, donde se crea un servidor COM en proceso, como se puede llamar a la lógica empresarial en el servidor 1C:Enterprise. lado.

La tecnología COM también se puede utilizar para acceder a sistemas externos desde el código de la aplicación en la plataforma 1C:Enterprise. En este caso, la aplicación 1C actúa como cliente COM. Pero conviene recordar que estos mecanismos solo funcionarán si el servidor 1C opera en un entorno Windows.

Mecanismos de integración implementados en configuraciones estándar.

Formato de datos empresariales

Métodos de integración con 1C.
En varias configuraciones de 1C (enumeradas a continuación), basadas en el mecanismo de intercambio de datos de la plataforma descrito anteriormente, se implementa un mecanismo listo para usar para intercambiar datos con aplicaciones externas, que no requiere cambiar el código fuente de las configuraciones (preparación para los datos El intercambio se realiza en la configuración de las soluciones de la aplicación):

  • "1C:ERP Gestión Empresarial 2.0"
  • "Automatización compleja 2"
  • "Contabilidad Empresarial", edición 3.0
  • "Contabilidad de una empresa CORP", edición 3.0
  • "Venta al por menor", edición 2.0
  • "Gestión Comercial Básica", edición 11
  • Gestión Comercial, Edición 11
  • “Gestión de sueldos y personal CORP”, edición 3

El formato utilizado para el intercambio de datos es Datos empresariales, basado en XML. El formato está orientado a los negocios: las estructuras de datos descritas en él corresponden a entidades comerciales (documentos y elementos de directorio) presentadas en los programas 1C, por ejemplo: acto de finalización, orden de recibo de efectivo, contraparte, artículo, etc.

El intercambio de datos entre la aplicación 1C y una aplicación de terceros puede ocurrir:

  • a través de un directorio de archivos dedicado
  • a través del directorio FTP
  • a través de un servicio web implementado en el lado de la aplicación 1C. El archivo de datos se pasa como parámetro a los métodos web.
  • vía correo electrónico

En el caso del intercambio a través de un servicio web, una aplicación de terceros iniciará una sesión de intercambio de datos llamando a los métodos web correspondientes de la aplicación 1C. En otros casos, el iniciador de la sesión de intercambio será la aplicación 1C (colocando el archivo de datos en el directorio apropiado o enviando el archivo de datos a la dirección de correo electrónico configurada).
También en el lado de 1C puede configurar la frecuencia con la que se producirá la sincronización (para opciones con intercambio de archivos a través de un directorio y correo electrónico):

  • según horario (con una frecuencia especificada)
  • a mano; el usuario tendrá que iniciar manualmente la sincronización cada vez que la necesite

Confirmar mensajes

Las aplicaciones 1C mantienen registros de los mensajes de sincronización enviados y recibidos y esperan lo mismo de aplicaciones de terceros. Esto le permite utilizar el mecanismo de numeración de mensajes descrito anteriormente en la sección "Mecanismo de intercambio de datos".

Durante la sincronización, las aplicaciones 1C transmiten solo información sobre los cambios que han ocurrido con las entidades comerciales desde la última sincronización (para minimizar la cantidad de información transferida). Durante la primera sincronización, la aplicación 1C cargará todas las entidades comerciales (por ejemplo, artículos del libro de referencia de artículos) en formato EnterpriseData en un archivo XML (ya que todas son "nuevas" para la aplicación externa). La aplicación de terceros debe procesar la información del archivo XML recibido de 1C y, durante la siguiente sesión de sincronización, colocar en el archivo enviado a 1C, en una sección XML especial, información de que el mensaje de 1C con un determinado número se envió correctamente. recibió. El mensaje de recibo es una señal para la aplicación 1C de que todas las entidades comerciales han sido procesadas con éxito por una aplicación externa y que ya no es necesario transmitir información sobre ellas. Además del recibo, un archivo XML de una aplicación de terceros también puede contener datos para la sincronización por parte de la aplicación (por ejemplo, documentos para la venta de bienes y servicios).

Después de recibir el mensaje de recibo, la aplicación 1C marca todos los cambios transmitidos en el mensaje anterior como sincronizados correctamente. Solo los cambios no sincronizados en entidades comerciales (creación de nuevas entidades, cambio y eliminación de entidades existentes) se enviarán a la aplicación externa durante la siguiente sesión de sincronización.

Métodos de integración con 1C.
Al transferir datos desde una aplicación externa a la aplicación 1C, la imagen se invierte. La aplicación externa debe completar la sección de recibo del archivo XML en consecuencia y colocar los datos comerciales para la sincronización por su parte en el formato EnterpriseData.

Métodos de integración con 1C.

Intercambio de datos simplificado sin protocolo de enlace

Para casos de integración simple, cuando es suficiente transferir solo información de una aplicación de terceros a la aplicación 1C y no se requiere la transferencia inversa de datos de la aplicación 1C a una aplicación de terceros (por ejemplo, integración de una aplicación en línea tienda que transfiere información de ventas a 1C: Contabilidad), existe una opción simplificada de trabajar a través de un servicio web (sin reconocimiento), que no requiere configuración en el lado de la aplicación 1C.

Soluciones de integración personalizadas

Existe una solución estándar "1C: Conversión de datos", que utiliza mecanismos de plataforma para convertir e intercambiar datos entre configuraciones estándar de 1C, pero también se puede utilizar para la integración con aplicaciones de terceros.

Integración con soluciones bancarias.

Estándar "Banco de clientes", desarrollado por especialistas de 1C hace más de 10 años, se ha convertido en realidad en un estándar de la industria en Rusia. El siguiente paso en esta dirección es la tecnología. Banco Directo, que le permite enviar documentos de pago al banco y recibir extractos del banco directamente desde los programas del sistema 1C:Enterprise presionando un botón en el programa 1C; no requiere instalar ni ejecutar programas adicionales en la computadora cliente.

Есть така estándar para el intercambio de datos en proyectos salariales.

otro

Vale la pena mencionar protocolo de intercambio entre el sistema 1C:Enterprise y el sitio web, estándar de intercambio de información comercial ComercioML (desarrollado conjuntamente con Microsoft, Intel, Price.ru y otras empresas), estándar para el intercambio de datos para la adquisición de transacciones.

Fuente: habr.com

Añadir un comentario