Que sont les clients Web ? Découvrez ce qu'est un « client Web » dans d'autres dictionnaires. Travailler dans un navigateur Internet sans installer le système sur l'ordinateur de l'utilisateur

Dans cet article, je décrirai en détail le processus d'organisation de l'accès Web aux bases de données 1C:Enterprise 8.3 sur le serveur Web IIS (Internet Information Server) inclus avec Microsoft Windows Server. Pour les anciennes versions de 1C:Enterprise ( 8.1 Et 8.2 ) l'algorithme de publication des bases de données est généralement similaire. L'algorithme de configuration d'IIS pour 1C:Enterprise sera discuté et le processus de publication de bases de données sur un serveur Web sera également décrit pour les deux. 32 bits, et pour 64 bits module d'extension de serveur Web.

1. Ce dont vous aurez besoin

  1. Un ordinateur chargé d'exécuter un serveur Web exécutant l'un des systèmes d'exploitation :
  2. Droits d'administrateur local sur cet ordinateur.
  3. Kit de distribution pour l'installation des composants 1C:Enterprise. Pour configurer un module d'extension de serveur Web 64 bits, un kit de distribution pour l'installation d'un serveur 1C:Enterprise 64 bits. Cet exemple utilise la version 8.3.4.389 . Pour les anciennes versions de 1C:Enterprise ( 8.1 Et 8.2 ) l'algorithme de publication des bases de données est généralement similaire.

2. Installation du serveur Web IIS

Nous installons le serveur Web Internet Information Server, qui est inclus par défaut avec Microsoft Windows Server. Lors de l'installation, veillez à sélectionner les composants :

  • Fonctionnalités HTTP courantes
    • Contenu statique
    • Document par défaut
    • Navigation dans l'annuaire
    • Erreurs HTTP
  • Développement d'applications
    • ASP.NET 3.5
    • Extensibilité .NET 3.5
    • Extensions ISAPI
    • Filtres ISAPI
  • Santé et diagnostic
    • Journalisation HTTP
    • Moniteur de demande
  • Outils de gestion
    • Console de gestion IIS

J'ai écrit en détail sur le processus de déploiement d'un serveur Web IIS :

  • Dans Microsoft Windows Server 2012 (R2) - . IIS version 8, après l'installation, vous devriez voir une page de site Web par défaut comme :

  • Dans Microsoft Windows Server 2008 (R2) - . IIS version 7, après l'installation, vous devriez voir une page de site Web par défaut comme :

3. Installation des composants 1C:Enterprise

Sur le même serveur où le serveur web IIS est déployé (composants 32 bits), veillez à sélectionner les composants lors de l'installation :

  • 1C : Entreprise
  • Modules d'extension de serveur Web

Si vous envisagez de configurer un module d'extension de serveur web 64 bits, vous devez en plus lancer 1C:Enterprise depuis la livraison correspondante et installer le composant :

  • Module d'extension de serveur Web

4. Configuration du système d'exploitation

Vous devez maintenant définir les droits nécessaires sur les dossiers clés utilisés lors de l'utilisation de l'accès Web aux bases de données 1C:Enterprise. Pour le répertoire de stockage des fichiers du site Web publiés sur le serveur Web (par défaut C:\inetpub\wwwroot\) vous devez donner tous les droits au groupe " Utilisateurs"(Utilisateurs). En principe, vous pouvez ignorer cette étape, mais pour publier ou modifier la publication de la base de données, vous devrez exécuter 1C:Enterprise en tant qu'administrateur. Pour configurer la sécurité de ce répertoire, faites un clic droit dessus et sélectionnez « Propriétés"(Propriétés).

Dans la fenêtre des propriétés qui s'ouvre, allez dans le dossier " Sécurité" (Sécurité) et appuyez sur le bouton " Changement» (Modifier...), pour modifier les autorisations existantes. La fenêtre des autorisations pour ce répertoire apparaîtra. Dans la liste des Groupes ou noms d’utilisateurs, sélectionnez le groupe « Utilisateurs" (Utilisateurs) et dans la liste des autorisations pour le groupe sélectionné, définissez le drapeau " Accès total"(Controle total). Puis clique " Appliquer" (Appliquer) pour enregistrer les modifications et fermer toutes les fenêtres à l'aide du bouton " D'ACCORD».

Ensuite, vous devez accorder tous les droits au répertoire contenant les fichiers 1C:Enterprise installés (par défaut C:\Programmes (x86)\1cv8\ pour module d'extension 32 bits et C:\Programmes\1cv8\ pour le groupe 64 bits) IIS_IUSRS. Pour ce faire, nous effectuons des actions similaires à celles décrites ci-dessus, à la seule différence que pour que le groupe souhaité apparaisse dans la liste " Groupes ou utilisateurs" (Groupes ou noms d'utilisateurs) vous devez cliquer sur le bouton situé sous la liste " Ajouter"(Ajouter..), et dans la fenêtre de sélection des groupes ou des utilisateurs, cliquez sur " En plus"(Avancé...).

Cliquez ensuite sur le bouton à droite « Recherche"(Rechercher maintenant), puis sélectionnez le groupe requis IIS_IUSRS dans le tableau des résultats de recherche et cliquez sur « D'ACCORD».

Groupe IIS_IUSRS apparaît dans la liste des groupes ou des utilisateurs. Nous lui donnons tous les droits sur le répertoire sélectionné et cliquons sur « Appliquer» (Appliquer) pour enregistrer les modifications.

Et enfin, si la publication est effectuée pour une base de données fichiers, vous devez également donner au groupe IIS_IUSRS tous les droits sur le répertoire contenant les fichiers de cette infobase.

5. Publication de la base de données sur un serveur web

Passons à la publication directe de la base de données sur le serveur web. Pour cela, lancez 1C:Enterprise en mode Configurateur pour la base de données que vous souhaitez publier. Sélectionnez ensuite « Administration» — « Publication sur un serveur Web...»

La fenêtre de configuration des propriétés de publication sur le serveur Web s'ouvrira. Les principaux champs obligatoires pour la publication sont déjà renseignés par défaut :

  • Nom du répertoire virtuel - le nom sous lequel la base de données sur le serveur Web sera accessible. Ne peut être constitué que de caractères de l'alphabet latin.
  • Serveur Web - sélectionné dans la liste des serveurs Web trouvés sur l'ordinateur actuel. Dans notre cas, il s'agit des services d'information Internet.
  • Répertoire - L'emplacement physique du répertoire dans lequel les fichiers de l'application virtuelle seront situés.
  • A l'aide des drapeaux correspondants, vous pouvez spécifier les types de clients à publier, ainsi qu'indiquer la possibilité de publier des services Web. Dans le tableau ci-dessous vous pouvez éditer la liste des services Web qui seront publiés, ainsi que dans la colonne « Adresse» changer le synonyme par lequel ce service Web sera accédé.
  • Il est également possible que le serveur Web IIS indique la nécessité d'effectuer une authentification sur le serveur Web à l'aide du système d'exploitation en définissant l'indicateur approprié.

Après avoir sélectionné les paramètres de publication nécessaires, cliquez sur « Publier».

Si la publication s'est déroulée sans erreur, nous verrons un message correspondant.

La publication sur le serveur Web IIS est toujours effectuée pour le site Web par défaut et le pool d'applications par défaut. Il convient de garder à l'esprit que lors de la publication à partir du configurateur, le module d'extension du serveur Web 32 bits sera enregistré et le pool d'applications par défaut sera Pool d'applications par défaut- Sans configuration, il ne fonctionne qu'avec les applications 64 bits. Par conséquent, les autres actions dépendent du nombre de bits du module d'extension du serveur Web que vous envisagez d'utiliser. Pour une extension de serveur Web 32 bits, vous devez activer le pool d'applications pour utiliser des applications 32 bits ou enregistrer une extension de serveur Web 64 bits. Ceci sera discuté ci-dessous

6. Configurez IIS pour utiliser le plug-in d'extension de serveur Web 32 bits

Installations"(Outils) - " Responsable des services d'informations Internet

Site Web par défaut— un répertoire virtuel transformé en application est apparu avec le nom que nous avons précisé lors de la publication de la base de données. La seule chose qui reste pour terminer la publication est d'activer les applications 32 bits pour le pool d'applications par défaut. Pour cela, rendez-vous dans l'onglet " de l'arborescence des connexions Pools d'applications"(Piscines d'applications).

Dans la liste des pools d'applications, nous trouvons un pool portant le nom Pool d'applications par défaut. Faites un clic droit dessus et sélectionnez « Options supplémentaires"(Réglages avancés).

Dans la fenêtre des paramètres du pool d'applications qui s'ouvre, dans le groupe « Sont communs"(Général) trouver l'élément " Applications 32 bits autorisées» (Activer les applications 32 bits) et définissez la valeur du paramètre sur Vrai. Enregistrez ensuite les modifications en cliquant sur " D'ACCORD».

7. Configurez IIS pour utiliser le plug-in d'extension de serveur Web 64 bits

Vous pouvez enregistrer le module d'extension de serveur Web 64 bits à l'aide de l'utilitaire webinst.exe la version correspondante située dans le répertoire poubelle, répertoire avec le programme 1C:Enterprise installé, ou utilisez la méthode ci-dessous.

Lançons le gestionnaire des services Internet (IIS). Cela peut être fait à partir du gestionnaire de serveur en sélectionnant le «  Installations"(Outils) - " Responsable des services d'informations Internet» (Gestionnaire des services Internet (IIS)).

Ici, en développant l'arborescence dans la fenêtre des connexions, nous verrons que pour le site Web par défaut - Site Web par défaut— un répertoire virtuel transformé en application est apparu avec le nom que nous avons spécifié lors de la publication de la base de données. Pour finaliser la publication, il ne reste plus qu'à indiquer à l'application d'utiliser un processeur de requêtes 64 bits. Pour ce faire, ouvrez la page des paramètres de mappage du gestionnaire pour ce répertoire virtuel en sélectionnant « Mappage des gestionnaires» (Handler Mappings) sur la page d'accueil de l'application.

Dans le tableau de comparaison des gestionnaires, nous trouvons le gestionnaire "Extension de service Web 1C". Ouvrons ce gestionnaire en double-cliquant sur la ligne correspondante dans le tableau.

Modifions le gestionnaire en remplaçant le chemin d'accès à la DLL exécutable du module d'extension de serveur Web 32 bits actuellement sélectionné par le chemin d'accès à la version 64 bits de la bibliothèque. Dans cet exemple, nous changeons le chemin de " C:\Program Files (x86)\1cv8\8.3.4.389\bin\wsisapi.dll" sur " C:\Program Files\1cv8\8.3.4.389\bin\wsisapi.dll» à l'aide du bouton de sélection. Après avoir modifié le chemin, cliquez sur " D'ACCORD» pour enregistrer les modifications.

8. Connectez-vous à une infobase publiée via un navigateur Web

Eh bien, cela semble être tout. Pour vous connecter à une base de données nouvellement publiée, lancez Internet Explorer et saisissez un chemin comme celui-ci dans la barre d'adresse. http://localhost/<Имя публикации информационной базы> . Dans cet exemple, il s'agit de http://localhost/DemoAccounting/.

Vous pouvez également vous connecter à cette base d'informations depuis n'importe quel ordinateur du réseau en accédant au serveur web via son serveur interne (ou si le port est redirigé 80 , par externe) adresse IP.

Dans ce cas, pour que 1C:Enterprise fonctionne correctement, le nom de domaine auquel vous accédez (ou l'adresse IP) doit être ajouté aux sites Internet Explorer de confiance et les fenêtres contextuelles doivent être autorisées pour cela. En savoir plus sur la configuration d'Internet Explorer pour le client Web 1C:Enterprise.

9. Connexion à une base d'informations publiée via le client 1C:Enterprise

Vous pouvez également vous connecter à une base d'informations publiée sur un serveur web à l'aide du client léger 1C:Enterprise. Pour vous connecter, ouvrez la fenêtre de lancement « 1C:Enterprise » et cliquez sur le bouton « Ajouter» pour ajouter une base d'informations.

Dans la fenêtre d'ajout d'une infobase/groupe, placez le commutateur sur « Ajout d'une infobase existante à la liste" et cliquez sur " Plus loin».

Saisissez le nom de la base de données tel qu'il sera affiché dans la liste des infobases (doit être unique pour cette liste), sélectionnez le type d'emplacement " Sur le serveur web" et cliquez sur " Plus loin».

Saisissez la ligne d'adresse pour vous connecter à l'infobase (sans le préfixe /ru_RU/). Ici, vous pouvez également spécifier les paramètres du serveur proxy (le cas échéant) et la méthode d'authentification sur le serveur Web. Après avoir spécifié les paramètres nécessaires, cliquez sur « Plus loin».

Précisez les paramètres de lancement de l'infobase et cliquez sur « Prêt» pour terminer l'assistant.

Après quoi cette base d'informations apparaîtra dans la liste des bases de données dans la fenêtre de lancement de 1C:Enterprise. Attention, le mode de lancement du Configurateur n'est pas disponible pour ce type de connexion. Cliquez sur " 1C : Entreprise» pour vous connecter à la base d'informations.

10. Fichiers de configuration du répertoire virtuel

Examinons de plus près la structure des fichiers créés lors du processus de publication. Si l'accès Web à une base d'informations publiée ne fonctionne pas pour une raison quelconque, les fichiers de configuration peuvent être modifiés manuellement pour obtenir le résultat souhaité (les fichiers de configuration de cet article pour le module d'extension de serveur Web 64 bits peuvent être téléchargés).

Allons dans le répertoire que nous avons spécifié lors de la publication de la base de données. Nous y verrons deux fichiers :

  • par défaut.vrd
  • web.config

Les deux fichiers peuvent être visualisés et modifiés à l'aide de n'importe quel éditeur de texte, tel que le Bloc-notes. Examinons de plus près la structure de ces fichiers.

10.1. Fichier par défaut.vrd

Dans le fichier par défaut.vrd décrit les services Web publiés (élément ), et indique également le nom de l'application virtuelle (attribut base) et chaîne de connexion à la base d'informations 1C:Enterprise (attribut ib). Dans cet exemple, pour une infobase fichier, la chaîne de connexion sera la suivante :

Ib="Fichier="C:\1C_BASE\DemoAccounting";"

Comme vous pouvez le voir sur l'exemple, si la chaîne de connexion contient des caractères illégaux selon la norme XML (http://www.w3.org/TR/xml11/), ils doivent être remplacés en conséquence.

Dans la ligne de connexion, vous pouvez spécifier le login et le mot de passe de l'utilisateur. Dans ce cas, la connexion à l'infobase sera effectuée au nom de l'utilisateur spécifié. Par exemple, pour vous connecter en tant qu'utilisateur Vendeur, la chaîne de connexion sera la suivante :

Ib="Fichier="C:\1C_BASE\DemoAccounting";Usr=Vendeur;Pwd=123;"

La chaîne de connexion ressemblera à :

Ib="Srvr="WIN2012;Ref=Comptabilité;"

GAGNER2012— nom du cluster de serveurs 1C:Enterprise, et Comptabilité— nom de la base de données dans le cluster.

Vous pouvez en savoir plus sur la structure de ce fichier dans le livre « Guide de l'administrateur » 2e édition, Annexe 2, chapitre 3.12.

10.2. fichier web.config

Déposer web.config est un fichier qui définit les paramètres d'une application Web ASP.NET. Chaque application Web doit avoir un fichier web.config, situé dans son répertoire racine. Notre répertoire virtuel ne fait pas exception. Le fichier actuel contient des données sur le gestionnaire d'extension de service Web 1C qui traite les demandes adressées à cette application. Le gestionnaire est configuré de telle manière que toutes les requêtes soient transmises à la bibliothèque wsisapi.dll situé dans le répertoire poubelle, répertoire avec les fichiers 1C:Enterprise. Dans le cas de l'utilisation de bases d'informations serveur, la version de la bibliothèque doit correspondre à la version du cluster de serveurs 1C:Enterprise.

Ce gestionnaire peut être trouvé (ou ajouté s'il n'existe pas) dans le Gestionnaire IIS. Pour ce faire, sélectionnez l'onglet avec l'application actuelle et dans la fenêtre des propriétés sélectionnez « Mappages de gestionnaires" (Mappages de gestionnaires).

Dans le tableau de comparaison des gestionnaires, nous verrons notre gestionnaire "Extension de service Web 1C". Si un tel gestionnaire n'est pas dans la liste, vous devez l'ajouter en le sélectionnant dans le champ " Actions" (Actions) élément " Ajout d'une correspondance de script avec des caractères génériques» (Ajouter une carte de script générique…).

Lors de l'ajout, entrez le nom du gestionnaire et indiquez le chemin d'accès au fichier wsisapi.dll. Ces paramètres peuvent également être modifiés pour le gestionnaire actuel en sélectionnant « Changement…"(Modifier...) dans la fenêtre de la liste d'actions.

Vous devez également vous assurer que le flag " est défini pour le gestionnaire Performance» (Exécuter) dans la fenêtre de modification des autorisations de fonction. Vous pouvez appeler cette fenêtre en sélectionnant « Modification des autorisations de fonction..." (Modifier les autorisations des fonctionnalités...) dans la fenêtre " Actions"(Actions).

Cet article vous a t'il aidé?

L'une des fonctionnalités intéressantes de la technologie 1C:Enterprise est que la solution d'application, développée à l'aide de la technologie des formulaires gérés, peut être lancée à la fois dans un client léger (exécutable) pour Windows, Linux, MacOS X et en tant que client Web pour 5 navigateurs - Chrome, Internet Explorer, Firefox, Safari, Edge, et tout cela sans changer le code source de l'application. De plus, extérieurement, l'application dans le client léger et dans le navigateur fonctionne et semble presque identique.
Trouvez 10 différences (2 images sous la coupe) :

Fenêtre client léger sous Linux :

La même fenêtre dans le client web (dans le navigateur Chrome) :

Pourquoi avons-nous créé un client Web ? Pour le dire de manière quelque peu pathétique, le temps nous a confié une telle tâche. Travailler sur Internet est depuis longtemps une condition préalable aux applications professionnelles. Tout d'abord, nous avons ajouté la possibilité de travailler via Internet pour notre client léger (certains de nos concurrents se sont d'ailleurs arrêtés là ; d'autres, au contraire, ont abandonné le client léger et se sont limités à la mise en œuvre d'un client web). Nous avons décidé de donner à nos utilisateurs la possibilité de choisir l'option client qui leur convient le mieux.

L'ajout de fonctionnalités Web au client léger était un projet de grande envergure avec un changement complet dans l'architecture client-serveur. La création d'un client Web est un projet complètement nouveau, qui part de zéro.

Formulation du problème

Donc, les exigences du projet : le client web doit faire la même chose que le client léger, à savoir :
  1. Afficher l'interface utilisateur
  2. Exécuter le code client écrit en langage 1C
L'interface utilisateur de 1C est décrite dans un éditeur visuel, mais de manière déclarative, sans disposition des éléments pixel par pixel ; Environ trois douzaines de types d'éléments d'interface sont utilisés : boutons, champs de saisie (texte, numérique, date/heure), listes, tableaux, graphiques, etc.

Le code client en langage 1C peut contenir des appels de serveur, l'utilisation de ressources locales (fichiers, etc.), l'impression et bien plus encore.

Le client léger (lorsqu'il travaille via le Web) et le client Web utilisent le même ensemble de services Web pour communiquer avec le serveur d'applications 1C. Les implémentations client, bien sûr, sont différentes : le client léger est écrit en C++, le client Web est écrit en JavaScript.

Un peu d'histoire

Le projet client web a démarré en 2006, avec une équipe de (en moyenne) 5 personnes. A certaines étapes du projet, des développeurs ont été impliqués pour mettre en œuvre des fonctionnalités spécifiques (tableur, diagrammes, etc.) ; en règle générale, ce sont les mêmes développeurs qui ont réalisé cette fonctionnalité dans le client léger. Ceux. les développeurs ont réécrit en JavaScript les composants qu'ils avaient précédemment créés en C++.

Dès le début, nous avons rejeté l'idée de toute conversion automatique (même partielle) du code client léger C++ en client web JavaScript en raison des fortes différences conceptuelles entre les deux langages ; le client Web a été écrit en JavaScript à partir de zéro.

Dans les premières itérations du projet, le client Web a converti le code client du langage 1C intégré directement en JavaScript. Le client léger agit différemment - le code du langage 1C intégré est compilé en bytecode, puis ce bytecode est interprété sur le client. Par la suite, le client web a commencé à faire de même : d'une part, il a apporté un gain de performances, et d'autre part, il a permis d'unifier l'architecture des clients légers et web.

La première version de la plateforme 1C:Enterprise avec prise en charge du client Web a été publiée en 2009. Le client Web à cette époque prenait en charge 2 navigateurs : Internet Explorer et Firefox. Les plans originaux incluaient la prise en charge d'Opera, mais en raison de problèmes insurmontables à l'époque avec les gestionnaires de fermeture d'application dans Opera (il n'était pas possible de suivre avec une certitude à 100 % la fermeture de l'application et d'effectuer à ce moment-là la procédure de déconnexion de le serveur d'applications 1C) de ces plans ont dû être abandonnés.

Structure du projet

Au total, la plateforme 1C:Enterprise compte 4 projets écrits en JavaScript :
  1. Les WebTools sont des bibliothèques courantes utilisées par d'autres projets (nous incluons également ici la bibliothèque Google Closure).
  2. Contrôle des documents formatés
  3. Contrôle du planificateur (implémenté en JavaScript dans le client léger et le client Web)
  4. Client Web
La structure de chaque projet ressemble à la structure des projets Java (ou des projets .NET - selon celui qui est le plus proche) ; Nous avons des espaces de noms et chaque espace de noms se trouve dans un dossier séparé. À l’intérieur du dossier se trouvent des fichiers et des classes d’espace de noms. Il y a environ 1 000 fichiers dans le projet client Web.

Structurellement, le client Web est largement divisé en sous-systèmes suivants :

  • Interface d'application client gérée
    • Interface générale de l'application (menus système, panneaux)
    • Interface de formulaires gérés, comprenant entre autres une trentaine de champs (boutons, différents types de champs de saisie - texte, numérique, date/heure, etc., tableaux, listes, graphiques, etc.)
  • Modèle objet disponible pour les développeurs sur le client (plus de 400 types au total : modèle objet d'interface gérée, paramètres de disposition des données, style conditionnel, etc.)
  • Interprète du langage 1C intégré
  • Extensions de navigateur (utilisées pour les fonctionnalités non prises en charge en JavaScript)
    • Travailler avec la cryptographie
    • Travailler avec des fichiers
    • Technologie des composants externes, permettant leur utilisation aussi bien dans les clients légers que web

Fonctionnalités de développement

Implémenter tout ce qui précède en JavaScript n’est pas facile. Le client Web 1C est peut-être l'une des plus grandes applications côté client écrites en JavaScript - environ 450 000 lignes. Nous utilisons activement une approche orientée objet dans le code du client Web, ce qui simplifie le travail avec un projet d'une telle envergure.

Pour minimiser la taille du code client, nous avons d'abord utilisé notre propre obfuscateur, et à partir de la version 8.3.6 de la plateforme (octobre 2014), nous avons commencé à utiliser Google Closure Compiler. L'effet de l'utilisation en chiffres – la taille du framework client Web après obscurcissement :

  • Propre obfuscateur – 1556 Ko
  • Compilateur de fermeture Google – 1073 Ko
L'utilisation de Google Closure Compiler nous a aidé à améliorer les performances du client Web de 30 % par rapport à notre propre obfuscateur. De plus, la quantité de mémoire consommée par l'application a diminué de 15 à 25 % (selon le navigateur).

Google Closure Compiler fonctionne très bien avec le code orienté objet, son efficacité pour le client Web est donc aussi élevée que possible. Closure Compiler fait quelques bonnes choses pour nous :

  • Vérification de type statique au stade de la construction du projet (garantit que nous couvrons le code avec des annotations JSDoc). Le résultat est un typage statique, très proche en niveau du typage en C++. Cela permet de détecter un pourcentage assez important d'erreurs au stade de la compilation du projet.
  • Réduire la taille du code grâce à l'obscurcissement
  • Un certain nombre d'optimisations du code exécuté, par exemple, telles que :
    • substitutions de fonctions en ligne. L'appel d'une fonction en JavaScript est une opération assez coûteuse, et les substitutions en ligne de petites méthodes fréquemment utilisées accélèrent considérablement le code.
    • Compter les constantes au moment de la compilation. Si une expression dépend d'une constante, la valeur réelle de la constante y sera substituée
Nous utilisons WebStorm comme environnement de développement de client Web.

Pour analyser le code, nous utilisons SonarQube, où nous intégrons des analyseurs de code statiques. À l'aide d'analyseurs, nous surveillons la dégradation de la qualité du code source JavaScript et essayons de l'empêcher.

Quels problèmes avons-nous résolus/sommes-nous résolus ?

Lors de la mise en œuvre du projet, nous avons rencontré un certain nombre de problèmes intéressants que nous avons dû résoudre.

Échanger des données avec le serveur et entre Windows

Il existe des situations dans lesquelles l'obscurcissement du code source peut interférer avec le fonctionnement du système. Le code externe au code exécutable du client Web, en raison de l'obscurcissement, peut avoir des noms de fonctions et de paramètres qui diffèrent de ceux attendus par notre code exécutable. Le code externe pour nous est :
  • Code provenant du serveur sous forme de structures de données
  • Code pour une autre fenêtre d'application
Pour éviter toute obscurcissement lors de l'interaction avec le serveur, nous utilisons la balise @expose :

/** * @constructor * @extends (Base.SrvObject) */ Srv.Core.GenericException = function () ( /** * @type (string) * @expose */ this.descr; /** * @type (Srv.Core.GenericException) * @expose */ this.inner; /** * @type (string) * @expose */ this.clsid; /** * @type (boolean) * @expose */ this. codé ; )
Et pour éviter toute confusion lors de l'interaction avec d'autres fenêtres, nous utilisons des interfaces dites exportées (interfaces dans lesquelles toutes les méthodes sont exportées).

/** * Interface de contrôle DropDownWindow exportée * * @interface * @struct */ WebUI.IDropDownWindowExp = function()() /** * Déplace la sélection vers l'avant ou vers l'arrière de 1 * * @param (boolean) isForward * @param ( boolean ) checkOnly * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly)() /** * Déplace la sélection au début ou à la fin * * @param (boolean) isFirst * @param (booléen) checkOnly * @return (booléen) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly)() /** * @return (booléen) * @expose */ WebUI. IDropDownWindowExp.prototype .selectValue = fonction ()()

Nous utilisions Virtual DOM avant qu'il ne devienne courant)

Comme tous les développeurs travaillant avec des interfaces utilisateur Web complexes, nous avons rapidement réalisé que le DOM était mal adapté au travail avec des interfaces utilisateur dynamiques. Presque immédiatement, un analogue de Virtual DOM a été implémenté pour optimiser le travail avec l'interface utilisateur. Pendant le traitement des événements, toutes les modifications du DOM sont stockées en mémoire et, seulement lorsque toutes les opérations sont terminées, les modifications accumulées sont appliquées à l'arborescence DOM.

Optimisation du client Web

Pour que notre client Web fonctionne plus rapidement, nous essayons d'utiliser au maximum les capacités standard du navigateur (CSS, etc.). Ainsi, le panneau de commande du formulaire (situé sur presque tous les formulaires de l'application) est rendu exclusivement à l'aide d'outils de navigateur, en utilisant une mise en page dynamique basée sur CSS.

Essai

Pour les tests fonctionnels et de performances, nous utilisons un outil propriétaire (écrit en Java et C++) ainsi qu'une suite de tests construits sur Selenium.

Notre outil est universel - il vous permet de tester presque tous les programmes fenêtrés et convient donc pour tester à la fois un client léger et un client Web. L'outil enregistre les actions de l'utilisateur qui a lancé la solution applicative 1C dans un fichier script. Dans le même temps, des images de la zone de travail de l'écran - normes - sont enregistrées. Lors de la surveillance des nouvelles versions du client Web, les scripts sont exécutés sans la participation de l'utilisateur. Dans les cas où la capture d'écran ne correspond à aucune étape à celle de référence, le test est considéré comme ayant échoué, après quoi un spécialiste de la qualité mène une enquête pour déterminer s'il s'agit d'une erreur ou d'un changement planifié dans le comportement du système. En cas de comportement planifié, les normes sont automatiquement remplacées par de nouvelles.

L'outil mesure également les performances des applications avec une précision allant jusqu'à 25 millisecondes. Dans certains cas, nous bouclons des parties du script (par exemple en répétant plusieurs fois la saisie de la commande) pour analyser la dégradation du temps d'exécution au fil du temps. Les résultats de toutes les mesures sont enregistrés dans un journal pour analyse.


Notre outil de test et notre application en test

Notre outil et Selenium se complètent ; par exemple, si un bouton sur l'un des écrans a changé d'emplacement, Selenium peut ne pas le suivre, mais notre outil le remarquera, car effectue une comparaison pixel par pixel de la capture d'écran avec la norme. L'outil est également capable de suivre les problèmes de traitement des entrées du clavier ou de la souris, puisque c'est exactement ce qu'il reproduit.

Les tests sur les deux outils (le nôtre et Selenium) exécutent des scénarios de travail typiques de nos solutions applicatives. Les tests sont automatiquement lancés après la construction quotidienne de la plateforme 1C:Enterprise. Si les scripts sont plus lents (par rapport à la version précédente), nous étudions et résolvons la cause du ralentissement. Notre critère est simple : la nouvelle version ne doit pas fonctionner plus lentement que la précédente.

Les développeurs utilisent différents outils pour enquêter sur les incidents de ralentissement ; principalement utilisé Dynatrace AJAX Edition produit par DynaTrace. Les journaux d'exécution de l'opération problématique sur les builds précédentes et nouvelles sont enregistrés, puis les journaux sont analysés. Dans le même temps, le temps d'exécution d'opérations uniques (en millisecondes) peut ne pas être un facteur décisif - des processus de service tels que le garbage collection sont périodiquement lancés dans le navigateur, ils peuvent chevaucher le temps d'exécution des fonctions et déformer l'image. Des paramètres plus pertinents dans ce cas seraient le nombre d'instructions JavaScript exécutées, le nombre d'opérations atomiques sur le DOM, etc. Si le nombre d'instructions/opérations dans un même script a augmenté dans une nouvelle version, cela signifie presque toujours une baisse de performances qui doit être corrigée.

En outre, l'une des raisons de la baisse des performances peut être que Google Closure Compiler, pour une raison quelconque, n'a pas pu effectuer la substitution en ligne de la fonction (par exemple, parce que la fonction est récursive ou virtuelle). Dans ce cas, nous essayons de corriger la situation en réécrivant le code source.

Extensions de navigateur

Lorsqu'une solution applicative nécessite des fonctionnalités qui ne sont pas disponibles en JavaScript, nous utilisons des extensions de navigateur :
  • pour travailler avec des fichiers
  • pour travailler avec la cryptographie
  • travailler avec des composants externes
Nos extensions se composent de deux parties. La première partie est ce qu'on appelle une extension de navigateur (généralement des extensions pour Chrome et Firefox écrites en JavaScript), qui interagissent avec la deuxième partie - une extension binaire qui implémente les fonctionnalités dont nous avons besoin. Il convient de mentionner que nous écrivons 3 versions d'extensions binaires - pour Windows, Linux et MacOS. L'extension binaire est fournie dans le cadre de la plateforme 1C:Enterprise et se trouve sur le serveur d'applications 1C. La première fois qu'il est appelé depuis un client Web, il est téléchargé sur l'ordinateur client et installé dans le navigateur.

Lorsqu'elles sont exécutées dans Safari, nos extensions utilisent NPAPI ; lorsqu'elles sont exécutées dans Internet Explorer, elles utilisent la technologie ActiveX. Microsoft Edge ne prend pas encore en charge les extensions, le client Web qu'il contient fonctionne donc avec des restrictions.

La poursuite du développement

L'une des tâches de l'équipe de développement du client Web est le développement ultérieur des fonctionnalités. La fonctionnalité du client Web doit être identique à celle du client léger ; toutes les nouvelles fonctionnalités sont implémentées simultanément dans les clients légers et Web.

D'autres tâches incluent le développement de l'architecture, la refactorisation, l'amélioration des performances et de la fiabilité. Par exemple, l’une des orientations est la poursuite de l’évolution vers un modèle de travail asynchrone. Certaines fonctionnalités du client Web sont actuellement construites sur un modèle d'interaction synchrone avec le serveur. Le modèle asynchrone devient désormais plus pertinent dans les navigateurs (et pas seulement dans les navigateurs), ce qui nous oblige à modifier le client Web en remplaçant les appels synchrones par des appels asynchrones (et en refactorisant le code en conséquence). La transition progressive vers un modèle asynchrone s'explique par la nécessité d'accompagner les solutions publiées et leur adaptation progressive.

Balises : Ajouter des balises

Client Web- c'est l'une des applications clientes du système 1C:Enterprise 8. Contrairement aux applications clientes « habituelles » (client lourd et client léger), elle n'a pas besoin d'être préinstallée sur l'ordinateur de l'utilisateur. Le client Web ne possède pas de fichier exécutable. Vous ne trouverez le client web ni dans le menu ni parmi les fichiers exécutables. C'est pour cela qu'il s'agit d'un client web, car il n'a pas besoin d'avoir de fichiers sur l'ordinateur de l'utilisateur pour commencer à travailler.

Le client Web, contrairement aux clients lourds et légers, n'est pas exécuté dans le système d'exploitation de l'ordinateur, mais dans l'environnement du navigateur Internet (Windows Internet Explorer, Mozilla Firefox, Google Chrome ou Safari). Par conséquent, il suffit à tout utilisateur de lancer son navigateur, de saisir l'adresse веб-сервера, où la base d'informations est publiée, et le client Web lui-même « arrivera » sur son ordinateur et commencera à s'exécuter.

Le client Web utilise les technologies DHTML et HTTPRequest. Lorsque le client Web est en cours d'exécution, les modules clients développés dans la configuration sont automatiquement compilés à partir du langage 1C:Enterprise 8 intégré et sont directement exécutés côté client Web.

Ainsi, quelle que soit l'application client (client lourd, léger, web), tout le développement de la solution applicative est entièrement réalisé dans le configurateur 1C : Entreprise, le code serveur et client est écrit dans le langage 1C : Entreprise intégré.

Travailler dans un navigateur Internet sans installer le système sur l'ordinateur de l'utilisateur

Pour travailler en mode client Web, vous avez besoin d'un serveur Web configuré pour fonctionner avec 1C:Enterprise 8. Le navigateur client interagit avec веб-сервером via le protocole HTTP ou HTTPS. Le serveur Web, à son tour, interagit avec 1C:Enterprise 8 en mode fichier ou client-serveur.

Apache ou IIS est utilisé comme serveur Web.

Travailler sous différents systèmes d'exploitation

Tous les principaux composants de la plate-forme sont capables de fonctionner à la fois sous le système d'exploitation Windows et sous le système d'exploitation Linux. De plus, le client Web peut également fonctionner sur des ordinateurs exécutant Mac OS X.

Étant donné que les processus interagissent entre eux via le protocole TCP/IP, le système peut contenir des composants avec des systèmes d'exploitation différents. En savoir plus...

Travailler sur iPad

Les navigateurs fonctionnant sur les appareils mobiles présentent un certain nombre de limitations et d'exigences spécifiques. Par conséquent, spécifiquement pour un travail confortable sur iPad, des améliorations ont été apportées au client Web, en tenant compte des fonctionnalités du navigateur mobile Safari et des spécificités de l'iPad lui-même.

En conséquence, le client Web exécuté sur l'iPad prend en charge la saisie tactile, les listes n'ont pas de barres de défilement latérales et peuvent être défilées avec un doigt, pour faciliter l'utilisation, la hauteur des lignes dans les tableaux et les listes déroulantes a été augmentée, la la largeur des boutons dans le champ de saisie a été augmentée et la taille du calendrier a été augmentée.

Il était nécessaire de se connecter à la base de données 1C 8.2 via Internet à l'aide d'un navigateur. Je n'avais jamais implémenté quelque chose de tel auparavant, alors j'ai décidé d'y jeter un œil et de le faire. La version 8.2 de la plateforme peut fonctionner en mode client léger, en mode client lourd (une partie client est nécessaire) et en tant qu'application Web, c'est-à-dire dans presque tous les navigateurs modernes. J'ai décidé de commencer par configurer IIS et de préparer les fichiers nécessaires. Je sais que 1C peut également être configuré avec Apache. De nombreux articles ont été écrits à ce sujet.

L'ensemble du processus de préparation du bundle 1C - IIS s'est déroulé en 2 étapes :
1. Installation et configuration d'IIS
2. Installation de 1C 8.2 et publication de la base de données sur un serveur Web

Après l'installation d'IIS, tous les paramètres sont restés à leurs paramètres par défaut. IIS a été installé sur un serveur Win 2003 existant. Le répertoire racine se trouvait dans le répertoire C:\Inetpub\wwwroot\

Voici à quoi ressemblaient ma console d'application et mon gestionnaire de services IIS, puis le dossier 1cv8 est créé, même si vous avez le droit de l'appeler comme vous le souhaitez.


Aucun paramètre spécial n'est requis pour ce dossier.


Voici à quoi ressemblent les paramètres par défaut du site Web

Contenu du fichier default.vrd :

XHTML


SERVER_NAME:PORT - le nom du serveur sur lequel la base de données 1C est installée, j'ai les plates-formes 8.1 et 8.2 installées simultanément et le port 1641 est utilisé pour 8.2
BASE_NAME - nom de la base de données sur le serveur 1C 8.2

Ce fichier, comme je l'ai appris plus tard, est automatiquement créé après la publication de la base de données sur le serveur, il n'est donc pas nécessaire de le créer manuellement :)

Ensuite, vous devez installer la plate-forme 1C sur le même ordinateur sur lequel IIS est installé et, lors de l'installation, cocher la case d'activation Web. Après avoir installé la plate-forme, vous devriez avoir un fichier wsisapi.dll dans le répertoire du programme approprié, responsable de l'extension des services Web iis.


Nous connectons ce fichier dans la console de gestion IIS dans les extensions de services Web<


Nous publions la base de données.


Publication de la base de données.
Pour lancer 1C Enterprise via un navigateur, vous devez vous rendre sur Espace personnel, Au chapitre " Bases d'informations"Cliquez sur le nom de la base de données 1C à laquelle vous souhaitez ouvrir l'accès.

Dans la fenêtre d'informations de la base de données, cliquez sur le bouton " Publier la base de données"



Une fois le processus de publication terminé, un lien apparaîtra vous permettant d'accéder à la base de données.


Configuration et utilisation du navigateur Web Google Chrome

Pour ce faire, ouvrez le menu Outils, sélectionner un article Possibilités, sur le marque-page Étendu (sous le capot) cliquez sur le bouton Paramètres de contenu et effectuez les réglages :


  • sur le marque-page Biscuits sélectionner Autoriser la définition des données locales (recommandé) ou configurer des exceptions ;

  • sur le marque-page Javascript sélectionner Autoriser tous les sites à exécuter JavaScript (recommandé) ou configurer des exceptions ;
  • Autoriser les pop-ups :
    sur le marque-page Fenêtres contextuelles sélectionner Autoriser tous les sites à afficher des fenêtres contextuelles ou configurer des exceptions.
  • Ouvrir le menu Outils, Sélectionnez les options;
  • Sur le marque-page Étendu (sous le capot) Au chapitre Téléchargements coche la case Demandez où enregistrer chaque fichier avant le téléchargement.

Configuration et utilisation du navigateur Web Microsoft Internet Explorer

Pour désactiver le blocage des pop-ups, vous devez cliquer sur le bouton " Service" - "options Internet".

Dans la fenêtre qui s'ouvre, rendez-vous dans l'onglet "Confidentialité" et décochez la case " Activer le bloqueur de pop-up".

Après cela, vous devez rouvrir la base de données 1C dans le navigateur.
Si les étapes ci-dessus ne vous aident pas, vous pouvez effectuer les réglages selon les instructions :

Caractéristiques d'utilisation

Pour travailler avec le client Web dans le système d'exploitation Windows XP SP 2, une bibliothèque système est requise jscript.dll variantes 5.6.0.8834 ou plus.

La bibliothèque est dans le catalogue système32 système opérateur. Si une version antérieure de la bibliothèque est installée sur votre ordinateur, les performances du client Web peuvent être considérablement plus lentes. Pour mettre à jour la version, vous devez télécharger le package de mise à jour situé à l'adresse http://support.microsoft.com/kb/942840/en-us.

Paramètres d'utilisation du navigateur Web

Pour utiliser un navigateur Web, vous devez configurer vos propriétés Internet. Pour ça

  • au menu Outils sélectionner un article options Internet et effectuez les réglages :
  • Autoriser l'exécution de scripts JavaScript :
    • sur l'onglet Sécurité pour la zone Internet, cliquez sur le bouton Autre (niveau personnalisé);
    • Au chapitre Script pour paramètre Scripts actifs installer Activer et appuyez sur le bouton "D'ACCORD".
  • Autoriser les pop-ups :
    • allez dans l'onglet Confidentialité;
    • Au chapitre Bloqueur pop-up décochez la case Bloquer les pop ups.
  • Autoriser l'utilisation de cookies :
    • sur l'onglet Confidentialité utilisez le curseur pour sélectionner le niveau d'utilisation des cookies - pas plus Moyen-élevé.

Si vous envisagez de travailler avec un lecteur de codes-barres, une balance électronique ou d'autres composants externes, vous devez configurer le navigateur Web comme suit :

  • sur l'onglet Sécurité cliquez sur le bouton Autre (niveau personnalisé);
  • dans la fenêtre qui s'ouvre, vous devez installer Activer pour les paramètres suivants :
    • Invite automatique pour les contrôles ActiveX;
    • Télécharger les contrôles ActiveX signés;
    • Travailler avec des objets et des plug-ins ActiveX (Exécuter des contrôles et des plug-ins ActiveX);
    • Travailler avec des objets marqués comme sûrs (contrôles ActiveX de script marqués comme sûrs pour les scripts).

Chaque fois que vous ouvrez des fenêtres auxiliaires, la disposition du clavier est sélectionnée dans les paramètres du système d'exploitation. Si elle ne correspond pas à la langue de saisie des données, afin d'éviter de changer de langue, il est recommandé de spécifier la langue de saisie souhaitée dans les paramètres.

Pour définir la langue de saisie par défaut, procédez comme suit :

  • ouvrir les paramètres du système d'exploitation "Options régionales et linguistiques";
  • sur le marque-page "Langues" Au chapitre "Services de texte et langues de saisie" cliquez sur le bouton "Détails...";
  • dans la fenêtre qui s'ouvre sur l'onglet "Paramètres" Au chapitre "Langue de saisie par défaut" sélectionnez la langue souhaitée ;
  • cliquez sur le bouton "D'ACCORD".

Lorsque vous travaillez dans Internet Explorer 8, dans certaines situations, lors du déplacement vers une fenêtre déjà ouverte à partir d'une autre fenêtre, une boîte de dialogue apparaîtra avec le texte « Cliquez sur OK pour accéder à la fenêtre » et un bouton OK. Après avoir appuyé sur le bouton, vous serez redirigé vers la fenêtre.

Fonctionnalités d'utilisation d'outils avancés pour travailler avec des fichiers

La mise en œuvre pour Internet Explorer nécessite l'installation d'un composant ActiveX spécial "1C:Enterprise 8.2. Extension pour travailler avec des fichiers pour Internet Explorer (x86)", ou sa version 64 bits pour Internet Explorer 64 bits. Le composant est inclus dans la plateforme, mais son installation doit être prévue dans la configuration (un appel à la méthode InstallFileWorkingExtension doit être implémenté).

Pour utiliser le composant, le navigateur doit disposer des droits d'installation et d'utilisation des composants ActiveX signés pour la zone dans laquelle se trouve le site Web.

Configuration et utilisation du navigateur Web Mozilla Firefox

Lorsque vous lancez 1C pour la première fois dans le navigateur, le message suivant peut apparaître vous demandant d'installer des extensions de navigateur ; autorisez Firefox à installer l'extension requise.

Une fois le processus d'installation terminé, redémarrez le navigateur Firefox.

Après avoir terminé ces étapes, la base de données 1C devrait démarrer avec succès. Sinon, utilisez les instructions suivantes :

Caractéristiques d'utilisation

Toutes les opérations avec le système de fichiers (réception d'un fichier du serveur, transfert d'un fichier vers le serveur, suppression d'un fichier, etc.) sont effectuées de manière strictement interactive. Si l'action ne nécessite pas d'interaction de l'utilisateur (par exemple, la sélection d'un fichier), une boîte de dialogue d'avertissement s'affiche, demandant à l'utilisateur de confirmer.

Paramètres d'utilisation du navigateur Web

Pour vous connecter aux infobases 1C:Enterprise 8 à l'aide de Mozilla Firefox, vous devez définir les paramètres suivants :

  • Ouvrez votre navigateur, dans le menu Outils sélectionner un article Paramètres;
  • Contenu
    • Décochez ;
    • Cochez la case Activer JavaScript.
  • Aller à la rubrique Confidentialité définissez les paramètres suivants :
    • Cochez la case Accepter les cookies des sites;
    • Pour les paramètres détaillés d'acceptation ou de refus des cookies, cliquez sur le bouton Des exceptions et suivez les explications dans la boîte de dialogue de configuration.

La modification d'autres paramètres pouvant être nécessaires pour travailler avec le client Web 1C:Enterprise peut être effectuée à l'aide de la commande "Service - Paramètres du navigateur Web". La fenêtre effectue des réglages qui peuvent également être effectués dans les paramètres du navigateur Web lui-même dans la boîte de dialogue de demande de privilège.

La fenêtre vous permet de configurer les paramètres suivants du navigateur (les paramètres similaires du navigateur Web sont indiqués entre parenthèses) :

  • Autoriser le travail avec le presse-papiers, l'extension de fichier, les composants externes(signed.applets.codebase_principal_support) - pour travailler avec le presse-papiers, les composants externes et le travail avancé avec les fichiers (vrai) ;
  • Autoriser l'utilisation de caractères non latins dans les paramètres de chaîne de démarrage(network.standard-url.encode-query-utf8) - pour utiliser des caractères non latins dans la barre d'adresse (true) ;
  • Autoriser l'utilisation du clavier pour basculer entre les fenêtres d'application(dom.popup_allowed_events) - pour permettre la navigation dans les fenêtres de l'application à l'aide du clavier (ajoute l'événement keydown à la valeur du paramètre) ;
  • Utiliser l'authentification du système d'exploitation(network.automatic-ntlm-auth.trusted-uris) - si défini, l'authentification du système d'exploitation sera effectuée.

Ces paramètres peuvent également être configurés manuellement. Pour ce faire, vous devez saisir dans la barre d'adresse de votre navigateur Web à propos de : configuration, puis dans la ligne de filtre, saisissez n'importe quel mot du nom du paramètre (par exemple, principal) et modifiez sa valeur dans la liste.

  • Ouvrez votre navigateur, dans le menu Outils sélectionner un article Paramètres;
  • Dans la fenêtre qui s'ouvre, rendez-vous dans la rubrique Basique;
  • Cochez la case Toujours demander d'enregistrer le fichier.

Fonctionnalités d'utilisation d'outils avancés pour travailler avec des fichiers

Toutes les opérations avec le système de fichiers (réception d'un fichier du serveur, transfert d'un fichier vers le serveur, suppression d'un fichier, etc.) sont effectuées de manière strictement interactive. Si l'action ne nécessite pas d'interaction de l'utilisateur (par exemple, la sélection d'un fichier), une boîte de dialogue d'avertissement s'affiche, demandant à l'utilisateur de confirmer.

L'extension pour travailler avec des fichiers nécessite d'accorder le privilège UniverselXPConnect. Le navigateur Web Mozilla FireFox effectue la demande de privilège de manière interactive, mais l'utilisateur peut se souvenir de la décision pour un site Web donné.

Configuration et utilisation du navigateur Web Apple Safari

Pour utiliser un navigateur Web, vous devez configurer vos propriétés Internet.

Pour ce faire, ouvrez le menu et sélectionnez Préférences et effectuez les réglages :

  • Autoriser l'exécution de scripts JavaScript :
    sur le marque-page Sécurité sélectionner Activer JavaScript
  • Autoriser l'utilisation de cookies :
    sur le marque-page Sécurité en groupe Accepter les cookies sélectionner Uniquement à partir des sites que je visite;
  • Autoriser les pop-ups :
    sur le marque-page Sécurité décochez la case Bloquer les fenêtres pop-up.
  • au menu Paramètres Safari sélectionner un article Préférences;
  • Sur le marque-page Général coche la case Toujours demander avant de télécharger.

Cet article vous a t'il aidé? Non Oui (Voix : 19, note : 0,95)