¿Cuáles son los requisitos más importantes para las aplicaciones empresariales? Algunas de las tareas más cruciales son las siguientes:
- Facilidad de modificación/adaptación de la lógica de funcionamiento de la aplicación a las cambiantes necesidades del negocio.
- Facilidad de integración con otras aplicaciones.
La forma en que se resuelve la primera tarea en 1C se describió brevemente en la sección "Personalización y soporte"; volveremos a este interesante tema en uno de los próximos artículos. Hoy, sin embargo, hablaremos de la segunda tarea, sobre la integración.
Tareas de integración
Las tareas de integración pueden ser diversas. Para algunas, basta con un intercambio de datos interactivo sencillo, por ejemplo, para enviar al banco una lista de empleados para la emisión de tarjetas de plástico de nómina. Para tareas más complejas, puede ser necesario un intercambio de datos completamente automatizado, posiblemente con la lógica de negocio de un sistema externo. Existen tareas de carácter especializado, como la integración con equipos externos (por ejemplo, equipos de ventas, escáneres móviles, etc.) o con sistemas heredados o altamente especializados (por ejemplo, con sistemas de reconocimiento de etiquetas RFID). Es extremadamente importante elegir el mecanismo de integración más adecuado para cada tarea.
Opciones de integración con 1C
Existen varios enfoques para implementar la integración con las aplicaciones de 1C; cuál elegir depende de los requisitos de la tarea.
- Implementación basada en , proporcionados por la plataforma, o su propia API especializada en el lado de la aplicación 1C (por ejemplo, un conjunto de servicios Web o HTTP que invoquen aplicaciones externas 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 del lado de la aplicación 1C. La particularidad de este enfoque es que se requiere modificar el código fuente de la solución estándar de 1C, lo que puede potencialmente requerir esfuerzos al fusionar los códigos fuente al actualizar a una nueva versión de la configuración. En este caso, puede ayudar la nueva funcionalidad progresiva - . Las extensiones son, en esencia, un mecanismo de plugins que permite crear complementos para soluciones de aplicación sin modificar las propias soluciones. Llevar la API de integración a la extensión de configuración evitará complicaciones al fusionar configuraciones al actualizar a una nueva versión de la solución estándar.
- El uso de mecanismos de integración de la plataforma que proporcionan acceso externo al modelo de objeto de la aplicación y no requieren modificaciones en la aplicación ni la creación de extensiones. La ventaja de este enfoque es que no es necesario cambiar la aplicación 1C. La desventaja es que si la aplicación 1C ha sido modificada, pueden ser necesarias adaptaciones en la aplicación a integrar. Un ejemplo de este enfoque es el uso del protocolo OData para la integración, implementado del lado de la plataforma 1C:Enterprise (más detalles a continuación).
- El uso de protocolos de aplicación estándar implementados en soluciones típicas de 1C. Muchas soluciones estándar de 1C y sus socios han implementado, sobre la base de los mecanismos de integración proporcionados por la plataforma, sus propios protocolos de aplicación orientados a tareas específicas. Al utilizar estos mecanismos, no es necesario escribir código en la aplicación 1C, ya que aprovechamos las capacidades estándar de la solución de aplicación. Solo necesitamos realizar ciertas configuraciones en la aplicación 1C.
Mecanismos de integración en la plataforma 1C:Enterprise
Importar/exportar archivos
Supongamos que tenemos la tarea de intercambio bidireccional de datos entre la aplicación 1C y una aplicación arbitraria. Por ejemplo, necesitamos sincronizar la lista de productos (catálogo de Nomenclatura) entre la aplicación 1C y una aplicación arbitraria.

Para resolver esta tarea, se puede escribir una extensión que exporte el catálogo de Nomenclatura a un archivo en un formato específico (texto, XML, JSON, …) y que sea capaz de leer ese formato.
La plataforma implementa un mecanismo de serialización de objetos de aplicación en XML tanto directamente, a través de los métodos del contexto global EscribirXML/LeerXML, como mediante un objeto auxiliar XDTO (XML Data Transfer Objects).
Cualquier objeto en el sistema 1C:Enterprise puede ser serializado a una representación XML y viceversa.
Esta función devolverá la representación del objeto en formato XML:
Función Objeto_En_XML(Objeto)
RegistroXML = Nuevo RegistroXML();
RegistroXML.EstablecerCadena();
EscribirXML(RegistroXML, Objeto);
Retornar RegistroXML.Cerrar();
FinFunción
Así es como se verá la exportación del diccionario Nomenclatura en XML utilizando XDTO:
&EnElServidor
Procedimiento ExportarXMLEnServidor()
NuevoSerializadorXDTO = SerializadorXDTO;
NuevoRegistroXML = Nuevo RegistroXML();
NuevoRegistroXML.AbrirArchivo("C:DatosNomenclatura.xml", "UTF-8");
NuevoRegistroXML.EscribirDeclaraciónXML();
NuevoRegistroXML.EscribirInicioElemento("DiccionarioNomenclatura");
Selección = Diccionarios.Nomenclatura.Seleccionar();
Mientras Selección.Siguiente() Hacer
ObjetoNomenclatura = Selección.ObtenerObjeto();
NuevoSerializadorXDTO.EscribirXML(NuevoRegistroXML, ObjetoNomenclatura, AsignaciónTipoXML.Explícita);
FinMientras;
NuevoRegistroXML.EscribirFinElemento();
NuevoRegistroXML.Cerrar();
FinProcedimiento
Mediante una sencilla modificación del código exportamos el diccionario a JSON. Los productos se registrarán en un array; para mayor variedad, presentaremos la versión en inglés del sintaxis:
&EnElServidor
Procedimiento ExportarJSONEnServidor()
NuevoSerializadorXDTO = SerializadorXDTO;
NuevoEscritorJSON = Nuevo EscritorJSON();
NuevoEscritorJSON.AbrirArchivo("C:DatosNomenclatura.json", "UTF-8");
NuevoEscritorJSON.EscribirInicioObjeto();
NuevoEscritorJSON.EscribirNombrePropiedad("DiccionarioNomenclatura");
NuevoEscritorJSON.EscribirInicioArray();
Selección = Catalogos.Nomenclatura.Seleccionar();
Mientras Selección.Siguiente() Hacer
ObjetoNomenclatura = Selección.ObtenerObjeto();
NuevoEscritorJSON.EscribirInicioObjeto();
NuevoEscritorJSON.EscribirNombrePropiedad("Nomenclatura");
NuevoSerializadorXDTO.EscribirJSON(NuevoEscritorJSON, ObjetoNomenclatura, AsignaciónTipoXML.Implícita);
NuevoEscritorJSON.EscribirFinObjeto();
FinMientras;
NuevoEscritorJSON.EscribirFinArray();
NuevoEscritorJSON.EscribirFinObjeto();
NuevoEscritorJSON.Cerrar();
FinProcedimiento
Luego solo quedará transmitir los datos al consumidor final. La plataforma 1C:Enterprise admite los principales protocolos de internet HTTP, FTP, POP3, SMTP, IMAP, incluyendo sus versiones seguras. También se pueden utilizar HTTP y/o servicios Web para la transmisión de datos.
Servicios HTTP y web

Las aplicaciones 1C pueden implementar sus servicios HTTP y web, así como invocar servicios HTTP y web 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 para toda la solución aplicada. Cualquier objeto de configuración (diccionario, documento, registro de información, etc.) puede hacerse accesible para obtener y modificar datos a través de la interfaz REST. La plataforma utiliza el protocolo versiones 3.0. La publicación de servicios OData se realiza desde el menú del Configurador «Administración -> Publicación en el servidor web», la casilla «Publicar interfaz estándar OData» debe estar marcada. Se admiten los formatos atom/XML y JSON. Una vez que la solución aplicada esté publicada en el servidor web, los sistemas externos pueden acceder a ella a través de la interfaz REST utilizando solicitudes HTTP. No se requiere programación en el lado de 1C para trabajar con la aplicación 1C a través del protocolo OData.
Así, una URL del tipo http:////odata/standard.odata/Catalog_Номенклатура nos devolverá el contenido del catálogo Номенклатура en formato XML — una colección de elementos entry (el encabezado del mensaje se ha omitido por brevedad):
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Condicionador Mitsubishi
Potencia 2,5 kW, modos de operación: calor/frío
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Al agregar a la URL la cadena «?$format=application/json», obtendremos el contenido del catálogo Номенклатура en formato JSON (una URL del tipo 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": "Condicionador Mitsubishi",
"Descripción": "Potencia 2,5 kW, modos de operación: calor/frío"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Condicionador Daikin",
"Descripción": "Potencia 3 kW, modos de operación: calor/frío"
}, …
Fuentes de datos externas

En algunos casos, el intercambio de datos a través de puede ser la solución óptima. Las fuentes de datos externas son un objeto de configuración de 1C que 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
destinado tanto a la creación de sistemas distribuidos geográficamente basados en 1C:Enterprise como a la organización del 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 el rango de tareas que se resuelven con su ayuda es bastante amplio. Esto incluye el intercambio de datos entre 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 de servidor 1C y el cliente móvil (creado con 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. El plan de intercambio es un tipo especial de objeto de la plataforma 1C que define, entre otras cosas, 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 supervisa automáticamente los cambios en los datos dentro del sistema que deben ser transmitidos a los consumidores finales en el marco del plan de intercambio. A través de este mecanismo, la plataforma rastrea los cambios ocurridos desde la última sincronización y permite minimizar la cantidad de datos transmitidos durante cada sesión de sincronización.
El intercambio de datos se realiza mediante mensajes XML de una estructura definida. El mensaje contiene datos que han cambiado desde la última sincronización con el nodo, así como cierta información de servicio. La estructura de los mensajes soporta la numeración de mensajes y permite recibir confirmaciones del nodo receptor sobre la recepción de los mensajes. Esta confirmación se incluye en cada mensaje que llega del nodo receptor, en forma del número del último mensaje recibido. La numeración de mensajes permite a la plataforma entender qué datos ya han sido enviados con éxito al nodo receptor y evitar la retransmisión, enviando solo los datos que han cambiado desde la recepción del último mensaje que contiene la confirmación de los datos recibidos por el nodo receptor. Con este esquema de trabajo, se garantiza la entrega incluso en canales de transmisión poco confiables y en caso de pérdida de mensajes.
Componentes externos
En algunos casos, al resolver tareas de integración, es necesario enfrentar requisitos específicos, como protocolos de interacción, formatos de datos con los que la plataforma 1C:Enterprise no está preparada para trabajar. Para este tipo de tareas, la plataforma prevé , que permite crear módulos de conexión dinámica que amplían la funcionalidad de 1C:Enterprise.
Un ejemplo típico de una tarea con tales requisitos puede ser la integración de una solución de aplicación de 1C con equipos comerciales, desde balanzas hasta cajas registradoras y escáneres de códigos de barras. Los componentes externos pueden ser conectados tanto en el lado del servidor de la 1C:Enterprise como en la parte del cliente (incluyendo, entre otros, el cliente web, así como 1C:Enterprise). La tecnología de componentes externos proporciona una interfaz de programación (C++) de interacción suficientemente simple y comprensible entre el componente y la plataforma 1C:Enterprise, que debe ser implementada por el desarrollador.
Las posibilidades que se abren al utilizar componentes externos son bastante amplias. Se puede implementar la interacción a través de un protocolo específico de intercambio de datos con dispositivos y sistemas externos, integrar algoritmos específicos de procesamiento de datos y formatos de datos, etc.
Mecanismos de integración obsoletos
En la plataforma hay mecanismos de integración que no se recomienda utilizar en nuevas soluciones; se han dejado por razones de compatibilidad hacia atrás y en caso de que otra parte no pueda trabajar con protocolos más modernos. Uno de ellos es trabajar con archivos del formato DBF (soportado en el lenguaje integrado mediante el objeto XBase).
Otro mecanismo de integración obsoleto es el uso de la tecnología COM (disponible solo en la plataforma Windows). La plataforma 1C:Enterprise ofrece dos formas de integración para Windows que utilizan la tecnología COM: el servidor de automatización y la 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 completa de 1C:Enterprise 8, mientras que en el caso de la conexión externa se inicia un relativamente pequeño servidor COM intra-proceso. Es decir, al trabajar a través del servidor de automatización, se puede utilizar la funcionalidad de la aplicación cliente, realizando acciones que son análogas a las acciones interactivas del usuario. Al usar una conexión externa, solo se pueden utilizar funciones de lógica empresarial, y estas se pueden ejecutar tanto en el lado cliente de la conexión, donde se crea el servidor COM intra-proceso, como invocar la lógica empresarial en el lado del servidor 1C:Enterprise.
La tecnología COM también se puede usar 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 es importante recordar que estos mecanismos funcionarán solo si el servidor 1C opera en un entorno Windows.
Mecanismos de integración implementados en configuraciones estándar
Formato EnterpriseData

En varias configuraciones de 1C (lista a continuación), se ha implementado un mecanismo listo para el intercambio de datos con aplicaciones externas, basado en el mecanismo de intercambio de datos de la plataforma descrito anteriormente, que no requiere modificaciones en el código fuente de las configuraciones (la preparación para el intercambio de datos se realiza en la configuración de las soluciones de aplicaciones):
- «1C:ERP Gestión de la empresa 2.0»
- «Automatización Completa 2»
- «Contabilidad de la empresa», edición 3.0
- «Contabilidad de la empresa CORP», edición 3.0
- «Minorista», edición 2.0
- «Gestión Comercial Básica», edición 11
- «Gestión Comercial», edición 11
- « Nómina y Gestión del Personal CORPORATIVO », edición 3
El formato utilizado para el intercambio de datos es , basado en XML. El formato está orientado a los negocios: las estructuras de datos descritas corresponden a entidades comerciales (documentos y elementos de catálogos) presentadas en los programas 1C, por ejemplo: acto de trabajos realizados, recibo de caja, contraparte, nomenclatura, etc.
El intercambio de datos entre la aplicación 1C y una aplicación externa puede realizarse:
- a través de un directorio de archivos dedicado
- a través de un directorio FTP
- a través de un servicio web, desplegado del lado de la aplicación 1C. El archivo con los datos se transmite como un parámetro de los métodos web
- a través de correo electrónico
En caso de un intercambio a través de un servicio web, la aplicación externa iniciará la sesión de intercambio de datos llamando a los métodos web correspondientes de la aplicación 1C. En otros casos, la aplicación 1C será la iniciadora de la sesión de intercambio (colocando el archivo de datos en el directorio correspondiente o enviando el archivo de datos a la dirección de correo configurada).
También en el lado de 1C se configura con qué frecuencia se realizará la sincronización (para las opciones de intercambio de archivos a través del directorio y correo electrónico):
- según un horario (con una frecuencia determinada)
- manualmente; el usuario deberá iniciar manualmente la sincronización cada vez que lo necesite
Confirmación de mensajes
Las aplicaciones 1C llevan un registro de los mensajes de sincronización enviados y recibidos y esperan lo mismo de las aplicaciones externas. Esto permite activar el mecanismo de numeración de mensajes, descrito anteriormente en la sección “Mecanismo de intercambio de datos”.
Las aplicaciones 1C, durante la sincronización, solo transmiten información sobre los cambios ocurridos en las entidades comerciales desde la última sincronización (para minimizar el volumen de información transmitida). Durante la primera sincronización, la aplicación 1C descargará todas las entidades comerciales (por ejemplo, los elementos del catálogo de productos) en un archivo XML en formato EnterpriseData (ya que todas son "nuevas" para la aplicación externa). La aplicación externa debe procesar la información del archivo XML recibido de 1C y, en la siguiente sesión de sincronización, incluir en el archivo enviado a 1C, en una sección especial de XML, información de que el mensaje de 1C con un número específico ha sido recibido correctamente. El mensaje de confirmación es una señal para la aplicación 1C de que todas las entidades comerciales han sido procesadas exitosamente por la aplicación externa y que no es necesario transmitir más información sobre ellas. Además de la confirmación, el archivo XML de la aplicación externa también puede contener datos para la sincronización desde el lado de la aplicación (por ejemplo, documentos de ventas de productos y servicios).
Después de recibir el mensaje de confirmación, la aplicación 1C marca todos los cambios transmitidos en el mensaje anterior como sincronizados con éxito. Solo los cambios no sincronizados en las entidades comerciales (creación de nuevas entidades, modificación y eliminación de existentes) serán enviados a la aplicación externa en la siguiente sesión de sincronización.

Al transmitir datos de la aplicación externa a la aplicación 1C, la situación cambia a la inversa. La aplicación externa debe completar la sección de confirmación en el archivo XML de manera adecuada y colocar los datos comerciales para la sincronización desde su lado en formato EnterpriseData.

Intercambio simplificado de datos sin confirmación
Para casos de integración simple, donde solo es necesario transmitir información de la aplicación externa a la aplicación 1C y no se requiere la transmisión de datos de vuelta desde la aplicación 1C a la aplicación externa (por ejemplo, la integración de una tienda en línea que transmite información de ventas a "1C:Contabilidad"), hay una opción simplificada de funcionamiento a través de un servicio web (sin confirmación), que no requiere configuraciones en el lado de la aplicación 1C.
Soluciones de integración especializadas
Existe una solución estándar «1C: Conversión de datos», que utiliza los mecanismos de la plataforma para la conversión e intercambio de datos entre configuraciones estándar de 1C, pero también puede ser utilizada para la integración con aplicaciones externas.
Integración con soluciones bancarias
El estándar , desarrollado por especialistas de 1C hace más de 10 años, se ha convertido en el estándar de la industria en Rusia. El siguiente paso en esta dirección es la tecnología , que permite enviar documentos de pago al banco y recibir extractos directamente desde el software del sistema «1C: Empresa» con sólo pulsar un botón en el programa «1C»; no se requiere la instalación y ejecución de programas adicionales en el ordenador del cliente.
También existe .
Otros
Deben mencionarse , estándar de intercambio de información comercial (desarrollado junto con Microsoft, Intel, Price.ru y otras empresas), .
Fuente: habr.com
