Quelles sont les exigences les plus importantes pour les applications métier ? Parmi les plus essentielles figurent les tâches suivantes :
- La facilité de modification / adaptation de la logique de fonctionnement de l'application aux défis commerciaux changeants.
- La simplicité d'intégration avec d'autres applications.
La manière dont la première tâche est résolue dans 1C a été brièvement décrite dans la section « Personnalisation et support » ; nous reviendrons sur ce sujet intéressant dans l'un de nos prochains articles. Aujourd'hui, nous parlerons de la seconde tâche, celle de l'intégration.
Tâches d'intégration
Les tâches d'intégration peuvent varier. Pour certaines d'entre elles, un simple échange de données interactif suffit, par exemple, pour transmettre à la banque une liste d'employés pour l'émission de cartes de paie. Pour des tâches plus complexes, un échange de données entièrement automatisé peut être nécessaire, éventuellement en s'appuyant sur la logique commerciale d'un système externe. Il existe des tâches de nature spécialisée, comme l'intégration avec des équipements externes (par exemple, équipements de vente, scanners mobiles, etc.) ou avec des systèmes hérités ou spécialisés (comme des systèmes de reconnaissance de codes RFID). Il est crucial de choisir le mécanisme d'intégration le plus approprié pour chaque tâche.
Possibilités d'intégration avec 1C
Différentes approches existent pour réaliser l'intégration avec les applications 1C, le choix de l'une d'entre elles dépend des exigences de la tâche.
- Mise en œuvre basée sur , fournis par la plateforme, ou un API spécialisé de l'application 1C (par exemple, un ensemble de services Web ou HTTP qui appellent des applications tierces pour échanger des données avec l'application 1C). L'avantage de cette approche est la résistance de l'API aux modifications de l'implémentation du côté de l'application 1C. La particularité de cette approche est qu'il est nécessaire de modifier le code source de la solution standard 1C, ce qui peut potentiellement nécessiter des efforts lors de la fusion des codes sources lors du passage à une nouvelle version de la configuration. Dans ce cas, une nouvelle fonctionnalité progressive peut venir à l'aide — . Les extensions sont essentiellement un mécanisme de plugins qui permet de créer des ajouts aux solutions applicatives sans modifier les solutions elles-mêmes. L'extraction de l'API d'intégration dans l'extension de configuration évitera les complications lors de la fusion des configurations lors de la mise à jour vers une nouvelle version de la solution standard.
- Utilisation des mécanismes d'intégration de la plateforme, qui permettent l'accès externe au modèle d'objet de l'application sans nécessiter de modification de l'application ou de création d'une extension. L'avantage de cette approche est qu'il n'est pas nécessaire de modifier l'application 1C. L'inconvénient est que si l'application 1C a été modifiée, des ajustements peuvent être nécessaires dans l'application intégrée. Un exemple de cette approche est l'utilisation du protocole OData pour l'intégration, implémenté du côté de la plateforme 1C:Entreprise (plus de détails ci-dessous).
- Utilisation des protocoles d'application prêts à l'emploi, implémentés dans les solutions standard 1C. De nombreuses solutions standard de 1C et de partenaires mettent en œuvre leurs propres protocoles d'application basés sur les mécanismes d'intégration fournis par la plateforme, orientés vers des tâches spécifiques. L'utilisation de ces mécanismes ne nécessite pas d'écrire du code du côté de l'application 1C, car nous utilisons les fonctionnalités standard de la solution applicative. Du côté de l'application 1C, nous n'avons besoin que d'effectuer certaines configurations.
Mécanismes d'intégration dans la plateforme 1C:Entreprise
Import/export de fichiers
Supposons que nous ayons la tâche d'échange bidirectionnel de données entre l'application 1C et une application quelconque. Par exemple, nous devons synchroniser la liste des produits (répertoire Nomenclature) entre l'application 1C et une application aléatoire.

Pour résoudre ce problème, il est possible d'écrire une extension qui exporte le répertoire Nomenclature dans un fichier d'un format spécifique (texte, XML, JSON, …) et est capable de lire ce format.
La plateforme a mis en œuvre un mécanisme de sérialisation d'objets applicatifs en XML, à la fois directement, via les méthodes du contexte global ÉcrireXML/LireXML, et à l'aide de l'objet auxiliaire XDTO (XML Data Transfer Objects).
Tout objet dans le système 1C:Entreprise peut être sérialisé en représentation XML et vice versa.
Cette fonction retournera la représentation de l'objet sous forme de XML:
Fonction Objet_En_XML(Objet)
EnregistrementXML = Nouveau EnregistrementXML();
EnregistrementXML.DefinirChaine();
EcrireXML(EnregistrementXML, Objet);
Retourner EnregistrementXML.Fermer();
FinFonction
C'est ainsi qu'apparaîtra l'exportation du répertoire Nomenclature en XML à l'aide de XDTO :
&SurLeServeur
Procédure ExporterXMLSurLeServeur()
NouveauSérialiseurXDTO = SérialiseurXDTO;
NouvelleEnregistrementXML = Nouveau EnregistrementXML();
NouvelleEnregistrementXML.OuvrirFichier("C:DataNomenclature.xml", "UTF-8");
NouvelleEnregistrementXML.EcrireDéclarationXML();
NouvelleEnregistrementXML.EcrireDébutÉlément("RépertoireNomenclature");
Sélection = Répertoires.Nomenclature.Sélectionner();
TantQue Sélection.Suivant() Faire
ObjetNomenclature = Sélection.ObtenirObjet();
NouveauSérialiseurXDTO.EcrireXML(NouvelleEnregistrementXML, ObjetNomenclature, TypeAssignationXML.Explicite);
FinFaire;
NouvelleEnregistrementXML.EcrireFinÉlément();
NouvelleEnregistrementXML.Fermer();
FinProcédure
Par une simple modification du code, nous exportons le répertoire en JSON. Les produits seront enregistrés dans un tableau ; pour varier, présentons la version anglaise de la syntaxe :
&SurLeServeur
Procédure ExporterJSONSurLeServeur()
NouveauSérialiseurXDTO = SérialiseurXDTO;
NouveauÉcrivainJSON = Nouveau ÉcrivainJSON();
NouveauÉcrivainJSON.OuvrirFichier("C:DataNomenclature.json", "UTF-8");
NouveauÉcrivainJSON.EcrireDébutObjet();
NouveauÉcrivainJSON.EcrireNomPropriété("RépertoireNomenclature");
NouveauÉcrivainJSON.EcrireDébutTableau();
Sélection = Catalogues.Nomenclature.Sélectionner();
TantQue Sélection.Suivant() Faire
ObjetNomenclature = Sélection.ObtenirObjet();
NouveauÉcrivainJSON.EcrireDébutObjet();
NouveauÉcrivainJSON.EcrireNomPropriété("Nomenclature");
NouveauSérialiseurXDTO.EcrireJSON(NouveauÉcrivainJSON, ObjetNomenclature, TypeAssignationXML.Implicite);
NouveauÉcrivainJSON.EcrireFinObjet();
FinFaire;
NouveauÉcrivainJSON.EcrireFinTableau();
NouveauÉcrivainJSON.EcrireFinObjet();
NouveauÉcrivainJSON.Fermer();
FinProcédure
Il ne reste plus qu'à transmettre les données au consommateur final. La plateforme 1C:Entreprise prend en charge les principaux protocoles Internet HTTP, FTP, POP3, SMTP, IMAP, y compris leurs versions sécurisées. On peut également utiliser HTTP et/ou des services Web pour le transfert de données.
HTTP et services Web

Les applications 1C peuvent implémenter leurs propres services HTTP et Web, ainsi que solliciter des services HTTP et Web fournis par des applications tierces.
Interface REST et protocole OData
À partir de la version 8.3.5, la plateforme 1C:Entreprise peut automatiquement pour l'ensemble de la solution applicative. Tout objet de configuration (répertoire, document, registre d'informations, etc.) peut être rendu accessible pour l'obtention et la modification des données via l'interface REST. La plateforme utilise le protocole d'accès version 3.0. La publication des services OData se fait depuis le menu du configurateur « Administration -> Publication sur le serveur web », la case « Publier l'interface standard OData » doit être cochée. Les formats atom/XML et JSON sont pris en charge. Une fois que la solution applicative est publiée sur le serveur web, des systèmes tiers peuvent y accéder via l'interface REST à l'aide de requêtes HTTP. Pour travailler avec l'application 1C via le protocole OData, aucune programmation du côté 1C n'est requise.
Ainsi, une URL de type http:////odata/standard.odata/Catalog_Номенклатура nous renverra le contenu du catalogue Nomenclature au format XML — une collection d'éléments entry (l'en-tête du message est omis pour plus de concision) :
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
Climatiseur Mitsubishi
Puissance 2,5 kW, modes de fonctionnement : chaleur/froid
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
En ajoutant la chaîne «?$format=application/json» à l'URL, nous obtiendrons le contenu du catalogue Nomenclature au format JSON (URL de type 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": "Climatiseur Mitsubishi",
"Описание": "Puissance 2,5 kW, modes de fonctionnement : chaleur/froid"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Climatiseur Daikin",
"Описание": "Puissance 3 kW, modes de fonctionnement : chaleur/froid"
}, …
Sources de données externes

Dans certains cas, l'échange de données via peut s'avérer être la solution optimale. Les sources de données externes sont un objet de configuration applicative 1C, permettant d'interagir avec toute base de données compatible ODBC, tant en lecture qu'en écriture. Les sources de données externes sont disponibles à la fois sous Windows et Linux.
Mécanisme d'échange de données
destiné à la fois à la création de systèmes géographiquement distribués basés sur 1C:Enterprise et à l'organisation de l'échange de données avec d'autres systèmes d'information non basés sur 1C:Enterprise.
Ce mécanisme est activement utilisé lors des implémentations de 1C, et le champ des tâches qu'il permet de résoudre est très large. Il s'agit de l'échange de données entre les applications 1C installées dans les succursales de l'organisation, de l'échange entre l'application 1C et le site de la boutique en ligne, ainsi que de l'échange de données entre l'application serveur 1C et le client mobile (créé avec la plateforme mobile 1C:Enterprise), et bien d'autres encore.
Un des concepts clés du mécanisme d'échange de données est le plan d'échange. Le plan d'échange est un type particulier d'objet applicatif de la plateforme 1C, qui définit, entre autres, la composition des données qui participeront à l'échange (quels répertoires, documents, registres, etc.). Le plan d'échange contient également des informations sur les participants à l'échange (appelés nœuds d'échange).
Le deuxième élément du mécanisme d'échange de données est le mécanisme d'enregistrement des modifications. Ce mécanisme suit automatiquement dans le système les modifications des données qui doivent être transmises aux consommateurs finals dans le cadre du plan d'échange. Grâce à ce mécanisme, la plateforme suit les changements survenus depuis la dernière synchronisation et permet de minimiser le volume des données transférées lors de la prochaine session de synchronisation.
L'échange de données se fait par le biais de messages XML d'une certaine structure. Le message contient des données qui ont changé depuis la dernière synchronisation avec le nœud et certaines informations de service. La structure des messages prend en charge la numérotation des messages et permet de recevoir des confirmations du nœud récepteur concernant la réception des messages. Cette confirmation est contenue dans chaque message reçu du nœud récepteur, sous la forme du numéro du dernier message accepté. La numérotation des messages permet à la plate-forme de comprendre quelles données ont déjà été transmises avec succès au nœud récepteur et d'éviter les transmissions répétées, en transmettant uniquement les données qui ont changé depuis que le nœud expéditeur a reçu le dernier message avec accusé de réception des données reçues par le nœud récepteur. Avec ce schéma de fonctionnement, une livraison garantie est assurée même par des canaux de transmission peu fiables et en cas de perte de messages.
Composants externes
Dans certains cas, lors de la résolution des tâches d'intégration, il est nécessaire de faire face à des exigences spécifiques, par exemple, des protocoles d'interaction, des formats de données dont la manipulation n'est pas prévue dans la plate-forme 1C:Entreprise. Pour ce type de tâches, la plate-forme propose , qui permet de créer des modules connectables dynamiquement, élargissant ainsi les fonctionnalités de 1C:Entreprise.
Un exemple typique de tâche avec de telles exigences pourrait être l'intégration d'une solution applicative 1C avec du matériel commercial, allant des balances aux caisses enregistreuses et aux scanners de codes-barres. Les composants externes peuvent être connectés tant du côté du serveur 1C:Entreprise que du côté client (y compris, en plus, le client Web, ainsi que 1C:Entreprise). La technologie des composants externes prévoit une interface de communication logicielle (C++) assez simple et claire entre le composant et la plate-forme 1C:Entreprise, que le développeur doit implémenter.
Les possibilités offertes par l'utilisation de composants externes sont très vastes. Il est possible de réaliser des interactions selon un protocole spécifique d'échange de données avec des dispositifs et des systèmes externes, d'intégrer des algorithmes de traitement spécifiques et des formats de données, etc.
Mécanismes d'intégration obsolètes
La plateforme propose des mécanismes d'intégration qui ne sont pas recommandés pour de nouvelles solutions ; ils sont conservés pour des raisons de compatibilité descendante et au cas où l'autre partie ne peut pas travailler avec des protocoles plus modernes. L'un d'eux est le traitement des fichiers au format DBF (pris en charge dans le langage intégré via l'objet XBase).
Un autre mécanisme d'intégration obsolète est l'utilisation de la technologie COM (disponible uniquement sur la plateforme Windows). La plateforme 1С:Entreprise propose deux méthodes d'intégration pour Windows utilisant la technologie COM : le serveur d'automatisation et la connexion externe. Elles sont très similaires, mais une des différences essentielles réside dans le fait qu'avec le serveur d'automatisation, une application cliente complète 1С:Entreprise 8 est lancée, tandis qu'avec la connexion externe, un serveur COM intra-processus relativement petit est démarré. Ainsi, lors de l'utilisation du serveur d'automatisation, il est possible d'exploiter les fonctionnalités de l'application cliente et d'exécuter des actions analogues à celles d'un utilisateur interactif. En utilisant la connexion externe, seules les fonctions de la logique métier peuvent être utilisées, et celles-ci peuvent être exécutées à la fois du côté client de la connexion, où le serveur COM intra-processus est créé, et en appelant la logique métier du côté du serveur 1С:Entreprise.
La technologie COM peut également être utilisée pour interagir avec des systèmes externes à partir du code de l'application sur la plateforme 1С:Entreprise. Dans ce cas, l'application 1С agit en tant que client COM. Mais il est important de rappeler que ces mécanismes ne fonctionneront que si le serveur 1С fonctionne dans un environnement Windows.
Mécanismes d'intégration réalisés dans des configurations standard
Format EnterpriseData

Dans plusieurs configurations 1С (liste ci-dessous), un mécanisme d'échange de données prêt à l'emploi a été mis en place sur la base du mécanisme d'échange de données de la plateforme décrit ci-dessus, ne nécessitant aucune modification du code source des configurations (la préparation à l'échange de données se fait dans les paramètres des solutions applicatives) :
- «1C:ERP Gestion d'entreprise 2.0»
- «Automatisation complète 2»
- «Comptabilité d'entreprise», édition 3.0
- «Comptabilité d'entreprise KORP», édition 3.0
- «Vente au détail», édition 2.0
- «Gestion commerciale de base», édition 11
- «Gestion commerciale», édition 11
- «Salaires et gestion du personnel CORP», édition 3
Pour l'échange de données, le format , basé sur XML. Le format est orienté vers les affaires – les structures de données décrites correspondent aux entités commerciales (documents et éléments de répertoires) présentées dans les programmes 1C, par exemple : acte de travail effectué, reçu de caisse, contrepartie, nomenclature, etc.
L'échange de données entre l'application 1C et une application tierce peut se faire :
- via un répertoire de fichiers dédié
- via un répertoire FTP
- via un service Web déployé côté application 1C. Le fichier de données est transmis comme paramètre des méthodes Web
- par courrier électronique
Dans le cas d'un échange via un service Web, l'application tierce initiera la session d'échange de données en appelant les méthodes Web appropriées de l'application 1C. Dans les autres cas, l'initiateur de la session d'échange sera l'application 1C (en plaçant le fichier de données dans le répertoire approprié ou en envoyant le fichier de données à l'adresse e-mail configurée).
De plus, du côté de 1C, on configure à quelle fréquence la synchronisation aura lieu (pour les options d'échange de fichiers via le répertoire et par courrier électronique) :
- selon un calendrier (avec une périodicité définie)
- manuellement ; l'utilisateur devra lancer manuellement la synchronisation chaque fois qu'il le jugera nécessaire
Accusé de réception des messages
Les applications 1C gardent une trace des messages de synchronisation envoyés et reçus et attendent la même chose des applications tierces. Cela permet d'activer le mécanisme de numérotation des messages, décrit ci-dessus dans la section «Mécanisme d'échange de données».
Les applications 1C, lors de la synchronisation, ne transmettent que les informations relatives aux modifications survenues dans les entités commerciales depuis la dernière synchronisation (afin de minimiser le volume d'informations transmises). Lors de la première synchronisation, l'application 1C exportera toutes les entités commerciales (par exemple, les éléments du répertoire des articles) au format EnterpriseData dans un fichier XML (puisqu'elles sont toutes considérées comme « nouvelles » pour l'application externe). L'application tierce doit traiter les informations du fichier XML reçu de 1C et, lors de la prochaine session de synchronisation, inclure dans le fichier envoyé à 1C, dans une section spéciale XML, une information indiquant que le message de 1C portant un numéro spécifique a été reçu avec succès. Le message de reçu est pour l'application 1C un signal que toutes les entités commerciales ont été traitées avec succès par l'application externe et que les informations les concernant n'ont plus besoin d'être transmises. En plus du reçu, le fichier XML de l'application tierce peut également contenir des données à synchroniser de l'application (par exemple, des documents de vente de biens et services).
Après avoir reçu le message de reçu, l'application 1C marque toutes les modifications transmises dans le message précédent comme ayant été synchronisées avec succès. Seules les modifications non synchronisées des entités commerciales (création de nouvelles entités, modification et suppression d'entités existantes) seront envoyées à l'application externe lors de la prochaine session de synchronisation.

Lors de la transmission de données de l'application externe vers l'application 1C, la situation s'inverse. L'application externe doit remplir la section de reçu dans le fichier XML de manière appropriée et inclure les données commerciales à synchroniser de son côté au format EnterpriseData.

Échange de données simplifié sans accusé de réception
Dans les cas d'intégration simple, où il suffit simplement de transmettre des informations de l'application tierce à l'application 1C et où il n'est pas nécessaire de renvoyer des données de l'application 1C à l'application tierce (par exemple, l'intégration d'une boutique en ligne transmettant des informations de vente à « 1C:Comptabilité »), il existe une option simplifiée de travail via un service web (sans accusé de réception), ne nécessitant pas de configurations du côté de l'application 1C.
Solutions d'intégration spécialisées
Il existe une solution standard «1C : Conversion de données», qui utilise les mécanismes de la plateforme pour la conversion et l'échange de données entre des configurations standard de 1C, mais qui peut également être utilisée pour l'intégration avec des applications tierces.
Intégration avec des solutions bancaires
Standard , développé par des spécialistes de 1C il y a plus de 10 ans, est devenu de fait le standard de l'industrie en Russie. La prochaine étape dans cette direction est la technologie , qui permet d'envoyer des documents de paiement à la banque et de recevoir des relevés bancaires directement depuis les programmes du système «1C : Entreprise» d'une simple pression sur un bouton dans le programme «1C» ; il n'est pas nécessaire d'installer et de lancer des programmes supplémentaires sur l'ordinateur client.
Il existe également .
Autre
Méritent d'être mentionnés , standard d'échange d'informations commerciales (développé en collaboration avec Microsoft, Intel, Price.ru et d'autres entreprises), .
Source : habr.com
