Services Web. Pavel Chistov Spécification technique pour le service Web 1s 8 exemple

Maison / Récupération de données

Mots-clés : service web, service web, SOAP, WSDL, lien ws

Avis de non-responsabilité et conditions d'utilisation

Toutes les marques mentionnées accidentellement dans cet article appartiennent à leurs propriétaires respectifs.
Cet article est publié sous une licence Creative Commons Attribution-Partage dans les mêmes conditions 3.0 Unported. http://creativecommons.org/licenses/by-sa/3.0/

Un autre avertissement (après plusieurs fois)

La plateforme 1C:Enterprise 8 est en constante évolution. Par conséquent, le code présenté dans cet article générera une erreur dans les dernières versions de la plateforme. Cela se produit notamment du fait que l'ordre d'appel des méthodes de l'objet proxy du service web a changé : par exemple, objets complexes doit être explicitement converti en un objet XDTO du type approprié à l’aide de la fabrique du service approprié. Vous pouvez en savoir plus sur notre forum ou dans le livre « 1C:Enterprise Integration Technologies » http://v8.1c.ru/metod/books/book.jsp?id=288

Introduction

Quand apparaît nouvelle version un produit logiciel, alors naturellement, tout d’abord, vous voulez comprendre ce qu’il contient de nouveau. Dans le cas de 1C:Enterprise 8.1, les services Web sont devenus une nouvelle « fonctionnalité » pour moi. Beaucoup de choses ont été écrites et dites sur les services Web, puisque cette technologie existe depuis assez longtemps selon les standards informatiques. Par conséquent, je ne me répéterai pas : je renvoie tout le monde à Yandex pour obtenir des informations. Je dirai seulement qu'avec la sortie de la nouvelle édition de la plateforme 1C:Enterprise 8.1, 1Snikov a la possibilité de créer et d'utiliser la technologie des services Web, étant, pour ainsi dire, dans son environnement d'origine. Dans cet article, je souhaite montrer comment utiliser des services Web externes dans vos développements.

Pour ceux qui sont complètement « déconnectés » : des services web « à portée de main »

D'ACCORD, spécialement pour toi Je vais essayer de vous expliquer un peu ce qu'est un service Web et pourquoi exactement Ce Cela m'a semblé une innovation tellement « délicieuse » de la plateforme. Peut-être connaissez-vous la technologie COM ou avez-vous entendu parler d'OLE ? Tôt ou tard, n'importe quel travailleur rencontrera cette technologie (surtout s'il est nécessaire de transférer rapidement un annuaire « Employés », et le service RH, anticipant la nécessité de reconduire l'ensemble des 1 500 employés, est prêt à vous pendre au premier clou approprié qui arrive).
Oui, au cœur de la technologie COM se trouve l'idée de possibilités appel code de programme(et accéder aux données) d'une application à partir d'une autre application. De plus, possibilités ne le faites pas au niveau des procédures et des fonctions individuelles, mais en mettant à disposition objets une autre application. Lorsque nous utilisons OLE, nous créons un objet dans notre application qui est " représentant"ou, si vous préférez," emballage" d'un objet de l'application avec lequel nous voulons interagir (appelé " objet OLE " ou " objet COM "). Grâce à cet objet " wrapper ", les propriétés et méthodes de l'objet d'une autre application deviennent disponibles pour nous , et uniquement ceux dont le développeur Aller Les applications nous ont permis d'utiliser en les publiant dans la description interface. (Eh bien, je ne voulais pas entrer dans les détails, mais il n'y a pas d'autre moyen...)
Maintenant imaginons que exactement le même l'application est sur un autre ordinateur, et même pas dans réseau local(DCOM, CORBA et d'autres abréviations abstruses traitent assez bien de tels cas), et quelque part très, très loin sur Internet. C'est ici qu'interviennent les services Web (également accompagnés d'acronymes abscons : SOAP, WSDL, etc.), qui permettent dans ce cas d'effectuer un « truc » similaire : c'est-à-dire : recevoir des données et manipuler des objets à partir d’une application exécutée sur un ordinateur de l’autre côté d’Internet.
Sous " externe"par service Web, j'entends un service Web fourni à certains fournisseur service (c'est-à-dire pas notre application.) En conséquence, par « interne » - le service Web que nous fournirons depuis, ou plus précisément, basé sur notre candidature. Lors de l'utilisation de services Web externes, nous devons comprendre que bien que l'objet « wrapper » soit créé dans notre application « locale », le « code d'exécution » de cet objet se trouve peut-être de l'autre côté du Globe. Dans le même temps, les échanges entre nous Et eux se déroule sur le XML désormais omniprésent, avec ses « avantages » (polyvalence et structure) et ses « inconvénients » (ballonnement) bien connus, et le bon vieux http est utilisé comme « ligne de transmission ».
Oui, et n’oubliez pas le trafic Internet ! De plus, dans le cas de services Web externes, la plupart seront sur entrant composant.
Tout le reste est dans Yandex. Passons à autre chose...

D'où viennent les jambes, c'est-à-dire les ailes poussent

Après avoir fouillé Yandex, j'ai trouvé un excellent service Web de la société Aeroflot, qui vous permet de recevoir des informations sur l'arrivée et le départ des avions en temps réel, et j'ai décidé de créer une sorte d'« affichage de l'aéroport » dans 1C : Enterprise. Le service lui-même réside ici : http://webservices.aeroflot.ru/desc_flightinfo.asp

Il a dit : « Allons-y !

Pour commencer, j'ai créé une configuration vide de "1C:Enterprise 8.1" (au moment de la rédaction de cet article, j'avais à ma disposition la version 8.1.5.123 de la plateforme). Puis j'ai ajouté à ma config nouvel objet tapez WS-lien. Lorsqu'on m'a demandé de saisir l'URL du WSDL importé, j'ai saisi un lien vers le fichier WSDL, qui est répertorié sur la page du service : http://webservices.aeroflot.aero/flightstatus.wsdl (le fichier WSDL est une description du service Web. Pour plus de détails, rendez-vous sur Yandex ), et a fièrement nommé l'installation créée « Aeroflot ». En double-cliquant sur cet objet, j'ai obtenu une arborescence avec la structure du service web.

Cet arbre représente un « portrait » du service web, tel que le voit 1Ska. Le plus intéressant se trouve dans la branche "Web services" : ce noms Et ports les services web (en fait, un fichier WSDL peut décrire non pas un, mais plusieurs services web, alors chaque service web aura sa propre branche), et sont répertoriés méthodes service Internet. Ce sont ces mêmes « ficelles », en tirant sur lesquelles vous pouvez vous donner accès aux données fournies par le service Web. La branche "Modèle de données" contient une description des bibliothèques de types de données utilisées par le service Web.
Un bref résumé de l'utilisation du service Web se trouve généralement au même endroit que le lien vers le fichier WSDL. Dans le cas d'Aeroflot, il s'agit de la page http://webservices.aeroflot.aero/flightstatus.asmx

"Maintenant décollage, maintenant atterrissage..."

Pour travailler avec le service Web, j'ai ajouté le traitement « Affichage des départs » à la configuration, et dans celui-ci - un formulaire, que j'ai désigné comme principal. Sur le formulaire, j'ai placé le champ de sélection « Sélection de l'aéroport », le champ de saisie « Date de vol », le panneau « Panneau de tableau » avec deux pages « Arrivées » et « Départs », tandis que j'ai décoché le drapeau « Répartir sur les pages » dans le champ propriétés du panneau et le champ de table « Tableau » ".
L'interaction avec un service Web s'effectue selon le principe « demande-réponse » et un objet intermédiaire spécial est créé pour le service Web. Par conséquent, j'ai ajouté les détails du formulaire « ServiceAeroflot » d'un type personnalisé.
Si vous lisez attentivement la description du service, vous constaterez que le service Web fournit des données sur les arrivées et les départs via des appels aux méthodes Arrivée et Départ, respectivement. Dans ce cas, les deux méthodes prennent comme paramètres le code de l’aéroport et la date souhaitée. De plus, le service Web offre la possibilité d'obtenir une liste des aéroports pour lesquels des données sont disponibles dans le système. Le scénario suivant d'interaction avec un service Web est assez évident :
1. Obtenez une liste des aéroports ;
2. Sélectionnez l'aéroport et la date souhaités ;
3. Obtenez des données sur les arrivées ou les départs ;
Mais avant d'accéder au service web, vous devez initialiser un objet intermédiaire (comme WSProxy), ce que j'ai fait dans le gestionnaire d'ouverture de formulaire :
ServiceAeroflot=WSLinks.Aeroflot.CreateWSProxy(" http : //www.aeroflot.ru/", "FlightStatus", "FlightStatusSoap");
Le premier paramètre est l'URI de l'espace de noms du service Web. Vous pouvez le découvrir en ouvrant les propriétés du service web dans l'arborescence des liens WS. Les deuxième et troisième paramètres transmettent respectivement le nom et le port du service Web.
(ne pas confondre les notions de « nom », « port », « proxy », etc. appliquées aux services web avec les notions plus familières du protocole TCP/IP. S'il y a une correspondance entre eux, elle est plutôt sémantique . Dans cas général vous devez comprendre que, par exemple, un port de service Web et un port TCP sont des choses complètement différentes).
Ainsi, j'ai initialisé l'objet Aeroflot Service de type WSProxy, qui est essentiellement un « wrapper » du service web. Grâce à lui, je peux accéder aux méthodes de services web en tant que méthodes « natives » de la plateforme.
Tout d'abord, j'ai reçu une liste d'aéroports et rempli la liste du champ de sélection « Sélectionner un aéroport » :

SelectionList=FormElements.AirportSelection.SelectionList;
SelectionList.Clear();
AirportList=Aeroflot Service.AirportList().GetList("list "); TotalAirports=ListAirports.Count(); Pour ui=0 à TotalAirports-1 Cycle Airport=ListAirports.Get(ies);
SelectionList.Add(Airport.code, ""+Airport.city+" : "+Airport.name);

Fin du cycle ;

Ici, nous avons besoin d'un petit commentaire sur la construction de Airport List = Aeroflot Service Get List ("list");

Le fait est que les valeurs renvoyées par les méthodes du service Web sont représentées dans la plateforme par des objets de type XDTO Object. Étant donné que le sujet de la technologie XDTO dépasse le cadre de cet article, je dirai seulement que pour transformations", "Compagnie aérienne"); TableTable.Columns.Add("FlightNumber", "Number"); TableTable.Columns.Add(" Transport Aéroportuaire", "Transit aéroportuaire"); TableTable.Columns.Add("Aéroport", "Aéroport"+?(Arrivées,"départs,","arrivées")); TableTable.Columns.Add(" Calendrier", "Dans les délais"); TableTableboard.Columns.Add(" TempsPlanifié", "Prévu"); TableTableboard.Columns.Add(" TempsRéel", "Réel"); TableTable.Columns.Add("Heure calculée", "Calculée"); TableTable.Columns.Add("Heure d'atterrissage", ?(Arrivée,"Atterrissage","Décollage")); TableTable. Columns. Add("Vol combiné", "Vol combiné"); TableTable.Columns.Add("Status", "Status"); Si ce n'est pas l'arrivée, alors TableTable.Columns.Add("Registration", "Registration"); Add("Atterrissage", "Atterrissage"); EndIf; Éléments du formulaire. Créer des colonnes (); If Arrival Then Data=ServiceAeroflot.Arrival(SelectAirport, FlightDate).GetList("list"); ServiceAeroflot.Departure(SelectAirport, FlightDate).GetList("list"); Pour ii=0 par TotalRecords-1 Cycle Record=Data.Get(ies); entreprise;

NewLine.FlightNumber = Entry.flight_no;

NewLine.AirportTransit = Entry.airport_inter;
NewLine.Airport = Entrée.aéroport;

NewLine.TimeSchedule=Enregistrement.sched;

Étonnamment, après la rédaction et la publication de l'article, il s'est avéré que le respecté ZAV avait déjà publié un exemple similaire sur IT-Land : http://itland.ru/biblio/detail.php?ID=1060
Afin d’éviter d’éventuelles accusations de plagiat, je vous recommande fortement de lire également cet article et de comparer les approches des auteurs.

Le mécanisme des services Web vous permet d'utiliser un système écrit sur la plate-forme 1C comme un ensemble de services dans des systèmes distribués et hétérogènes complexes, et vous permet également de l'intégrer à d'autres systèmes d'information en utilisant une architecture orientée services (SOA).

La plateforme 1C permet à un développeur d'appeler des services Web fournis par d'autres fournisseurs de deux manières :

  • en utilisant des liens statiques créés dans l'arborescence des objets de configuration ;
  • en utilisant des liens dynamiques créés par le langage intégré.
Lors de l'utilisation d'un lien statique, la plateforme 1C ne reçoit une description du service Web du fournisseur qu'une seule fois, lors de la création du lien. De ce fait, une plus grande vitesse de fonctionnement est obtenue.
Lors de l'utilisation d'un lien dynamique, une description du service Web est obtenue à chaque appel du service Web. Dans ce cas, la rapidité de travail diminue, mais cette approche garantit la pertinence de la description du service Web du fournisseur, c'est-à-dire qu'il est utilisé dernière version Document WSDL. Dans le cas de l'utilisation de liens statiques pour obtenir description actuelle Le service Web doit réimporter le document WSDL à l'aide du configurateur, puis enregistrer la configuration modifiée.

*Le document WSDL est un langage de description de services web et d'accès à ceux-ci, basé sur le langage XML.

Considérons un exemple d'appel d'un service Web à l'aide d'un lien dynamique en utilisant le service de vérification orthographique Yandex.Speller comme exemple. Pour accéder à Yandex.Speller via HTTP, des interfaces XML, SOAP, JSON et JSONP sont proposées. Toutes les interfaces offrent les mêmes fonctionnalités et utilisent les mêmes paramètres d'entrée. Le document WSDL pour SOAP est disponible à l'adresse : http://speller.yandex.net/services/spellservice?WSDL.

Fonction d'appel de service Web :
// La fonction vérifie l'orthographe du texte.
// Paramètres
// CheckedText - String - texte pour vérifier l'orthographe.
// Valeur de retour :
// String - mots dans lesquels des erreurs ont été commises.
&Sur le serveur
Fonction Vérifier l'orthographe (CheckedText)

EmplacementWSDL = "http://speller.yandex.net/services/spellservice?WSDL" ;
WSDefinition = Nouveau WSDefinition (emplacement WSDL) ;

Espace de noms = "http://speller.yandex.net/services/spellservice" ;
SpellService = Nouveau WSProxy(WSDefinition, Namespace, "SpellService", "SpellServiceSoap");

Réponse = SpellService.checkText(CheckedText);

Erreurs = "" ;
Pour chaque erreur de la boucle Reply.error
Erreurs = Erreurs + "Erreur dans le mot : " + Erreur.mot + Symboles.PS ;
Fin du cycle ;

Erreur de retour ;

EndFunction //Vérifier l'orthographe()

Cette fonction crée un objet Définitions WS, qui récupère la définition du service Web à partir d'un document WSDL, l'adresse du document est indiquée ci-dessus.

Un objet est créé en fonction de la définition du service Web WSProxy et contacte le point de connexion du service Web SpellServiceSoap.

Pour initialiser un objet WSProxy toutes les informations nécessaires sont contenues dans l'élément Document WSDL. Dans l'attribut nom cet élément contient le nom du service, et l'attribut noméléments enfants contient le nom du point de connexion.
L'adresse de l'espace de noms est contenue dans la balise espace de noms cibleélément racine du document WSDL .

3. Adresse de l'espace de noms du service Web
Après l'initialisation de l'objet WSProxy, une opération de service Web est en cours checkTexte(), dans lequel le texte est envoyé.

4. Opérations de service Web et leurs types de messages entrants et sortants
L'opération de service Web renvoie une liste d'erreurs sous forme de liste XDTO. L'élément de liste lui-même est représenté par un objet XDTO.

Malheureusement, la plate-forme 1C ne prend pas entièrement en charge l'utilisation des services Web à l'aide du langage intégré, par exemple la définition des valeurs d'attribut. langue, options, format Pour message entrant opérations checkTexte() devient impossible, puisque nous sommes uniquement autorisés à transmettre des paramètres à l'opération :


5. Description du message entrant de l'opération checkText()
Le terme XDTO (XML Data Transfer Objects) ne désigne pas une norme mondialement acceptée prise en charge par la plateforme 1C, mais, au contraire, une norme née dans les entrailles de l'entreprise 1C, bien qu'elle soit très similaire à XML Schema, un projet inachevé. Schéma XML.

Et voilà, vous pouvez travailler ! :)

Le traitement d'un appel vers le service Web Yandex.Speller peut être téléchargé à partir de ce

30 juillet 2012 à 13h19

Utilisation de services Web externes dans 1C en utilisant l'exemple de chargement des taux de change

  • Programmation

Je sais que sur Habré, ils n'aiment pas vraiment le 1C qui souffre depuis longtemps. Cependant (avec les clients exécutant Linux), ils ont commencé à l'apprécier un peu plus. À propos, tout récemment, l'interface de l'un des principaux développements 1C - la configuration Manufacturing Enterprise Management - a été entièrement traduite en langue anglaise. Plusieurs fois, j'ai été confronté à des questions sur les raisons pour lesquelles ils n'écrivent pas sur 1C ici. La réponse est assez évidente : il existe de nombreuses ressources spécialisées où vous pouvez discuter rapidement de toutes les questions et lire quelque chose.

Il y a tout lieu de croire que cet article ne survivra pas ici, mais je prendrai quand même le risque, car il y a des choses intéressantes dans 1C qui valent la peine d'être évoquées.

Depuis quelques temps, 1C 8.x permet d'utiliser des services web : 1C peut agir à la fois en tant que fournisseur et en tant que consommateur. Dans cet article, je vais montrer comment utiliser 1C en tant que consommateur en utilisant l'exemple d'obtention des taux de change auprès du serveur de la Banque centrale.

Service Web

La Banque Centrale dispose d'un service web pour recevoir des données quotidiennes : taux de change, actualités, dynamique des taux de change, etc. Une description du service peut être trouvée ici http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Nous sommes intéressés par l'une des méthodes de ce service : GetCursOnDate(On_date)– obtenir les taux de change pour une date donnée. Un argument est passé à la méthode Le_date– c'est la date à laquelle vous devez recevoir les cours. Le résultat est un XML contenant le tableau ValeurCursOnDate(les cours eux-mêmes et les informations associées).

Configuration

Pour le développement, j'ai pris 1C 8.2 (8.2.15.317 dans mon cas) et créé une configuration vide. Pour utiliser des services Web externes, un objet lien WS est fourni, mais il n'est pas nécessaire de l'utiliser ; le service est accessible dynamiquement à partir du code. Je vais utiliser la première option, puis montrer comment vous pouvez utiliser la seconde. Dans la configuration, j'ai créé un traitement et je l'ai appelé « Chargement des taux de change CBR ». J'ai ajouté un formulaire (géré) et en ai fait le principal. J'ai créé les détails sur le formulaire et placé les contrôles comme indiqué sur la figure.

Maintenant, le plus important est de créer un lien vers la description du service web. Dans la configuration nous ajoutons un nouvel objet de type WS-link. Dans la fenêtre qui apparaît, indiquez le lien vers le WSDL (description de ce format dépasse le cadre de l'article, vous pouvez en savoir plus sur Wikipédia) : http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL.

Sur la base de la description reçue, 1C créera automatiquement une carte visuelle du service Web. Vous pouvez voir le nom du service Web, voir quelles opérations lui sont disponibles, ainsi que les types de données utilisés.

La configuration est presque terminée, il ne reste plus qu'à apporter quelques touches pour rendre notre application plus esthétique. Cliquons clic droit passez la souris sur la racine de configuration et appelez le menu « Ouvrir l’interface de commande du bureau ». Dans la fenêtre qui apparaît, vous devez décocher le drapeau « Visibilité » en regard du traitement « Chargement des taux de change de la Banque Centrale ». Cliquez sur le bouton OK. Ensuite, faites un clic droit sur la racine de configuration et appelez le menu « Ouvrir l'espace de travail du bureau », nous y effectuerons les réglages comme dans la figure :

Ces paramètres nous permettront d'afficher le formulaire de traitement directement sur le bureau (c'est-à-dire le bureau du programme 1C) en mode 1C Entreprise.

Programmation

Il ne reste plus qu'à donner du sens à notre traitement : lui faire recevoir des taux de change et l'afficher dans un tableau sur le formulaire. En mode d'édition de formulaire, vous devez ajouter une nouvelle commande de formulaire, appelons-la LoadCurrencies. Cette commande doit être associée à un bouton situé sur le formulaire. Remplissons l'action de la commande avec le code suivant (note de l'auteur : wow, le hub a une mise en évidence du code 1C, bien qu'il ne fonctionne pas correctement) :

&Sur la procédure client LoadCurrencies(Command) If NOT ValueFilled(DownloadDate) Then Report("Date de téléchargement non sélectionnée!", MessageStatus.Important);
Retour; endIf;

DevisesRatesTable.Clear();

Procédure LoadCurrencyRates(fDataDownload) //Créez un proxy pour accéder à un service Web externe, //passez l'URI de l'espace de noms, le nom du service et le nom du port à la fonction.
Proxy = WSLinks.CBR_DailyInfoWebServ.CreateWSProxy("http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");

//Obtient le type du paramètre transmis à la méthode GetCursOnDate.

TypeWSParameter = Proxy.FactoryXDTO.Packets.Get("http://web.cbr.ru/").Get("GetCursOnDate");

//Créez un paramètre basé sur le type et renseignez la valeur du paramètre On_Date.

WSParameter = Proxy.XDTO Factory.Create(WSParameterType);
WSParameter.On_Date = fDownloadDate ;

//Appelez la méthode du service Web, écrivez le résultat dans la variable Taux de change.

Taux de change = Proxy.GetCursOnDate(WSParameter);

Aujourd'hui, les services WEB sont utilisés presque partout : ils nous fournissent des informations sur les vols en avion et en train, les taux de change et la météo. Il n'est pas surprenant que 1C ait également la possibilité de créer ses propres services WEB, lui permettant d'agir à la fois en tant que fournisseur et consommateur. Ce mécanisme est intégré à la plateforme 1C:Enterprise 8.3 et les développeurs peuvent même ajouter configuration typique objets propres de type « services WEB ». Leur architecture repose sur un ensemble de services qui permettent d'échanger des informations avec d'autres logiciels.

Création d'un service Web 1C

L'un des principaux avantages des services WEB 1C est l'absence de besoin de fournir un accès direct aux données de sécurité de l'information. Un service Web 1C correctement configuré permet à d'autres applications d'utiliser des fonctions de l'extérieur. Dans de tels cas, déterminez le droit d’utiliser les données en paramètres donnés La fonction elle-même doit suivre les règles prescrites par le développeur.

Comment créer un service web en 1C ?

Pour qu'une certaine fonction du système 1C devienne disponible pour les logiciels externes, il est nécessaire d'effectuer l'algorithme d'actions suivant :

  1. Accédez à la configuration et ajoutez un objet de service WEB dans une certaine branche de l'arborescence ;
  2. Décrivez toutes les opérations que notre fonctionnalité peut effectuer. La description des fonctions est effectuée dans le module dans le langage 1C intégré ;
  3. Ajoutez une description des paramètres des fonctions du service Web. Veuillez noter que les types de données sont décrits en tenant compte types existants le mécanisme XDTO, apparu dans la version 8.1 de la plateforme ;
  4. Publiez le service WEB créé sur le serveur. Le mécanisme intégré à la plateforme 1C prend en charge les normes suivantes :
  • SSL/TLS
  • WS-I BP

Un exemple de création d'un service WEB simple

Pour démontrer le plus clairement possible le fonctionnement du mécanisme des services WEB, créons un exemple - une fonctionnalité qui détermine la longueur de la chaîne saisie. Logiciel passera une chaîne comme paramètre de requête et la fonction décrite dans 1C renverra le nombre de caractères. Lors de la création, vous devez vous rappeler que la publication de ce mécanisme permettra à divers logiciels d'y accéder. Tous les logiciels n'étant pas capables d'accepter l'alphabet cyrillique, nous nommerons les objets de configuration en caractères latins.

Ouvrez le configurateur, recherchez la branche « Services WEB » dans l'arborescence et ajoutez un nouveau service « wa_LengthString ». Vous devez également ajouter une nouvelle opération dans l'onglet « Opérations ». Appelons-le "CalcLengthString", dans les propriétés, nous indiquerons le type de valeur de retour - int ou entier et créerons le paramètre "InputString" à l'intérieur. Laissez le type de valeur sous forme de chaîne.

Vous devez maintenant enregistrer l'action de la fonction CalcLengthString dans le module de service WEB. Pour cela, ouvrez les propriétés de la fonction créée et cliquez sur le bouton en forme de loupe à droite, à côté du champ de saisie « Nom de la procédure ». 1C créera automatiquement une fonction dans notre module de service WEB et l'ouvrira afin que nous puissions décrire l'action CalcLengthString. Profitons-en et écrivons l'action de la fonction - déterminant la longueur de la chaîne d'entrée.


En fait, ceci complète la création d'un simple service WEB. Vous devez maintenant « publier » ce service dans accès général afin que des logiciels tiers ou d'autres systèmes 1C puissent utiliser cette fonctionnalité.

Pour que nous puissions publier le service Web créé avec ses fonctionnalités, nous devons avoir accès au site. Avant de commencer à publier le service, nous devons vérifier le nom du fichier dans les propriétés du module wa_LengthString créé. Il doit être clair, simple et avoir l'extension « 1cws ».


Il est maintenant temps de publier le service WEB que nous avons créé sur le serveur. Cette fonctionnalité est apparue dans la version 8.3 de la plateforme et de nombreuses entreprises ont déjà réalisé tous les avantages de cette fonctionnalité. Pour lancer la publication, vous devez ouvrir le formulaire « Administration/Publication sur un serveur web... » dans le configurateur.


Dans la fenêtre qui s'ouvre, il nous faut Configuration Web Services 1C et remplissage de certains champs :

  • Nom. Désigne le dossier sur le serveur web dans lequel sera stockée la description de notre service web. Faites attention aux casses, car parfois les serveurs font la distinction entre les grandes et les petites casses ;
  • Serveur Web. Vous devez sélectionner un serveur parmi ceux installés sur votre ordinateur ;
  • Catalogue. Vous devez sélectionner le chemin d'accès au dossier dans lequel sont stockées les données du serveur Web pour la configuration de la connexion. Seules les lettres latines sont utilisées ;
  • Deux signes de type booléen. Le premier nous sera utile si nous devons configurer l'accès à la configuration via un client web. Afin de publier un service 1C, vous devez cocher la deuxième case.

Il ne reste plus qu'à vérifier que le service WEB souhaité a la case cochée dans la première colonne et à cliquer sur « Publier ».


Comme ce mécanisme est encore assez nouveau, vous pouvez rencontrer une erreur du type « Erreur lors de l'exécution de opération de fichier..." Dans ce cas, il vous suffit de cliquer à nouveau sur « Publier ». Dans la plupart des cas, cela fonctionnera et vous verrez un message indiquant que le service Web a été publié.

<имяСервера>.ru/<ИмяУказанногоКаталогаНаСервере>/ws/<НаименованиеФайла>.1cws?wsdl

En réponse à une telle demande d'adresse, le navigateur doit afficher la structure Fichier XML. Si vous voyez une page blanche, une erreur ou des caractères étranges (problèmes d’encodage), alors vous devez revérifier toutes les étapes. C'est également une bonne idée de vous assurer que le serveur est correctement configuré et que vous y avez accès. Après une publication réussie, le service 1C WEB pourra être utilisé par des applications tierces.

Services Web est l'un des mécanismes de plateforme utilisés pour l'intégration avec d'autres systèmes d'information. C'est un moyen de supporter la SOA (Service-Oriented Architecture), une architecture orientée services qui constitue un standard moderne d'intégration d'applications et de systèmes d'information.

Un avantage important de l'architecture orientée services est qu'elle vous permet de développer l'infrastructure de l'entreprise de manière uniforme, sans détruire les solutions existantes. Son utilisation vous permet de minimiser les coûts en intégrant des systèmes hétérogènes et existants dans le paysage de l'entreprise moderne. Il vous permet d'implémenter des composants logiciels faiblement couplés afin de maximiser leur réutilisation.

L'architecture orientée services est intensivement développée et prise en charge par les principaux fournisseurs. Elle est construite sur la base de services, autonomes ou gérés en externe. La manière privilégiée de les mettre en œuvre consiste à utiliser les services Web. Ils sont indépendants de la plateforme, autonomes et pris en charge partout.

La solution applicative 1C:Enterprise 8 peut être à la fois un fournisseur de services Web et un consommateur de services Web publiés par d'autres fournisseurs.

Les systèmes utilisant des plates-formes matérielles et logicielles arbitraires peuvent agir en tant que consommateurs. La technologie des services Web est indépendante de la plate-forme.


Implémentation technique des web services

Si la solution d'application est un fournisseur de services Web, alors dans les modes de fonctionnement fichier et client-serveur, l'interaction entre la solution d'application et les consommateurs de services Web s'effectue via le serveur Web, à l'aide du module d'extension de serveur Web.

Dans ce cas, lorsqu'un consommateur accède au service Web d'une solution applicative, le module de service Web est exécuté. Ce module est contenu dans la configuration et contient des procédures qui sont exécutées lors de l'appel de certaines opérations de service Web.

Dans le cas d'une version client-serveur du travail, ce module sera exécuté en cluster. Dans le cas de la version fichier du travail - dans le module d'extension du serveur Web.

Si la solution applicative est un consommateur d'un fournisseur de services Web tiers, alors dans ce cas, l'interaction entre la solution applicative et le fournisseur de services Web est effectuée

© 2024 ermake.ru -- À propos de la réparation de PC - Portail d'information